2

所以,我有一个登台服务器设置,我想做的是当有人推送到非主分支时更新登台服务器的目录。我当前的接收后挂钩如下所示:

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"

但是我没有在服务器上看到我想要的更改,并且远程返回“Already up-to-date”,这让我觉得它是从 Master 或其他东西那里拉出来的?

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

4

1 回答 1

2
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

有关更多详细信息,请参阅“为什么设置 GIT_WORK_TREE 在提交后挂钩中不起作用? ”。

你的钩子应该从:

#!/bin/sh
 unset GIT_INDEX_FILE
 export GIT_WORK_TREE=/full/path/ofstaging/bikereport/
 export GIT_DIR=/full/path/ofstaging/bikereport/.git/
于 2013-07-06T17:37:51.287 回答