无法在 bash 中获得正确的 git 分支名称
Unable to get right git branch name in bash
我正在处理我的 git 服务器的 post-接收,以便它自动将我网站的最新版本上传到以提交所在的分支命名的文件夹中,但是以某种方式执行此代码无法按预期工作。
我的值分支以某种方式获取了所有分支的值,而不是我试图获取的分支的值。 Hash 确实得到了正确的哈希码。我已经在程序之外对其进行了测试,当我输入正确的散列时分支也是如此。我在这个程序中使用了错误的语法吗?
#!/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
好的,我让它按我想要的方式工作!在听说 post-receive got refname as stdin 后,发现我必须 trim down 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
我正在处理我的 git 服务器的 post-接收,以便它自动将我网站的最新版本上传到以提交所在的分支命名的文件夹中,但是以某种方式执行此代码无法按预期工作。
我的值分支以某种方式获取了所有分支的值,而不是我试图获取的分支的值。 Hash 确实得到了正确的哈希码。我已经在程序之外对其进行了测试,当我输入正确的散列时分支也是如此。我在这个程序中使用了错误的语法吗?
#!/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
好的,我让它按我想要的方式工作!在听说 post-receive got refname as stdin 后,发现我必须 trim down 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