2

私は現在、中央コード レビュー システムとして Gerrit を実装しています。Gerrit の内外を理解しようとしている過程で、以下の文に行き詰まりました。Gerritのドキュメントから取得:

Gerrit は SSH および Git サーバー スタック全体を独自のプロセス空間内に実装するため、Gerrit は、リポジトリの更新方法、およびgit push エンド ユーザーまたは によって呼び出されたクライアントに送信される応答を完全に制御しますrepo upload。これにより、Gerrit はrefs/for/*、新しい変更の送信やrefs/changes/*変更の置換などの魔法の参照を提供できます。

上記のステートメント、特に「Gerrit は SSH および Git サーバー スタック全体を独自のプロセス スペース内に実装しているため」という文は何を意味するのでしょうか? 関連する質問を検索してみましたが、見つけた最も近いものはWhy is git push gerrit HEAD:refs/for/master used instead of git push origin masterですが、サーバースタックの実装方法について十分な説明がありませんGerrit が魔法の参照を提供できるようにします。同様の質問が実際に以前に行われた場合は、お詫び申し上げます。ありがとうございました!

4

1 に答える 1

0

「通常の git」でも魔法の refを実装するのは難しくありません。プッシュのターゲット ブランチを認識するリモート リポジトリを実装pre-receiveまたはupdateフックし、必要なことを実行するだけです (たとえば、プッシュを別のブランチに保存するなど)。

実装の詳細はわかりませんが (もっと洗練されていると思います)、これは Gerrit のものと同じ動作です。にプッシュしrefs/for/masterて、ブランチに保存しますrefs/changes/66/5066/2(たとえば)。

いくつかの例があります。

于 2016-04-15T06:27:41.943 に答える