设置Mercurial Hook的环境变量

时间:2008-09-17 22:05:56

标签: python shell mercurial mercurial-hook

我正在尝试调用一个shell脚本,该脚本在mercurial钩子上设置我们服务器上的一堆环境变量。当一个新的变更组进入时,shell脚本会被调用,但环境变量不会超过对shell脚本的调用。

我的存储库上的hgrc文件如下所示:

[hooks]
changegroup = shell_script
changegroup.env = env

我可以看到shell脚本的输出,然后是env命令的输出,但是env命令不包含shell脚本设置的新环境变量。

我已经验证了shell脚本在单独运行时工作正常,但是当在mercurial hook的上下文中运行时,它没有正确设置环境。

1 个答案:

答案 0 :(得分:2)

Shell脚本无法修改其环境。

http://tldp.org/LDP/abs/html/gotchas.html

  

脚本可能无法将变量导出回其父进程,shell或环境。正如我们在生物学中所学到的,子进程可以从父进程继承,但反之亦然

$ cat > eg.sh 
export FOO="bar";
^D
$ bash eg.sh 
$ echo $FOO; 

$

另外,问题更大,因为您有多次调用bash

bash 1 -> hg -> bash 2 ( shell script ) 
             -> bash 3 ( env call )

这就像是在想我可以在一个PHP脚本中设置一个变量,然后通过一个接一个地运行一个神奇地让它与另一个。