55

语境

我的一些应用程序用户配置文件保存在 git 存储库中,以便在多台机器和多个平台之间轻松共享。在这些配置文件中.gitconfig,包含以下用于处理回车换行符的设置

[core]
    autocrlf = true
    safecrlf = false

问题

这些设置也适用于导致模糊错误的 GNU/Linux 平台。

问题

处理配置文件中这些平台特定差异的最佳实践是什么?

建议的解决方案

我意识到这个问题可以通过为每个平台建立一个分支并将常见的东西保留在 master 中并在 master 前进时与平台分支合并来解决。我想知道这个问题是否有更简单的解决方案?

4

3 回答 3

65

永远不要打开autocrlf,它只会引起头痛和悲伤。

没有任何借口可以\r\n在 Windows 上使用,所有体面的编辑器(根据定义)都可以处理\n.

于 2010-03-02T06:36:27.347 回答
36

我已经在问题中广泛审查了这种配置设置(crlf):
distributing git configuration with the code

结论是:

*.java +crlf
*.txt +crlf
...
  • 避免对不需要的文件类型进行任何类型的转换,因为这种转换对合并、git statusshell 环境和svn import(请参阅“使用代码分发 git 配置”获取链接和参考)的各种副作用.
  • crlf如果可以的话,完全避免任何转换。

现在,关于每个平台设置的具体问题,分支并不总是正确的工具,特别是对于非程序相关的数据(即;这些设置与您正在开发的内容无关,仅与存储您的历史记录的 VCS发展)

正如问题Git:如何维护项目的两个分支并仅合并共享数据中所述?

如果您将系统相关的代码放在不同的目录中并处理构建系统中的跨平台依赖项(Makefile 或您使用的任何东西),您的生活将会变得更加简单。

在这种情况下,虽然分支可用于系统相关代码,但我会推荐支持工具系统相关设置的目录,脚本能够构建适当的.gitattributes文件以根据 repo 部署平台应用正确的设置。

于 2010-03-02T06:32:38.780 回答
-3

我认为您应该让 .gitconfig 取决于用户使用的操作系统。Windows 用户根本不需要 autocrlf,而 Linux 用户则需要。例如,使用 crlf 保存文本文件并让 Git 自动为 Linux 用户来回转换文件。

您可能还想检查.gitattributes,它允许您定义哪些文件已转换,哪些未转换。如果您只有一个位置的配置文件,您可以定义转换只在该目录中完成,只是为了安全起见。

于 2010-02-25T08:00:01.163 回答