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仓库更新

posted @ 2016-10-14 14:03  Deric  阅读(5328)  评论(0编辑  收藏  举报