チームとコミュニティで開発されるソフトウェアプロジェクトを開始しています。以前はgerritで販売されていましたが、今ではGithubのフォークおよびプルリクエストモデルは、より多くのツール、コミットを視覚化する方法、および使いやすさをほぼ提供しているようです。
両方について少なくとも少し経験がある人にとって、それぞれの長所と短所は何ですか?コミュニティ開発の可能性を残したいチームベースのプロジェクトにはどちらが良いでしょうか?
チームとコミュニティで開発されるソフトウェアプロジェクトを開始しています。以前はgerritで販売されていましたが、今ではGithubのフォークおよびプルリクエストモデルは、より多くのツール、コミットを視覚化する方法、および使いやすさをほぼ提供しているようです。
両方について少なくとも少し経験がある人にとって、それぞれの長所と短所は何ですか?コミュニティ開発の可能性を残したいチームベースのプロジェクトにはどちらが良いでしょうか?
回答:
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プロトコル自体です。