6

アップストリームでのレビュー保留中のいくつかの変更を含むトピック ブランチをリベースすることは可能ですか? すべてのレビュー コメントなどを保持したいが、アップストリームで行われた最新の変更も保持したい。

次のワークフローについて考えました(機能するかどうかはわかりません):

  • アップストリームからの最新の変更に基づいてローカル トピック ブランチをリベースします。
  • ローカル トピック ブランチの新しいコミットを (レビューのために gerrit にプッシュされたコミットなしで) 強制的に gerrit の refs/heads/thetopicbranch にプッシュし、gerrit のブランチのコミットを上流からの新しい変更に置き換えます。
  • ローカル トピック ブランチ ヘッドをレビューのために gerrit にプッシュします。つまり、HEAD:refs/for/thetopicbranch です。これにより、レビューが必要な変更がプッシュされ、変更 ID によって既にプッシュされているコミットと gerrit が一致することが期待されます。

同じですが、git コマンドで (すべてローカル トピック ブランチで行われます):

  • git rebase アップストリーム
  • git push gerrit:project `git マージ ベース アップストリーム localtopicbranch`:refs/heads/thetopicbranch -f
  • git push gerrit:project HEAD:refs/for/thetopicbranch

このスキーマは機能しますか?

4

1 に答える 1

0

確かに、Gerritで保留中の他のアップストリームの変更の上にいくつかのトピックブランチの変更を置くのはかなり簡単です。私が通常使用するワークフロー:

  • 親として必要なアップストリームの変更をダウンロードします。通常、これらの変更に対して新しいパッチセットを作成する必要はないため、Gerritからコピーして貼り付けることができる「gitcheckout」コマンドを使用します。他のコマンド(pullおよびcherry-pick)を使用して、アップストリームの変更がアップロードされてから他の開発が行われている場合は、新しいコミットを作成します。
  • プルダウンしたアップストリームの変更の上に、必要な変更をチェリーピックします。gerritからgitcherry-pickコマンドをコピーして貼り付けます
  • 経由でgerritにアップロードgit push <server> HEAD:refs/for/<topicBranch>
于 2012-07-20T16:54:02.380 に答える