我正在接收我的git服务器的后期接收,以便它自动将我的网站的最新版本上传到以提交所在的分支命名的文件夹中,但不知何故,此代码不能用作意。
不知何故,我的值分支获取所有分支的值而不是我想要获得的分支。哈希确实得到了正确的哈希码。我已经在程序之外测试了它,当我键入正确的哈希时分支也是如此。我在这个程序中使用了错误的语法吗?
#!/bin/sh
hash=$(git log -n 1 --pretty=format:"%h")
branch=$(git branch --contains $(git log -n 1 --pretty=format:"%H"))
if [ branch ]
then
GIT_WORK_TREE="/data/site/'$branch'"
echo "/data/site/'$branch'"
git checkout -f $branch
fi
答案 0 :(得分:1)
好吧,我按照自己的意愿开始工作!在听到post-receive将refname作为stdin后,发现我必须减少refname才能得到分支名称,并想出了这段代码。多谢你们。 :)
#!/bin/sh
while read oldrev newrev refname
do
branch=${refname##*/}
if [ branch ]
then
path="/data/site/$branch"
mkdir $path
unset GIT_INDEX_FILE
export GIT_WORK_TREE=$path
git checkout -f $refname
echo "Successfully pushed to $path"
fi
done