有没有办法让 XCode 很好地处理共享文件夹并允许多人同时在 iPhone 应用程序上工作?或者我们是否需要切换到更像 SubEthaEdit 或其他一些实时协作工具的东西?
4 回答
众所周知,Xcode 对文件系统的处理非常糟糕。管理项目时,您有两个选择,将文件夹添加为组或文件夹引用。
如果你添加一个组,那么文件夹会被镜像到Xcode中,但是组不会与文件系统同步,即你可以在组内移动东西,删除组,不会碰FS,反向将使 Xcode 丢失文件。
第二个选项,添加文件夹引用听起来很不错,但完全被窃听了。文件夹引用可能无法正确更新,文件夹中未检测到更改(如果您将图像文件夹引用添加到资源并更新内容,您的资源将不会在下一次构建时更新,您必须清理和重建)。
这就是为什么您不应该使用 Xcode(我们在这里使用 vim + SCons 并且对此非常满意)或者您需要使用 SCM(SCM 也可以与其他工具耦合,无论如何您都应该使用 SCM)。
至于 SCM,我推荐 Mercurial,但也有 SVN 和 Git 等等,我建议你谷歌一下,发表你的意见。
如果您使用 SCM,目前最好的方法是检入 project.pbxproj 文件(在您的 .xcodeproj 包中)。大多数情况下合并就好了,有时您必须手动合并,但在这些情况下,90% 的时间您只需允许合并的双方。
我的 .gitignore 文件如下所示:
# xcode noise
build/*
*.pbxuser
*.mode1v3
*.perspectivev3
*~
*.mode2v3
您可以对其他 SCM 系统使用类似的忽略指令集。
文件夹引用对于图像是可以的(需要注意的是,如果您更改任何图像内容,则必须进行清理),但对于源来说不是很好。
让多个人在一个共享文件夹上工作是灾难的根源,当有人第一次覆盖你大部分时间都在编辑的文件时,你会后悔的,因为他们想更新其中的评论。
获取 SCM 并让每个人都将他们的代码检出到他们自己的私人文件夹中。
当您的构建速度更快时,您也会更快乐,因为您是在本地磁盘而不是网络磁盘上构建的。
如果您正在寻找实时协作,即两个或多个程序员实际上同时将相同的代码写入同一个文件,您将需要使用像 subethaedit 这样的协作编辑器。您可以将 subethaedit 设置为 Xcode 中源文件的首选编辑器。
这样,您就有了一位主持 Xcode 项目的程序员,他在 subethaedit 中打开源文件。然后其他程序员通过 subethaedit 登录到该文件。然后托管程序员在他的本地 Xcode 中编译代码。
但是,正如上面 Rudedog 的评论中所述,如果您只想让多个人处理同一个项目但处理不同的文件,您应该使用代码管理工具。