相关疑难解决方法(0)

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

我正在使用Gerrit Code Review设置Git,并且正在寻找一种方法,为可能不熟悉Git的用户提供必要的Git命令.

我目前用于启动新功能分支的命令基本上是(假设Gerrit是origin):

git checkout baseline
git pull
git checkout -b work1234
git push -u origin work1234
Run Code Online (Sandbox Code Playgroud)

这将启动一个新的工作包work1234从一些baseline分支,最后的推动在Gerrit中创建分支并设置上游.所以.git/config看起来像:

[branch "work1234"]
        remote = origin
        merge = refs/heads/work1234
Run Code Online (Sandbox Code Playgroud)

现在,Gerrit希望将新的提交审查推送到特殊的refspec,refs/for/work1234例如.我可以手动执行以下操作:

git push origin work1234:refs/for/work1234
Run Code Online (Sandbox Code Playgroud)

我想要做的是找到一些设置方法,.git/config以便plain git push将当前分支推送到Gerrit所需的远程refspec.我看过以下几个git config方面:

  • branch.<name>.* - 似乎没有任何特定的选项来设置push refspec
  • push.default- 我想要upstream在这里
  • remote.<name>.push- 我refs/heads/*:refs/for/*在这里试过但git push总是想在这种情况下推送所有本地分支,而我只想要当前的分支

如果我不能让Git的本身做到这一点,我会写一个小包装脚本,完全指定refspecs.但是,如果Git能够本地推向正确的位置会更好.

git push gerrit refspec

17
推荐指数
1
解决办法
8839
查看次数

通过跟踪分支向Gerrit"git push"

推动对Gerrit的更改需要相当深奥的命令

git push origin HEAD:refs/for/branchname

我们编写了这个脚本,但我正在寻找一种本地化的方法.使用git强大的配置,看起来我可以预先配置它的大部分[1],这样就git push足够了......差不多.我坚持参考remote.<name>.pushrefspec.

我已经可以创建一个跟踪主题分支,以便git pull(没有其他参数)将更改从上游远程转移到我的主题分支.但是对于Gerrit,push和fetch引用refspecs是不一样的:一个从中获取(合并)refs/heads/trackbranch,但是一个推送到refs/for/trackbranch[2]

我可以配置pushrefspec remote.<name>.push,但语法非常基本:如果我放 push = refs/heads/*:refs/for/*

然后,这将尝试推动我的t-foo主题分支refs/for/t-foo.但是git有t-foo跟踪的信息trackbranch.我可以定义一个refspec,以便git自动尝试将任何内容推t-foo送到它refs/for/trackbranch吗?

我们目前正在使用脚本来执行此操作,我想我可以为每个主题分支定义推送refspec(可能通过更多脚本).我希望有一种本地的git方式,这样我们就不需要为我们的团队依赖更多的自定义内部脚本了.

[1]通过git checkout origin/upstream_branch -b topic_branch在现有分支中定义跟踪分支git branch --set-upstream-to origin/upstream_branch

[2]推动refs/for/*创建变更集以供审核.有了适当的权限,人们可以推动refs/heads/*绕过审查,但这否定了Gerrit的大部分观点.

git push gerrit refspec

5
推荐指数
1
解决办法
1021
查看次数

标签 统计

gerrit ×2

git ×2

push ×2

refspec ×2