2016-05-23 255 views
0

我們(git/gerrit newbs)試圖使用具有特徵分支的gerrit。我們試圖實施的工作流程如下:Gerrit跟蹤功能分支?

  1. 用戶創建一個功能分支,用git push -u origin users-branch直接將其推送到遠程回購(無評論)。
  2. 由於變更堆積在主分支中,用戶確實需要git pull --rebase origin master(需要--rebase,否則git創建合併提交,並且合併提交不能通過gerrit推送)。
  3. 用戶繼續將其更改推送到遠程回購git push --force origin users-branch--force需要,因爲在上一階段--rebase;我正在尋找更好的方法來執行此操作)。
  4. 其他用戶可以通過推送自己的更改來爲功能分支做出貢獻。
  5. 當功能準備就緒後,用戶將其推入git push origin HEAD:refs/for/master進行查看。

最後一步不起作用,因爲在任何階段推送給gerrit的提交都無法再次推送。

gerrit手冊建議修改您想要再次提交的提交。這看起來很複雜且容易出錯。

如果用戶從不將他的更改推送到遠程回購,這一切都可以正常工作,因爲gerrit在被推送審查之前不會看到更改。但這正是我們不喜歡的。

對功能分支使用不同的回購似乎是可能的,例如gerrit從不會看到重複的變更ID,但這又似乎是不必要的複雜化。

有沒有辦法做到我們想要的安全和優雅?

+0

*合併提交不能通過gerrit推送*您可以重新配置這個。但是,也許你不想要那個,我會理解的 –

+0

如果你不想(大多數)承諾被審查,那麼使用gerrit有什麼意義?我認爲這是它最大的優勢之一,不允許任何人推動任何東西,除非它已被審查 –

+0

@TimCastelijns我希望所有提交到主和發佈分支進行審查,但不是功能分支。 –

回答

1

如果您運行的是至少Gerrit 2.11,則可以使用fix代替issue 1195,並啓用create-new-change-for-all-not-in-target選項至take into account target branch when determining new changes to open

+0

謝謝,這可能是。但是這個選項在項目設置中是灰色的(實際上所有選項都是)。由管理員禁用? –

+0

這聽起來好像沒有任何您所在的組具有項目的「所有者」權限。 – sschuberth

+0

是的,顯然我擁有git repo的完全權限,但不適用於位於其上的gerrit項目。要求管理員改變它,只要我有機會測試它就會報告。 –

0

您正在嘗試使用拉請求工作流(與Github,Bitbucket等一樣)在Gerrit上工作。

我們剛剛創建了一個格里特客戶端工具來做到這一點:

https://github.com/Cosium/vet

隨着vet,你可以有功能分支,你可以添加任意數量的提交沒有修訂或重訂的特性分支。