Warning: Invalid argument supplied for foreach() in /web/website/www.ownlinux.cn/www/wp-content/plugins/alimama-deluxe/alimama-deluxe.php on line 925 记 git 的 post-receive 钩子不能正常 git pull 的问题| OwnLinux.org
22
11月

记 git 的 post-receive 钩子不能正常 git pull 的问题

有一个需求是本地git在push到远程 git repo 之后,在远程服务器上自动在/dir/foo下执行 git pull 的操作。想来是一个很简单的需求,不就是在远程的 foo.git 仓库中的 hook 里加一个 post-receive 的钩子,然后在钩子里加入一个 git pull 的操作。但是实际操作的时候发现有问题的,因为这样忽略了一个小细节的问题。


操作之前,头脑里想的代码如下:
#!/bin/sh
cd /var/git/web3/etc/puppet
/usr/bin/git pull

用这个代码在 git push ssh://git@ownlinux.org:/opt/foo.git 之后,发现远程服务器上的 /dir/foo 目录下并没有成功 pull 到最新的数据,并且终端上也有报错(remote: fatal: Not a git repository: ‘.’)。 后面发现 git 的钩子在运行的时候会调用 GIT_DIR 这个环境变量,而不是PWD 这个。所以在 git pull 的时候提示 Not a git repository: ‘.’ ,其中 “.” 正是 GIT_DIR 这个环境变量的值。

钩子的代码改成下面的之后,运行正常了:

#!/bin/sh
unset $(git rev-parse --local-env-vars)
cd /var/git/web3/etc/puppet
/usr/bin/git pull

原载: OwnLinux.org
原文标题: 记 git 的 post-receive 钩子不能正常 git pull 的问题
原文链接:http://www.ownlinux.org/2013/11/22/git-post-receive-git-pull.html
OwnLinux.org 版权所有,转载时必须以链接形式注明作者和原始出处及本声明。否则,请勿转载!!


任何商业网站未经许可请勿转摘!本站将保留追究其法律责任的权利。

没有评论

第一个在本文留言。

发表评论

名字(必须)
邮箱(不会被公布)(必须)
网址

字体为 粗体 是必填项目,邮箱地址 永远不会 公布。

允许部分 HTML 代码:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
URLs(网站链接)必须完整有效 (比如: http://www.ownlinux.org),所有标签都必须完整的关闭。

超出部分系统将会自动分段及换行。

请保证评论内容是与日志或 Blog 内容相关的,灌水、攻击性或不恰当的评论 可能 会被编辑或删除。

    站内搜索

    赞助商

    标签

    最近访问