- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
背景: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
问题:查了很多,似乎没有好的解决方法。有经验的人能告诉我在几个用例中会发生什么吗?
在项目中,我将一个文件从 x 重命名为 y,并删除了文件 A。同时,另一个程序员提交了添加 fileC 和删除 fileD 的更改。 merge 的结果是什么?我确定实际的文件系统更改是正确的,但在 Xcode 导航器面板中:
如果 git 忽略 .xib 文件——我至少会收到一个警告,指出文件已更改且未被处理吗?
最佳答案
这些天我不会为项目文件或 nib 设置任何特定的 .gitattributes
。
将并发更改 merge 到 Xcode 项目和 xibs/storyboards 的问题存在于每个拥有多个开发人员的团队中。
处理Xcode项目冲突的几个技巧:
.xcconfig
文件来configure your projects而不是build设置部分。配置文件很容易 merge 。如果有疑问,我最好的建议是采取 merge 的一侧,放松并重放您的添加。
近几个月来,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/
在 gitattributes 中,您可以指定应将特定文件类型视为二进制文件,例如 *.myExt binary 来自: http://git-scm.com/docs/gitattributes 这
在 gitattributes 中,您可以指定应将特定文件类型视为二进制文件,例如 *.myExt binary 来自: http://git-scm.com/docs/gitattributes 这
我刚刚创建了一个新的 Laravel 项目,我正在设置我的 .gitattributes语言属性。问题是,我不确定要为哪些文件/目录设置哪些。 默认.gitattributes文件如下所示: * te
有什么办法可以暂时覆盖git中的属性,类似于-c可以用来覆盖配置选项吗? 我想调用git diff带有特定的自定义textconv命令与我通常使用的命令不同。 为了更具体:我的实际用例是在 vim 中
我们正在开发一个项目,几个人拥有 Mac,而我在 Windows 上运行。我们在换行方面遇到了一些问题。 我在 GitHub 上读到我可以添加以下内容: # Set default behaviour
我在我的 git 安装 (CentOS) 的根目录中创建了一个 .gitattributes 文件。我已经通过 samba 共享连接在 PHPStorm 中创建了测试文件,并将行结尾专门设置为 CRL
有时人们会创建包含已知扩展名列表的 .gitattributes 文件,然后手动将它们声明为 text 或 binary: *.ts text *.js text *.json text *.csv
我正在尝试在 .gitattributes 中处理没有扩展名的文件: * text=auto *. eol=lf .py eol=lf *. 显然没有帮助。 git check-attr --all
我们已经为我们的项目存储库创建了一个文本和二进制文件类型的列表,但我担心某些类型可能已经从该分类中消失,或者将来有人可能会添加一个新的文件类型而忘记了将其添加到 .gitattribute 文件中。
我正在为使用 smudge/clean filters 的 git 编写一些工具,因此我必须在 .gitattributes 文件中创建条目。 不幸的是,该文件的解析相当简单,只是按空格拆分,因此在我
我的 git 存储库中有许多模板文件,它们以不同的速率变化。这些然后用于生成 HTML 页面。如果有人报告问题,我希望他们能够告诉我哪个版本的模板文件有问题。目前,我在更改文件时手动将日期输入到文件中
我想在合并请求期间利用 gitlab 图像差异。但是,我得到的不是渲染图像或差异,而是: 一条消息说:This diff was suppressed by a .gitattributes entr
我刚刚开始熟悉 git 的使用。我一直在使用 https://github.com/Danimoth/gitattributes 中的示例为我的各种项目(主要是 bash 和 python 脚本)整理
因此,我最近在我们的一个存储库中添加了一个 .gitattributes 文件,以尝试强制使用一致的行结尾: # All Perl Sources should use Unix style li
例如,lg2s 的 .gitattributes 文件有 *.cs diff=csharp 行。代码的输出 using (var repo = new Repository(@"path\to\lg2
是否有任何具体示例,可以通过 Linguist 属性检测 GitHub 中的错误语言? 来源:https://github.com/github/linguist 语言学家文档 语言学家的语言 语言学
我已阅读 documentation on .gitattributes和 searched Stack Overflow对于这个问题的简单答案,但到目前为止还没有找到。我有一个像这样有空格的文件。
我读过 Git documentation ,它表明我可以明确地将某些文件设置为文本,因此它们的行尾会自动更改或作为二进制文件以确保它们不变。 但是,我也读到 Git 非常擅长检测二进制文件,这让我觉
我想设置 git 以将所有 LF 结尾更改为 CRLF。 我在我的存储库的根文件夹中创建了一个 .gitattributes 文件: * text=auto # Have git change eve
我正在使用 Visual Studio 2010 和 git (git svn)。我的同事使用带有 Ankhsvn 插件的纯 svn。 当我尝试在启用 Git 源代码管理提供程序的情况下打开文件时,V
我是一名优秀的程序员,十分优秀!