在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