git 远程仓库自动更新
在远程服务器上架设了一个http server,然后通过git在本地做开发时,不想每次都登录到远程服务器上做pull操作,这个需求可以通过git hooks特性来实现。
原理是每当有用户更新代码时,会触发xxxx.git的hooks中的post-receive,然后把要执行的操作写在post-receive中就可以了。
开始的想法是
#!/bin/sh cd /project/canyon git pull currTime=$(date "+%Y%m%d%H%M%S") echo $currTime >> /project/canyon/log
然后这种写法会出现找不到git repository 的问题,原因是在执行git pull 时引入了$GIT_DIR变量
remtoe: fatal: Not a git repository: '.'
于是我们将post-receive改为
#!/bin/sh unset $(git rev-parse --local-env-vars) dir="/project/canyon/" logfile="/project/canyon/log" cd $dir git pull currTime=$(date "+%Y%m%d%H%M%S") echo $currTime >> $logfile
这样每一次用户pull成功都会将/project/canyon中的git仓库更新