Git post接收钩子和环境变量

Git post接收钩子和环境变量,git,environment-variables,git-post-receive,Git,Environment Variables,Git Post Receive,我在“git”系统用户下运行git服务器。我在git用户的~/.profile中添加了:export STAGE_PATH=“/srv/http/STAGE”,您可以猜到,我想在推送更改时自动将来自repo的网站放在舞台上。然而,在post接收钩子中,变量STAGE_路径似乎对我不可用。这正常吗?有没有办法从post接收钩子访问环境变量?如何添加 . ~git/.profile 在post-receive-hook脚本的顶部(假设是sh) 不过,你到底想要什么还不清楚。您想要: 1) 只是为了将

我在“git”系统用户下运行git服务器。我在git用户的~/.profile中添加了:
export STAGE_PATH=“/srv/http/STAGE”
,您可以猜到,我想在推送更改时自动将来自repo的网站放在舞台上。然而,在post接收钩子中,变量STAGE_路径似乎对我不可用。这正常吗?有没有办法从post接收钩子访问环境变量?

如何添加 . ~git/.profile 在post-receive-hook脚本的顶部(假设是sh)

不过,你到底想要什么还不清楚。您想要:

1) 只是为了将其推向一个外部点,而不关心回购协议之间的共性。在这种情况下,为什么需要其他地方的环境变量?为什么不将最终位置放在post-receive-hook脚本本身中呢


2) 你希望有一些外部变量来控制你将要推动许多不同回购协议的根,如果你需要更改它,最好将该位置编码为单个变量。如果是这样的话,你在上面所做的是有意义的。但是,您不一定首先需要在.profile中执行此操作。显然,git在运行脚本之前正在为您清理环境。因此,您应该创建一个包含您的参数的外部文件(尽管我反对使用.profile)。

git钩子不会将
git
用户登录到shell,因此在通常位置导出的东西将不可用。事实上,在执行钩子时,只会设置相当少的环境变量


您可以通过为$(printenv)中的行插入
,来检查这一点;不要重复$line;在钩子中完成。当然,仅用于调试目的。

这是第二种情况。我试图将“stage”分支签出到staging区域并执行一些操作(比如从文件导入db),这是staging服务器,所以我认为“staging path”是非常重要的环境特性,所以我尝试将其设置为环境变量(它可能应该在/etc/profile中设置,但我现在只是在试验)。如果钩子没有关于环境的信息,它会使事情变得不那么干净(