与Gerrit一起使用时,如何为Git配置特定的上游push refspec?

我正在使用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>作为适当的。

http://stackoverflow.com/questions/7101145/how-to-configure-specific-upstream-push-refspec-for-git-when-used-with-gerrit

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:与Gerrit一起使用时,如何为Git配置特定的上游push refspec?