所以,我有一个登台服务器设置,我想做的是当有人推送到非主分支更新登台服务器的目录时。我目前的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或其他东西中拉出来?
这不是一个优雅的解决方案,但我们是一个非常小团队,负责一个项目。一个理想的解决方案是将每个分支保存到登台服务器中的新目录,然后每次推送仅更新该目录。
答案 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/