我正在处理我的git服务器的后期接收,以便它自动上传我的网站的最新版本在提交所在的分支后命名的文件夹中,但是以某种方式执行此代码不能按预期工作。无法在bash中获得正确的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
你看错了方向:一般来说,没有唯一的分支提交明确属于。看到我的这个答案:http://stackoverflow.com/questions/29257491/which-branch-do-commits-from-a-deleted-branch-belong-to/29258814#29258814 – Jubobs 2015-04-01 13:46:35
由于Jubobs说一个提交没有有“** a **分支”。一些分支上存在提交(以达到它为准)。 – 2015-04-01 13:53:31
为什么你在做所有这些工作,当git post-receive hook在stdin上获取_oldrev newrev refname_ triplets?如果有多个名称,您仍然需要选择所需的那些名称,但它应该是一个开始。 – Useless 2015-04-01 13:54:18