我正在使用Gerrit Code Review设置Git,并且正在寻找一种可能为Git新手的用户提供必要的Git命令的方法。
我目前用于启动新功能分支的命令本质上是(假设Gerrit是原点):
git checkout baseline
git pull
git checkout -b work1234
git push -u origin work1234
这将启动一个新的工作包work1234从一些基线分支,最后的推动创建Gerrit中的分支并设置上游。所以.git / config看起来像:
[branch "work1234"]
remote = origin
merge = refs/heads/work1234
现在,Gerrit希望将新的审查提交被推送到一个特殊的refspec,refs / for / work1234等。我可以手动执行:
git push origin work1234:refs/for/work1234
我想做的是找到一些方法来设置.git / config,以便一个简单的git push将当前分支推送到Gerrit需要的远程上的refspec。我看过以下git配置区域:
>分支。< name>。* – 似乎没有任何具体的设置push refspec的选项
push.default – 我想在这里上游
> remote。< name> .push – 我尝试refs / heads / *:refs / for / *这里,但是git push总是希望在这种情况下推送所有的本地分支,而我只想要当前的分支
如果我不能让Git自己做这个,我会写一个完全指定refspec的小包装脚本。但是,如果Git可以自己推到正确的地方,会更好。
我最终写了一个新的git-submit脚本:
#!/bin/sh -e
if [ -z "$1" ]; then
REMOTE=origin
else
REMOTE=$1
fi
BRANCH=`git symbolic-ref HEAD`
case $BRANCH in
refs/heads/*)
BRANCH=`basename $BRANCH`
;;
*)
echo "I can't figure out which branch you are on."
exit 1
;;
esac
git push $REMOTE HEAD:refs/for/$BRANCH
我把这个脚本放在/usr/local/libexec / git-core / git-submit中,现在有一个命令可以将新的代码提交给Gerrit进行审查:
$ git submit
如果Gerrit不是源远程,那么使用git submit< remote>作为适当的。
相关文章