如何设置依赖于版本的Git全局配置标志

时间:2014-02-08 12:53:52

标签: git configuration-files git-config version-detection

为了让我的所有配置文件保持同步,我有Github repository的所有设置。虽然这在大多数情况下运行良好,但某些应用程序在不同的计算机上有不同的版本。

所以现在我想知道...有没有办法设置Git全局配置设置如this one(这会在我的笔记本电脑上引起警告)而不会在使用旧Git版本的不同机器上造成错误?

一个选项可能是包装git push命令以在支持时添加标记,但这看起来像是一个黑客。

2 个答案:

答案 0 :(得分:1)

单独机器的单独配置

为不同的机器和每台机器符号链接创建不同的配置文件,其中一个作为真实配置。不会跟踪符号链接本身,将其添加到.gitignore

符号链接可以在post-checkout hook中完成。您需要识别当前主机(例如uname -n)并拥有一个包含挂钩的适当设置的文件。

这个解决方案的缺点是不是动态的。在主机上安装新版本的Git后,您必须检查相应的配置是否适用。

什么是不可能的

如果您想要检查选项是否支持某个值并使用其他值作为回退,则必须解析联机帮助页并依赖其内容。 Git没有类似的实现。您无法检查是否支持某个值,您无法编写动态选择值本身的配置文件。

动态生成的配置

但是,可以动态生成配置。与使用符号链接替换普通文件以在多个静态文件之间进行选择的方式类似,您可以将其替换为连接到生成配置的守护程序的named pipe

在守护程序中,您可以检查git --version并根据它选择配置选项的值。虽然这是一个聪明的解决方案,充分利用Unix文件系统的功能,但它是一个非常hacky。您必须保持守护程序运行,如果它停止,Git将无法读取配置并将挂起。

答案 1 :(得分:1)

隐藏式目录,带有特制的git瓷器脚本,您可以检查您工作的每个仓库。 (或者单独的实用程序仓库,然后您可以使用清单和repo命令行实用程序进行检查。)您的脚本将使用基于git版本的所需标记调用push,与您所在的机器无关。