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

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

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

这里有一个示例文件: http://pastebin.com/5EP63iRa

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

所以问题是这样的:

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

这就是我在 Xcode 的.gitignore 文件中的内容。

#Xcode
*.xcuserstate
project.xcworkspace/
xcuserdata/

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

Xccheckout 文件在这里,因此默认情况下不会在我的系统上跟踪它。

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

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

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

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

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

*.xccheckout

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

编辑: 此文件用于管理 Xcode 对项目中可能存在的许多 VCS 系统的了解,请参阅 Chris Hanson答案。99% 以上的工程项目。Xccheckout 文件是配置过度。

您将 应该签入 Xcode 5 .xccheckout文件; 一般来说,应该提交 xcshareddata中的文件。

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

是的,应该将 Project.xccheckout文件提交到存储库中。Xcode 使用这个文件告诉打开工作区的其他人工作区和 工作副本的位置相对于工作区使用的源代码管理存储库的整个列表,无论这些存储库是 Git、 SVN 还是两者兼而有之。

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

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

您可以在 WWDC 2013年会议视频 了解 Xcode 的源头管制中找到更多关于这方面的信息; 相关部分大约从15分钟开始。

看情况。该文件包含对您正在使用的远程存储库的引用。如果您使用的是集中式 VCS,比如 Perforce 或 Subversion,那么每个人的远程存储库都是相同的,因此您可以并且应该签入该文件。

如果您正在使用分布式 VCS,比如 Mercurial 或 git,但是将它当作 CVCS 使用(换句话说,每个人都从共享存储库直接克隆到他们机器上的个人工作区) ,那么您仍然可能希望签入它。

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