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

苹果在Xcode 5中引入了一个新的与项目相关的文件types:“xccheckout”。

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

示例文件在这里: http : //pastebin.com/5EP63iRa

我想这种types的文件应该在VCS下被忽略,但我不确定。

所以这里是问题:

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

应该检查一个Xcode 5 .xccheckout文件; 一般来说,应该提交xcshareddata文件。

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

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

另一方面:检查这个文件可能不会造成合并困难或其他问题。

如果你想忽略这个文件(我推荐),你应该添加这一行到你的项目的.gitignore

 *.xccheckout 

Abizern的解决scheme不适用于工作区内的项目。 因为在使用工作空间时, *.xccheckout文件的path将为: <workspace-name>.xcworkspace/xcshareddata/<workspace-name>.xcchekout 。 它实际上忽略了比你想要的更多。

编辑:此文件存在用于pipe理Xcode对项目中可能的许多VCS系统的知识,请参阅Chris Hanson的答案。 对于> 99%的项目.xccheckout文件是configuration矫枉过正。

这取决于。 该文件包含对正在使用的远程存储库的引用。 如果你使用的是一个集中的VCS,比如Perforce或者Subversion,那么每个人的远程仓库都是一样的,所以你可以并且应该检查这个文件。

如果您使用的是分布式VCS(如Mercurial或git),但将其用作CVCS(换句话说,每个人从共享存储库直接克隆到其计算机上的个人工作区),那么您仍然可能需要检查它在。

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

是的, Project.xccheckout文件应该被提交到你的仓库。 Xcode使用这个文件告诉其他谁打开工作区的工作空间使用的源代码控制仓库的整个列表和工作副本相对于工作区的位置,无论这些仓库是Git,SVN,或两者兼而有之。

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

正如克里斯·汉森(Chris Hanson)所说的那样,对于一个单一的存储库,一个项目的工作空间来说,这可能并不重要,但对于更复杂的事务来说,这确实非常方便。

您可以在WWDC 2013会话video中了解更多关于此的信息了解Xcode中的源代码pipe理 ; 相关部分在15分钟左右开始。

这是我在我的.gitignore为Xcode。

 #Xcode *.xcuserstate project.xcworkspace/ xcuserdata/ 

它保留了任何与项目在存储库中查找我的方式相关的状态。

xccheckout文件在这里,所以默认情况下不在我的系统上跟踪。

Xcode已经变得更好,分离出需要共享的东西以及需要保存在本地的东西。 例如; 这些行将忽略默认的构buildscheme,这很好,因为您可以将特定的构buildscheme标记为共享,并将其放置在不被忽略的目录中。

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