GIT 第11章 钩子 GIT 第11章 钩子

2022-07-18

自动更新服务器上版本库

①、问题来源

使用git以后,开始在push文件以后总是需要到服务器上去git pull 才能更新,很是麻烦。

②、问题的解决

后来查找资料,发现git有类似于svn中的钩子设置,在hooks文件夹的文件中。

③、解决步骤

我使用的是 gitosis 来管理 git 版本库,所以,在 repositories 中的项目中的 hooks 文件中进行设置,开始设置 post-receive,发现shell 脚本可以运行,git 可以运行,唯独在文件中添加 git pull 时会报错,提示:"fatal: Not a git repository: '.'"。

hook 脚本执行了 cd 之后,继续执行 git 语句拉取的时候还是在 hooks 文件夹下,而不是 cd 的文件路径。

Shell代码
#!/bin/sh
export.UTF-8
cd /www/myproject/
unset GIT_DIR //重要是这里..
git pull origin master

上面主要是添加了unset GIT_DIR

git 的 hooks 里面默认有一些环境变量,会导致无论在哪个语句之后执行 git 命令都会有一个默认的环境路径,既然这样 unset 掉默认的 GIT 环境变量就可以了。

阅读 645