在Gerrit中处理特性分支时,我想将我的特性分支更改推送到主模块(以便其他人可以使用它)以及我的功能分支(所以我可以继续努力,而不需要对主人进行更改),但是一旦我推到一个分支,我就不能将gerrit推向另一个分支。Gerrit将相同的变更集推送给主分支和分支
例如,如果我git push HEAD:refs/for/master
那么,随后的git push HEAD:refs/for/feature
将导致:
Total 0 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done
To ssh://gerrit.server/repo.git
! [remote rejected] HEAD -> refs/for/feature (no new changes)
error: failed to push some refs to 'ssh://gerrit.server/repo.git'
当然也有新的变化,但只是针对不同的分支。
目前,我有两个选择:
推到特性分支,得到它的测试,审查提交&,然后手动将它并入主控和获取测试,审查提交的&。
- 这里的问题是,如果其他的变化都合并到主我拉着主人之间做合并和我的合并提交提交,那么我们最终得到一个额外的不必要的合并。
推主,得到它的测试,审查提交&,然后让我们的格里特大师更新格里特特性分支裁判在那里它需要。
- 除了被黑客攻击之外,有可能导致严重错误,这不是你想让别人经常去做的事情。
- CI服务器仅在主设备上运行测试,不在分支上。
这些解决方案都不是很令人满意。
理想我想只推到功能分支,然后推到主和有格里特意识到,第二个推动是让提交(或提交)合并,以掌握;或者可选地,推送到主服务器然后推送到特性分支,并让gerrit意识到这只是一个请求来快速转发特性分支引用。不幸的是,我还没有找到任何方法来做到这一点。
是否有一种干净的方式将更改或一组更改推送到它们的功能分支和主控?
注意,我们有合并,基于工作流程,而不是基于重订工作流程,所以它依赖于重订工作流程的答案会不会对我们有用。
在发现Selecting Merge Base我以为base
选择是什么,我一直在寻找,但是当我尝试git push origin HEAD:refs/for/master
其次是git push origin HEAD:refs/for/feature%base=$(git rev-parse origin/feature)
推到功能分支以同样的方式失败,好像我刚做git push origin HEAD:refs/for/feature
即它说[remote rejected]
由于(no new changes)
。
我们也试图使在格里特项目配置create-new-change-for-all-not-in-target
选项,但它在完全相同的方式失败:
$git commit -am "New commit for feature and master."
[fix 1234567] New Commit
19 files changed, 19 insertions(+), 19 deletions(-)
$git push origin HEAD:refs/for/master
Counting objects: 48, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (25/25), done.
Writing objects: 100% (25/25), 2.20 KiB, done.
Total 25 (delta 24), reused 0 (delta 0)
remote: Resolving deltas: 100% (24/24)
remote: Processing changes: new: 1, refs: 1, done
remote:
remote: New Changes:
remote: http://gerrit.server/1234 New commit for feature and master.
remote:
To ssh://gerrit.server/repo.git
* [new branch] HEAD -> refs/for/master
$git push origin HEAD:refs/for/feature
Total 0 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done
To ssh://gerrit.server/repo.git
! [remote rejected] HEAD -> refs/for/feature (no new changes)
error: failed to push some refs to 'ssh://gerrit.server/repo.git'
我也试图推动新特性分支,然后再mastedr,但如预期的那样,这导致相同的拒绝。
您是否尝试过这种方法:先推送到第一个分支,然后签出第二个分支,将第一个分支合并到它中,然后推送。我认为问题在于你试图推送到不同于当前名称的分支。例如:在featureX上工作并推动主人 – CodeWizard