1

私の会社では、Git にGerrit Code Reviewを使用しています。コードの変更をプッシュするたびに使用するカスタムの呪文が与えられました。

git push origin HEAD:refs/for/my-branch-name

「my-branch-name」以外はそのままです。refs/for/構文は私にはクレイジーに思えますが、これまで Git で見たものではありません。

git push単独で上記と同じようにリポジトリを構成するにはどうすればよいですか?

4

3 に答える 3

2

その構文はクレイジーではなく、完全なgit push構文です。あなたがgit pushそれ自体で行うとき、それは本当に次のようになります:

git push origin current-branch:refs/heads/current-branch

コードレビューにgerritを使用している可能性があるため、特定のブランチに直接プッシュするのではなく、gerritに変更について通知する必要があります。gerritはrefs/forその目的で領域を使用します。

gerritの新しいバージョンはとを使用refs/publishしてrefs/draftsいるので、それらも表示される可能性があります。

より便利なものが必要な場合は、エイリアスを簡単に作成してgit構成に追加できます。この質問をチェックしてください:HEAD:refs / for/masterのgitエイリアス

于 2012-12-20T00:22:57.620 に答える
2

次のように入力して、リモートのプッシュ参照仕様を更新できます。

git config remote.origin.push HEAD:refs/for/my-branch-name

すべてのブランチ (およびマスター) が gerrit で使用できるように構成されていることを確認するgit post-checkout フックを作成しました。うまくいくと思いますが、あなたのワークフローは私のものとは異なるかもしれませんので、スクリプトを読んで理解してから (難しいことではありません) 使用してください。

于 2013-01-10T20:04:26.640 に答える
0

refs/for/....Gerritが特定のブランチのコードレビューをトリガーして追跡するために使用する「魔法の」参照です。これはhttp://gerrit-documentation.googlecode.com/svn/Documentation/2.5.1/user-upload.htmlで文書化されています

Gerritが変更を取得してコードレビュープロセスを開始できるように、この参照にプッシュする必要があります。

コミットしただけではgit push origin master、コミットはすでにマスターブランチにあるため、Gerritをバイパスします。Gerritの要点は、コードがmaster(または何にでも)入る前に、コードがレビューされていることを確認することです。

于 2012-12-20T00:22:31.177 に答える