Git Post Receive Hook:将当前工作分支更新到登台服务器

时间:2013-07-06 17:12:40

标签: git githooks git-post-receive

所以,我有一个登台服务器设置,我想做的是当有人推送到非主分支更新登台服务器的目录时。我目前的post-receive挂钩看起来像是:

echo "post hook is on the run!"

while read oldrev newrev ref
do
    echo "$ref"
done

unset $(git rev-parse --local-env-vars)
cd ../staging/bikereport
git fetch
git pull origin $ref

echo "Post receive finsihed"

但是我没有看到我想在服务器上进行的更改,并且远程返回“已经是最新的”,这让我觉得它正在从Master或其他东西中拉出来?

这不是一个优雅的解决方案,但我们是一个非常小团队,负责一个项目。一个理想的解决方案是将每个分支保存到登台服务器中的新目录,然后每次推送仅更新该目录。

1 个答案:

答案 0 :(得分:1)

cd ../staging/bikereport
git fetch

注意:您的git目录您的staging/bikereport回购 仍然是挂钩正在运行的那个。

您需要将GIT_DIR设置为/full/path/ofstaging/bikereport/.git(并确保将GIT_WORK_TREE设置为/full/path/ofstaging/bikereport),以便从 运行命令>回购工作。
您需要取消设置GIT_INDEX_FILE

有关详细信息,请参阅“Why doesn't setting GIT_WORK_TREE work in a post-commit hook?”。

你的钩子应该从:

开始
#!/bin/sh
 unset GIT_INDEX_FILE
 export GIT_WORK_TREE=/full/path/ofstaging/bikereport/
 export GIT_DIR=/full/path/ofstaging/bikereport/.git/