在gitconfiguration中的shellvariables扩展

我有一个shellvariables指向我的所有configuration文件所在的目录。 我们假设这个variables是用export RC=$HOME/rc 。 我在configuration目录中有一个全局忽略文件: ~/rc/globalgitignore

我的问题是,如何扩展我的.gitconfig文件中的RCvariables?

我已经尝试了以下内容:

  • excludesfile = $RC/globalgitignore

  • excludesfile = !$RC/globalgitignore

  • excludesfile = !echo $RC/globalgitignore

  • excludesfile = !$(echo $RC/globalgitignore)

这些解决scheme都不起作用。

唯一的办法是,如果我input完整的path: excludesfile = ~/rc/globalgitignore ,但是我必须改变path,如果我的rc目录移动到不同的位置。

你不能。 git-config(1)不支持环境variables扩展,但只有有限的types转换和path扩展:

types说明符可以是–int或–bool,使git config确保variables是给定的types,并将值转换为规范forms(int的简单十进制数,“true”或bool的“false”string),或者–path,它执行一些path扩展 (参见下面的path )。 如果没有传入types说明符 ,则不会对该值执行检查或转换

--path的文档状态:

– path

git-config会将前导扩展到$ HOME的值,并将〜用户扩展到指定用户的主目录 。 这个选项在设置值时不起作用(但是你可以在命令行中使用git config bla〜/让shell执行扩展)。

术语“扩展”在git-config(1)中没有出现在任何不同的上下文中。 那么你是怎么得到这个想法的呢?

为了扩展环境variables,你必须自己预处理Gitconfiguration文件,也就是创build一个模板文件,并在将文件复制到你的$HOME目录前用脚本展开variables。

如果是关于点文件pipe理,那么做,所有的人都做:把它们放在一个目录中,并从$HOME添加符号链接到这个目录。

我在我的configuration中使用bash脚本来启用可变扩展。 只需将您需要的variables导出到.bashrc中并在脚本中使用它:

在我的〜/ .bashrc中:

 export TESTVARIABLE="hello" 

在我的〜/ .gitconfig中:

 [alias] test = !bash -c '"echo \"Value: $TESTVARIABLE\";"' 

在我的bash提示符下:

 bash> git test Value: hello 

另一种方法是在shell的rc中添加一个git config命令。 我例如有在我的.bashrc:

 git config --global user.name "$USER@$HOSTNAME" 

我在我的所有机器上都有相同的configuration,通过添加这个我可以区分来自不同机器的提交。 你可以做同样的事情,并添加到你的shell rc:

 export RC="$HOME/rc" git config --global core.excludesfile "$RC/globalgitignore"