Gerritコードレビュー、またはGithubのフォークアンドプルモデル?


64

チームとコミュニティで開発されるソフトウェアプロジェクトを開始しています。以前はgerritで販売されていましたが、今ではGithubのフォークおよびプルリクエストモデルは、より多くのツール、コミットを視覚化する方法、および使いやすさをほぼ提供しているようです。

両方について少なくとも少し経験がある人にとって、それぞれの長所と短所は何ですか?コミュニティ開発の可能性を残したいチームベースのプロジェクトにはどちらが良いでしょうか?

回答:


84

GerritのワークフローとGitHubのワークフローの主な違いは、変更のモデル化方法です。

Gerritでは、すべてのコミットは独立した変更です。Gerritはコミット間の関係を表示しますが、レビューはコミットごとに実行されます。大きな変更を小さな自己完結型のコミットに分解するのが得意なチームは、Gerritでより多くの成功を収める可能性があります。ただし、Gerritのモデルには特定のコミットに対する連続したリビジョンが含まれているため、以前のコミットを修正して再プッシュしたり、トピックブランチからのコミットセットを1つにまとめたりするなど、多くの開発者が慣れていないGitワークフローを促進しますコミット。

Githubでは、プルリクエストは2つのブランチ間の関係をモデル化します。Githubで期待されるワークフローは、1つ以上の変更をトピックブランチ(多くの場合、リポジトリのフォークであるが、必ずしもそうではない)にコミットし、そのブランチと「上流」ブランチの間にプルリクエストを作成します。この場合、レビューされているのは、レビューが継続するにつれて成長し続けるコミットのセットです。結果は一連の変更であり、変更が完了したらアトミックにマージできます。プルリクエストは、複数のコミットで実装できるより大きなスコープで変更を追跡するのに効果的です。プルリクエストは、同じブランチでフォローアップコミットを送信してレビューコメントに応答するなど、より多くの開発者が慣れているSCMワークフローもサポートします。

Githubの大きな利点は、Gerritと比較してGithubに精通している開発者の数です。GerritはGitパワーユーザーに人気がありますが、Gritを摩擦なく使用するには、中級または上級のgitの知識と、急な学習曲線の許容範囲が必要です。

Gerritの利点は、Gitとのより深い関係です。GithubプルリクエストはGitの標準データモデルから十分に削除されているため、プルリクエストを作成するにはGithubのWeb UIまたは独自のAPIを使用する必要があります。変更を作成および更新するためのGerritのインターフェイスは、gitプロトコル自体です。


8
マーティンに感謝します。それは興味深い答えです。私はしばらくの間、Gerritを見ることを意味してきましたが、それを棚上げすると思います。履歴の編集とコミットの縮小を促進する場合、それとは何の関係もありません。* 8 '(
マークブース

15
明確にするために(私は職場でGerritをよく使用しています)、ここでMartinが言うように、「Gerrit ... Gitのワークフローを奨励します...以前のコミットを修正して再プッシュする、または増大するコミットのセットをつぶすなど。 ..into a single commit」は正確です。私の説明では、@ MarkBoothの「編集履歴」に関するコメントは、マーティンが言ったことではありません。コミットの修正(まだGerrit上にありまだorigin / masterにマージされていない)には、「履歴の編集」含まれませ。実際、このワークフローは非常に効果的です。Mark Boothが言及している「悪い」編集履歴とは、編集された履歴をorigin / masterに再プッシュすることです。
likethesky

2
@liketheskyの明確化に感謝しますが、私は「文字列の編集」の文字通りの解釈を持っています。しかし、これはかなり厳格な解釈であり、他の少数の人が固執する解釈であることに気付きます。* 8 ')
マークブース14年

2
けっこうだ。:-)「明示的にコミットしなかったコンテンツを含むチェンジセット」の意味がわかりません。手の込んだ...私はあなたがしていることを前提としない(ローカル、またはリモートブランチを経由して、チームメンバー間で共有)あなたは決して一時的なコミットと言うことは、「WIP:これは我々が議論のアーチの問題を解決しようとするが、」、のようなコミットが続きますその問題に対する最終的なコミットメッセージとして、「問題123:復元力と水平スケーリングの容易さを高めるためにXYZをリファクタリングした」という、より役立つスカッシュ/修正。しかし、とにかく、もちろん、あなたが幸せになるような方法でgitを使用することを選択できます!
likethesky 14年

7
これは素晴らしい答えです。さらに、GitHubのプルリクエストは、より小さく、より反復的なコミットを促進し、多くの場合、作業成果物だけでなく作業プロセスを示すはるかに記述的なgitログになります。Gerritのコードレビューは、より大きく洗練されたコミットで、よりクリーンなリポジトリ履歴(実際のマージコミットはほとんどありません)を促進します。
トファー14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.