跨平台gitconfiguration的最佳做法?
上下文
我的一些应用程序用户configuration文件保存在一个git仓库中,以便在多个机器和多个平台之间轻松共享。 这些configuration文件中包含.gitconfig
,其中包含以下用于处理回车换行符的设置
[core] autocrlf = true safecrlf = false
问题
这些设置也适用于导致模糊错误的GNU / Linux平台。
题
在configuration文件中处理这些平台特定差异的一些最佳实践是什么?
build议的解决scheme
我意识到这个问题可以通过每个平台有一个分支,并保持常见的东西在主,并与主平台分支时,向前移动。 我想知道这个问题是否有更简单的解决scheme?
我已经在问题中广泛地回顾了那种configuration设置( crlf
):
用代码分发gitconfiguration 。
结论是:
- 结帐/检查.gitattributes文件
- 列出明确需要这种转换的所有types。
例如:
* .java + crlf * .txt + crlf ...
- 避免做任何不需要的文件types的转换,因为合并,
git status
,shell环境和svn import
的这种转换的各种副作用(参见“ 用代码分发gitconfiguration ”链接和参考)。 - 如果可以的话,完全避免任何
crlf
转换。
现在,关于每个平台设置的具体问题,分支并不总是正确的工具,特别是对于非程序相关的数据(即;这些设置与您正在开发的内容无关,只有存储您的历史的VCS发展)
正如问题Git所述:如何维护一个项目的两个分支并仅合并共享数据? :
如果将系统相关的代码放在不同的目录中并处理构build系统中的跨平台依赖关系(Makefile或任何你使用的),你的生活会变得非常简单。
在这种情况下,尽pipe分支机构可以用于依赖于系统的代码,但是我会build议使用支持工具的系统相关设置目录,脚本能够根据回购部署平台构build适当的.gitattributes
文件以应用正确的设置。
永远不要开启autocrlf
,除了头痛和悲伤外,什么也不做。
没有理由在窗口上使用\r\n
,所有像样的编辑(根据定义)都可以处理\n
。
我想你应该有.gitconfig依赖于用户正在使用的操作系统。 Windows用户完全不需要autocrlf。 例如,用crlf保存文本文件,让Git自动为Linux用户来回转换文件。
您可能还想检查.gitattributes ,它允许您定义哪些文件被转换,哪些不是。 如果你只有一个地方有configuration文件,你可以定义转换只是在那个目录下才能安全的。