从 git 工作流的角度来看,当多人合作时,情节串连图板是一个相当大的麻烦。例如,在。Storyboard 文件的起始 <document>
标记的 toolsVersion
和 systemVersion
属性被最近正在运行的文件操作器的任何配置所改变。精确地同步每个人的 Xcode 版本似乎对 toolsVersion
有帮助,但无论如何,systemVersion
都会发生变化,这取决于开发人员运行的特定 Mac 和/或 OS X 版本。
这很愚蠢,但基本上是无害的。但是,让我们担心的是,在其他时候,仅仅通过在 git pull
之后打开它们,就会自动对故事板做出一些其他的更改。也就是说,Alice 对故事板进行更改,提交并将它们推送到存储库。然后,Bob 拉出 Alice 的更改并打开故事板以进行进一步的更改。当他打开情节串连图板的时候,文件图标立即变成了一个修改过但是没有保存的状态,并且一个 git status
表明已经发生了许多奇怪的变化。所有这一切,鲍勃没有改变任何东西,也没有自己保存文件。
我们看到的最常见的自动化更改是在故事板文件末尾附近整个 <classes>
标记层次结构的消失或重现。我们还不知道是什么引起的。我们可能有几个本地化版本的故事板在各种。当在 Interface Builder 中打开 lproj 目录时,类层次结构可能会自发地从一些目录中移除并添加到另一些目录中,或者在一些目录中独立存在。这会在 git diff
中引起很多噪音,但是它实际上并没有破坏任何功能。我们通常会有选择地将实际的更改添加到 git 的索引中,提交这些更改,然后放弃自发的、无意义的 <classes>
更改。这样做是为了保持提交的规模和质量,正如它们应该做的那样。然而,最终,Xcode 不断地重新做更改,而有人只是将它们与其他一些东西一起提交... ... 这很好,直到其他人的 Xcode 决定无缘无故地将它们修改回来。(我们的犯罪历史中有很多人对此发过誓。)
还有其他人看到这种行为吗?这是一个 Xcode 错误还是我们的一个或多个 Mac 开发人员的配置问题?在与 XIB 文件协作时,我们已经看到了一些类似的行为,但故事板似乎更容易受到这种影响。