跨平台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文件,你可以定义转换只是在那个目录下才能安全的。