我看了一个开源的Mac应用程序,他们给出了一些.gitignore的建议值。他们就是我所期待的..。
然而,他们也建议在.gitattributes文件中加入一个条目:
*.pbxproj -crlf -diff -merge
我并不是最了解git的人,所以我想知道添加这一行到底有什么好处?具体做些什么?我只在这个one project中看到过这个建议,如果这是正常的做法,我现在应该会在其他地方看到它。所以我很好奇它是如何具体应用于pbxproj文件的。
发布于 2009-10-11 01:33:20
pbxproj文件实际上不是人类可合并的。虽然它是纯ASCII文本,但它是JSON的一种形式。从本质上讲,您希望将其视为二进制文件。
下面是各个标志的作用:
-crlf:不使用crlf <=> cr转换
-diff:不对文件进行比较
-merge:不尝试合并文件
出自Scott Chacon的Pro Git一书
有些文件看起来像文本文件,但实际上应该将其视为二进制数据。例如,Mac上的Xcode项目包含一个以.pbxproj结尾的文件,它基本上是由记录构建设置的集成开发环境写到磁盘的JSON (纯文本javascript数据格式)数据集,等等。虽然从技术上讲它是一个文本文件,但因为它都是ASCII格式,所以您不会希望将其视为文本文件,因为它实际上是一个轻量级数据库-如果两个人更改了它,您不能合并内容,并且差异通常没有帮助。该文件是供机器使用的。本质上,您希望将其视为二进制文件。
发布于 2010-04-28 19:45:52
在提交时,比较通常很有用,可以用来检查已经更改了哪些内容。因此,我发现保持差异的能力是有用的,但只是防止合并。因此,我在.gitattributes文件中使用了以下代码:
*.pbxproj -crlf -merge
另外,有没有人尝试过对pbxproj文件使用merge=union?请参阅:Should I merge .pbxproj files with git using merge=union?
发布于 2014-08-03 13:29:25
我编写了一个名为xUnique的python脚本来解决这个合并冲突问题。
此脚本执行以下操作:
UUID替换为项目范围内唯一的32个字符的MD5摘要,并删除任何未使用的UUID(通常是由于之前的粗心合并造成的)。这将防止重复的UUID,因为不同的机器/Xcode在此文件中生成不同的UUID。Xcode可以识别它,并且可以打开该项目。在此过程中,删除项目文件中的所有无效行进行排序的python versionsort-Xcode-project-file from Webkit team复制script创建新文件即使没有做任何更改,这样可以减少使用此python version后的提交次数
有关xUnique的更多详细信息和更新,请访问README
https://stackoverflow.com/questions/1549578
复制相似问题