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