我的许多应用程序用户配置文件都保存在git存储库中,以便在多台计算机和多个平台之间轻松共享。这些配置文件中包含.gitconfig
,其中包含以下用于处理回车换行字符的设置
[core]
autocrlf = true
safecrlf = false
这些设置也适用于GNU / Linux平台,导致模糊的错误。
在配置文件中处理这些平台特定差异的最佳做法是什么?
我意识到这个问题可以通过为每个平台设置一个分支并在主设备向前移动时保持主设备中的公共内容并与平台分支合并来解决。我想知道是否有任何更容易的解决方案来解决这个问题?
答案 0 :(得分:51)
永远不要打开autocrlf
,它只会引起头痛和悲伤。
在Windows上使用\r\n
没有任何借口,所有体面的编辑(根据定义)都可以处理\n
。
答案 1 :(得分:31)
我在问题中广泛审查了这种配置设置(crlf
):
的 distributing git configuration with the code 强>
结论是:
*.java +crlf *.txt +crlf ...
git status
,shell环境和svn import
有各种副作用(请参阅“distributing git configuration with the code”用于链接和参考。)crlf
转换。现在,关于每个平台设置的具体问题,分支并不总是正确的工具,特别是对于非程序相关数据(即;这些设置与您正在开发的内容无关) ,仅存储开发历史的VCS)
如问题Git: How to maintain two branches of a project and merge only shared data?中所述:
如果您将依赖于系统的代码放在不同的目录中并处理构建系统中的跨平台依赖项(Makefiles或您使用的任何内容),那么您的生活将变得非常简单。
在这种情况下,虽然分支可以用于依赖于系统的代码,但我建议使用支持工具系统相关设置的目录,并且脚本能够构建相应的.gitattributes
文件以应用正确的设置,具体取决于在repo部署平台上。
答案 2 :(得分:-2)
我认为你应该让.gitconfig依赖于用户正在使用的操作系统。 Windows用户根本不需要autocrlf,而Linux用户则需要autocrlf。例如。使用crlf保存文本文件并让Git自动为Linux用户来回转换文件。
您可能还想检查.gitattributes,它允许您定义哪些文件已转换,哪些文件未转换。如果您只在一个位置拥有配置文件,则可以定义转换仅在该目录中完成,只是为了安全起见。