【问题标题】:How to disable Interface Builder document versioning from auto updating?如何从自动更新中禁用 Interface Builder 文档版本控制?
【发布时间】:2012-11-19 05:44:27
【问题描述】:

这个问题仍然得到很多人的支持。所以看看Update3。 once you have upvoted, commented, answered, please please please file a radar

查看 nib / xib,修改文件,迫使我提交更改或撤消更改。在出现合并冲突之前,这不是问题。

详情: 我在一个由 5 名 iOS 开发人员组成的团队中工作,在 XCode 的最后几个版本中,我们遇到了一个问题,即当任何人打开文件(不进行任何更改)时,.xib / nib 文件被触摸/修改。

如果一位开发人员认为“搞砸了,让我检查 xcode 所做的任何修改”并检查它,它不会就此停止。当另一个开发人员查看该 nib 时,将再次触摸/修改两台不同机器(具有相同版本的 XCode 和 MacOS)上的相同文件。

.xib 文件中通常会被修改的是这个

    <key>com.apple.ibtool.document.version-history</key>
<dict>
    <key>interface-builder-version</key>
    <dict>
        <key>com.apple.InterfaceBuilderKit</key>
        <string>2844</string>
        <key>macosx.version</key>
        <string>12C60</string>
    </dict>
</dict>
<key>com.apple.ibtool.document.warnings</key>
<dict/>

但除此之外,它还会修改或移动 .xib 文件中现有的键值对。

我在 SO 和 Google 上搜索了很多,但我没有看到很多关于这个问题的帖子。

当我升级所有笔尖以处理 iPhone5 屏幕时,我做了一个合并冲突的噩梦,这本身并不太复杂,但由于文档版本控制而产生了大量的合并冲突。

删除我不理解的代码,导致当我尝试打开 nib 时 xcode 崩溃。 (我现在已经修复了这个问题,恢复到以前的状态)

感谢任何有关如何避免此问题的建议!

更新:注意到这个问题还没有解决,并且仍然经常得到支持。我只是好奇,是否有任何故事板项目遇到同样的问题? (我还没有编写故事板)。

更新 2:对于所有遇到相同问题的人,即使您收到回复说存在现有雷达,也请提交雷达。它有助于将问题浮出水面,XCode 之神只会在那时解决它。

Update3:我仍然在这个线程上看到不少赞成票,而且苹果错误报告仍然开放。所以,在提出这个问题后,please file a radar,以及我在问题中提到的详细信息(和/或添加您自己的解释)

Update4:这个问题仍然得到很多支持。所以看看Update3。 once you have upvoted, commented, answered, please please please file a radar

Update5:根据 Apple Engineers 在 WWDC 2014 上的信息,此问题已在 Xcode6 中修复。一旦我确认此问题已得到修复,我将更新此问题(并可能关闭它)。

Update6:希望看到此问题已修复。将在 WWDC2015 上问这个问题(通过我认识的人去那里)。如果其他获得 WWDC 门票的幸运儿也能在 WWDC 2015 上做同样的事情,那就太好了

Update7:Xcode 7 在这里,这个 bug 也在这里 :( 原始雷达报告 (11533872) 仍然开放

【问题讨论】:

  • 我们的团队也遇到了这个问题。我们使用 Git 进行源代码控制。我们已经开始使用 Xcode 的可视提交功能。这至少向我们展示了我们提交的所有有修改的文件。有时这可能包括我们接触过(但实际上并未修改)的 xib 文件,因此我们只需从提交中取消选中它。
  • 感谢亚当的评论!甚至我们也在使用 Git 进行源代码控制。我怀疑它与使用哪种源代码控制有关。只是Xcode每次都把它搞砸了。因此,如果我确实通过进行一些更改触摸了一堆笔尖,并且错误地触摸了一些笔尖(仅通过查看笔尖),我将很难确定要从提交中取消选中哪些笔尖:-/
  • 最简单的解决方法是让所有开发人员运行相同版本的 Xcode。为什么你不能这样做?
  • 正如我在 OP 中所说,每个人都在运行相同版本的 XCode,并且在相同的操作系统上,在查看 nib 时仍然编辑 nib 文件。当然,在这种情况下,它不会将文件标记为已修改,但仍然很烦人。目前,我已将部署目标硬设置为 XCode 4.5,将开发目标硬设置为 Interface Builder 3.2。 (根据其他人的版本,我认为将其设置为项目 SDK 和以前的版本会搞砸)
  • 提交了一份雷达报告。收到回复说这是错误 ID# 11533872 的欺骗。希望看到这个修复!

标签: xcode interface-builder xib nib document-versioning


【解决方案1】:

Xcode 4.6.3 版解决了这个问题。然而,正如 cmets 所说,你们都需要运行相同的版本。如果四个开发人员在 4.6.3 上,一个在以前的版本上,那么那个开发人员将遇到同样的问题。但是,如果他们不提交该更改,则不会影响其他人。

受影响的两个 Xib 键是:

<string key="IBDocument.AppKitVersion">1187.39</string>
<string key="IBDocument.SystemVersion">12E55</string>

所以,最重要的是,让团队中的每个人都更新到 Xcode 4.6.3。

【讨论】:

  • 我仍然在 4.6.3 的故事板中体验到这一点
  • 是的,如果您打开的 Xib 已由早于 4.6.3 的 Xcode 版本打开,您就会这样做。这就是为什么团队中的每个人都需要使用相同的版本。
  • XCode 5.0 上仍然存在这个错误!是的,即使在 Storyboards 上……也更痛苦。
【解决方案2】:

尝试更新 XIB 的“文档版本控制:开发”设置:

Xcode: File Inspector: Interface Builder Document: Document Versioning: Development

至少到“Interface Builder 3.1”。

【讨论】:

  • 感谢您的回答。但是,正如我在 cmets 中对我的问题所提到的那样,我已经将其设置为 3.2,并且仍然看到了这个问题。不管是设置成特定版本,还是设置成文档版本的最新版本,bug依然存在。
  • 对不起,新来的。你说的对。似乎对我的项目有一段时间帮助的设置,然后又发生了……对于一些 XIB;这次似乎是随机的。
猜你喜欢
  • 2019-02-21
  • 2014-05-26
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多