从git工作流程的角度来看,当多个人协作时,情节提要板是一种皇家痛苦。例如,.storyboard文件中的XML的起始<document>
标记toolsVersion
和systemVersion
属性被最新文件操纵器正在运行的任何配置更改。同步每个人的Xcode版本似乎可以帮助toolsVersion
,但是systemVersion
无论如何,更改都会有所变化,具体取决于开发人员正在运行的特定Mac和/或OS X版本。
这是愚蠢的,但大部分无害。不过,令我们担心的是,有时在故事板之后,只要打开,它们就会自动进行其他更改git pull
。也就是说,爱丽丝对情节提要板进行更改,然后提交并推送到存储库。然后,Bob拉出Alice的更改,并打开情节提要进行进一步更改。他打开情节提要板的那一刻,文件图标立即变为已修改但未保存的状态,并且git status
表明发生了许多奇怪的更改。所有这些都无需Bob更改任何内容或自己保存文件。
我们看到的最常见的自动更改是,<classes>
故事板文件结尾附近的整个标签层次消失或重新出现。我们还没有弄清楚是什么原因造成的。我们可能在不同的.lproj目录中有多个故事板的本地化版本,并且在Interface Builder中打开它们时,类层次结构可能会自发地从某些类中删除并添加到其他类中,或者单独留在某些类中。这会在中引起很多噪音git diff
,但实际上并没有破坏任何功能。我们通常会选择性地将实际所做的更改添加到git的索引中,提交这些更改,然后仅丢弃自发的,毫无意义的<classes>
变化。这是为了使提交尽可能小巧,美观。最终,尽管如此,由于Xcode不断重复所做的更改,这变得太麻烦了,而有人只是将它们与其他内容一起进行了批处理……这很好,直到其他人的Xcode决定不做任何更改。明显的原因。(我们的提交历史对此有很多誓言。)
还有其他人看到这种行为吗?这是我们的一台或多台开发人员Mac上的Xcode错误还是配置问题?与XIB文件协作时,我们已经看到了类似的行为,但是情节提要似乎更容易受到这种影响。