変更を Gerrit にプッシュするには、やや難解なコマンドが必要です
git push origin HEAD:refs/for/branchname
これをスクリプト化しましたが、これをネイティブに行う方法を探しています。git の強力な構成を使用すると、そのほとんどを事前に構成できるように見えます[1]。それだけgit pushで十分です...ほぼ。私はremote.<name>.pushrefspecにこだわっています。
トラッキングトピック ブランチを既に作成できるので、 git pull(他のパラメーターなしで) アップストリーム リモートからトピック ブランチに変更をプルできます。ただし、Gerrit では、プッシュとフェッチの refspec は同じではありません。1 つは からフェッチ (マージ) しますが、もう 1 つは[2]refs/heads/trackbranchにプッシュします。refs/for/trackbranch
pushでrefspecを構成できますremote.<name>.pushが、構文は非常に基本的です。
push = refs/heads/*:refs/for/*
t-foo次に、トピック ブランチを にプッシュしようとしrefs/for/t-fooます。しかし、git にt-fooは追跡している情報がありますtrackbranch。t-foogit が自動的に refspec をプッシュしようとするようにrefspec を定義できますrefs/for/trackbranchか?
現在、これを行うためにスクリプトを使用しており、トピック ブランチごとにプッシュ refspec を定義できると思います (おそらくスクリプトを追加することで)。これを行うためのネイティブの git の方法があることを願っています。これにより、私たちのチームがよりカスタムの社内スクリプトに依存する必要がなくなります。
git checkout origin/upstream_branch -b topic_branch[1] 既存のブランチと一緒に、または既存のブランチ内で追跡ブランチを定義することによってgit branch --set-upstream-to origin/upstream_branch
[2] にプッシュするとrefs/for/*、レビュー用の変更セットが作成されます。適切な権限があれば、プッシュしrefs/heads/*てレビューを回避できますが、それでは Gerrit のポイントのほとんどが無効になります。