在gitconfiguration中的shellvariables扩展
我有一个shellvariables指向我的所有configuration文件所在的目录。 我们假设这个variables是用export RC=$HOME/rc
。 我在configuration目录中有一个全局忽略文件: ~/rc/globalgitignore
。
我的问题是,如何扩展我的.gitconfig
文件中的RC
variables?
我已经尝试了以下内容:
-
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"