web-dev-qa-db-ja.com

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

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

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

64
user1366476

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

Gerritでは、すべてのコミットはそれ自体に依存する変更です。 Gerritはコミット間の関係を示しますが、レビューはコミットごとに実行されます。大きな変更を小さな自己完結型のコミットに分解することに長けているチームは、Gerritでより成功する可能性があります。ただし、Gerritのモデルには特定のコミットへの連続したリビジョンが含まれているため、以前のコミットを修正して再プッシュしたり、トピックブランチから増加するコミットのセットを単一に押しつぶしたりするなど、多くの開発者が慣れていないGitワークフローを奨励しますコミット。

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

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

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

85
Martin Atkins