Xcode更改未修改的故事板和XIB文件

问题描述 投票:131回答:6

从git工作流程的角度来看,当多人协作时,Storyboard就是一个皇家痛苦。例如,.storyboard文件中的XML的开始<document>标记的toolsVersionsystemVersion属性可以通过运行最新文件操纵器的任何配置进行更改。同步每个人的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文件协作时,我们已经看到了类似的行为,但是情节提要似乎更容易受到这种影响。

ios xcode interface-builder storyboard xib
6个回答
78
投票

这不是错误,这是Xcode处理情节提要文件的结果。我正在为情节提要文件(GitHub link)编写一个diff和merge程序,并且花了数小时来分析情节提要文件逻辑以及Xcode如何对其进行处理。这是我发现的:


18
投票

这是XCode 4.5+中的错误,我希望它已得到修复,是的,它是PITA。


11
投票

通过在Xcode的任何生成文件(包括情节提要,XIB,Core Data模型和项目文件)中非常明智地使用git add -p,可以在某种程度上缓解此问题,所有这些文件均遭受类似的短暂修改,而这些修改不会对实际的界面/模型/项目。


6
投票

这里给出另一个答案,因为这种情况已大大改善。表示StoryBoard的XIB文件的XML已大大简化。


3
投票

知道为什么


0
投票

在同一情节提要板上工作不是问题。但是在同一个viewcontroller上进行操作会在拉/合并时产生冲突,这令人恐惧。我们真的不能避免为大型团队在同一ViewController中工作。

© www.soinside.com 2019 - 2024. All rights reserved.