私の会社では、Git にGerrit Code Reviewを使用しています。コードの変更をプッシュするたびに使用するカスタムの呪文が与えられました。
git push origin HEAD:refs/for/my-branch-name
「my-branch-name」以外はそのままです。refs/for/
構文は私にはクレイジーに思えますが、これまで Git で見たものではありません。
git push
単独で上記と同じようにリポジトリを構成するにはどうすればよいですか?
私の会社では、Git にGerrit Code Reviewを使用しています。コードの変更をプッシュするたびに使用するカスタムの呪文が与えられました。
git push origin HEAD:refs/for/my-branch-name
「my-branch-name」以外はそのままです。refs/for/
構文は私にはクレイジーに思えますが、これまで Git で見たものではありません。
git push
単独で上記と同じようにリポジトリを構成するにはどうすればよいですか?
その構文はクレイジーではなく、完全な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エイリアス
次のように入力して、リモートのプッシュ参照仕様を更新できます。
git config remote.origin.push HEAD:refs/for/my-branch-name
すべてのブランチ (およびマスター) が gerrit で使用できるように構成されていることを確認するgit post-checkout フックを作成しました。うまくいくと思いますが、あなたのワークフローは私のものとは異なるかもしれませんので、スクリプトを読んで理解してから (難しいことではありません) 使用してください。
refs/for/....
Gerritが特定のブランチのコードレビューをトリガーして追跡するために使用する「魔法の」参照です。これはhttp://gerrit-documentation.googlecode.com/svn/Documentation/2.5.1/user-upload.htmlで文書化されています
Gerritが変更を取得してコードレビュープロセスを開始できるように、この参照にプッシュする必要があります。
コミットしただけではgit push origin master
、コミットはすでにマスターブランチにあるため、Gerritをバイパスします。Gerritの要点は、コードがmaster
(または何にでも)入る前に、コードがレビューされていることを確認することです。