gpt4 book ai didi

ios - Git,如何为 Storyboards 和 .xib 文件设置 .gitattributes

转载 作者:可可西里 更新时间:2023-11-01 03:19:49 24 4
gpt4 key购买 nike

背景:git——或任何其他 SCM——可以“成功” merge Storyboard、xib 和 pbxproj 文件,因为它们的核心只是 xml。有时存在可以通过通常的冲突解决策略解决的冲突。但是 xib 和 Storyboard 是一些非常复杂的数据结构的序列化格式,所以乐趣开始了。

与其他源代码一样,成功的 merge 并不能保证所有 merge 的更改都能正常工作。对于有问题的文件,git 可以成功 merge ,但 Xcode 有时会在您尝试打开它时显示“无法读取存档”错误 - 即 merge 损坏了 xib。

我看过关于让 git 忽略 .xibs(不实用)或在 .gitattributes 中通过设置禁用 diff 的建议

*.xib -crlf -diff

从技术上讲,这解决了 merge 冲突/损坏的 xib 问题 - 但现在有人的更改丢失了吗?

同样,我看到的项目文件的最佳建议是 .gitattributes 中的 merge=union:

*.pbxproj merge=union

问题:查了很多,似乎没有好的解决方法。有经验的人能告诉我在几个用例中会发生什么吗?

  1. 在项目中,我将一个文件从 x 重命名为 y,并删除了文件 A。同时,另一个程序员提交了添加 fileC 和删除 fileD 的更改。 merge 的结果是什么?我确定实际的文件系统更改是正确的,但在 Xcode 导航器面板中:

    • 我会同时看到 x 和 Y 吗?
    • fileA 是否会重新出现,因为它仍在其他程序员的 .pbxproj 中?
    • fileD 是否还会存在,因为它仍在我的 .pbxproj 中?
  2. 如果 git 忽略 .xib 文件——我至少会收到一个警告,指出文件已更改且未被处理吗?

最佳答案

这些天我不会为项目文件或 nib 设置任何特定的 .gitattributes

将并发更改 merge 到 Xcode 项目和 xibs/storyboards 的问题存在于每个拥有多个开发人员的团队中。

Xcode 项目

处理Xcode项目冲突的几个技巧:

  • 进行 merge 的一侧并在 merge 后手动应用其他更改。如果您删除了文件,它们将显示为红色,如果您需要添加它们,它们将可供添加。
  • 将文件添加到您的目标时,它们将位于“编译源”构建阶段的底部。将他们拖到列表中的任意位置,避免与其他人发生冲突。
  • 使用.xcconfig 文件来configure your projects而不是build设置部分。配置文件很容易 merge 。

如果有疑问,我最好的建议是采取 merge 的一侧,放松并重放您的添加。

XIB 和 Storyboard

近几个月来,XIB(以及 Storyboard)的格式发生了重大变化。我发现额外的对象被附加到文件的内部集合中并且 merge 可以很容易地完成。如果您要对同一个对象进行更改,则可能必须手动进入。

This post来自 Itty Bitty Apps 的文章强调了主要变化:

The benefits of this new XIB XML format are many fold:

  • XIBs are much smaller (fewer lines of code).
  • A developer can easily read the XML and understand what it specifies in the user interface.
  • Merging XIBs is now much less likely to lead to broken XIBs. Before we would rarely even bother to try and merge a XIB or Storyboard.

关于ios - Git,如何为 Storyboards 和 .xib 文件设置 .gitattributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18746909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com