将环境变量传递给myrepos(mr)

时间:2016-01-26 13:35:24

标签: git perl haskell configuration mercurial

我正在使用joey hess'myrepos工具来管理多个回购。

在某些时候,我想将环境变量传递给操作和部分,以便扩展它们。特别是,我正在传递像$SYNCTL这样的东西,它应该指向安装了存储库的顶级目录。

(请注意,这与myrepos所指的顶级目录无关:这是顶级目录,超出该目标应该忽略所有内容,这是不同的。)

不幸的是,这些变量没有被扩展。

例如,如果我导出SYNCTL=/home/myuser然后定义repo:

[$SYNCTL/myrepo]
.mrconfig

中的

从未真正找到过。 $SYNCTL被扩展为空,导致myrepos查找/myrepo,这显然不存在,所以myrepos会忽略该部分。

我还尝试在repo部分中扩展变量,如下所示:

[myrepo]
status = echo $SYNCTL

但是也没有打印任何东西。在这种情况下,会找到repo,但会打印一个空白行。

有些变量可以扩展(例如HOME),但并非所有变量都可以工作。我认为它与--force-env有关,但是运行mr --force-env status也不会打印任何内容。

有什么方法可以解决这个问题吗?应该有吗?

1 个答案:

答案 0 :(得分:2)

确保导出mouseleave环境变量。例如,在SYNCTL - 相似,而不是

bash

仅定义shell局部变量,使用

SYNCTL=$HOME/reponame

创建一个将由衍生进程继承的环境变量。