XCS中的* .xccheckout文件应该在VCS下被忽略吗?

时间:2013-08-20 16:36:39

标签: xcode git version-control xcode5

Apple在Xcode 5中引入了一个与项目相关的新文件类型:“xccheckout”。

此文件位于“.xcodeproj / project.xcworkspace / xcshareddata /”目录中,似乎与项目的版本控制系统有关。

示例文件位于:http://pastebin.com/5EP63iRa

我认为在VCS下应该忽略这种类型的文件,但我不确定。

以下是问题:

  1. 应该忽略“xccheckout”吗?
  2. 它的目的是什么?

5 个答案:

答案 0 :(得分:109)

应该签入Xcode 5 .xccheckout文件;通常,xcshareddata中的文件应该被提交。

.xccheckout文件包含有关工作区中使用的存储库的元数据。对于单个存储库中的单个项目没有太大区别。但是,如果您正在使用具有来自不同存储库的多个项目的工作空间,则工作空间中存在.xccheckout文件允许Xcode知道构成工作空间的所有组件是什么以及从何处获取它们。

答案 1 :(得分:63)

*.xccheckout文件包含VCS元数据,因此不应检入VCS。

另一方面:签入此文件可能不会产生合并困难或其他问题。

如果您想忽略此文件(我建议),您应该将此行添加到项目的.gitignore

*.xccheckout

Abizernsolution不适用于工作区内的项目。因为,当您使用工作区时,*.xccheckout文件的路径将为:<workspace-name>.xcworkspace/xcshareddata/<workspace-name>.xcchekout。它实际上忽略了你想要的更多。

编辑: 此文件用于管理Xcode对项目中可能的许多VCS系统的了解,请参阅Chris Hanson answer。对于&gt; 99%的项目.xccheckout文件配置过度。

答案 2 :(得分:38)

这取决于。该文件包含对您正在使用的远程存储库的引用。如果您使用的是集中式VCS,例如Perforce或Subversion,那么每个人的远程存储库都是相同的,因此您可以并且应该检查该文件。

如果您使用的是分布式VCS,例如Mercurial或git,但使用它就好像它是CVCS(换句话说,每个人从共享存储库直接克隆到他们机器上的个人工作空间),那么您仍然可能需要检查它。

但是,如果您使用DVCS并且每个人都拥有自己的远程克隆,例如在其标准使用模式中使用GitHub,则您不要检查此文件。如果您这样做,那么您的Pull请求将要求您的存储库设置将被复制到其他人的xccheckout文件中,但您的存储库设置将与其他所有人不同,因为您使用的是不同的远程存储库。

答案 3 :(得分:20)

是的,Project.xccheckout文件应该提交到您的存储库。 Xcode使用此文件告诉打开工作区的其他人工作区使用的源控件存储库的完整列表以及工作副本的位置相对于工作空间,无论这些存储库是Git,SVN还是两者。

当您打开工作区时,Xcode使用Project.xccheckout文件通知用户有其他存储库构成工作区的一部分,并询问应该检出哪些存储库。在检出其他存储库时,Xcode将工作副本放在与生成Project.xccheckout文件时相同的工作空间相关文件夹结构中。

正如Chris Hanson所说,对于单一存储库,单项目工作区来说,这可能并不重要,但对于更复杂的事务,它确实非常方便。

您可以在WWDC 2013会话视频中找到更多相关信息Understanding Source Control in Xcode;相关部分大约15分钟开始。

答案 4 :(得分:3)

这就是我在我的.gitignore for Xcode中所拥有的。

#Xcode
*.xcuserstate
project.xcworkspace/
xcuserdata/

它保存与项目从存储库中查找的方式的本地状态相关的任何内容。

xccheckout文件位于此处,因此默认情况下不会在我的系统上跟踪它。

Xcode已经变得更好,并分离出需要共享的内容以及需要在本地保存的内容。例如;这些行将忽略默认的构建方案,这很好,因为您可以将特定的构建方案标记为共享,并将它们放在一个不被忽略的目录中。

断点被忽略,但您可以将特定断点标记为跨项目共享,并且它们也放在不被忽略的目录中。