Programmers.SEに関するいくつかの質問に対するいくつかの「なぜDVCSが優れているのか」の回答を読むと、大規模なプロジェクトではコミットレースがないため、一般的にDVCSの方が優れていると言われているようです。IEコミット、期限切れなので更新、コミット、期限切れ、コミット、まだ期限切れなど.
DVCSは、プッシュの概念でこれを制限します。しかし、非常に大規模なプロジェクトでは、特に1日の終わりに「プッシュレース」が行われることはないでしょうか。私はGitでこれがすべての定数分岐によっていくらか改善されることを知っていますが、Mercurialでは分岐せず、新しいヘッドを作成します。
私が見る問題
おなじみですか?
これは、非常に大規模で人気のあるMercurialリポジトリの実際の問題ですか?誰もがその日の最後のプッシュを行うとき、会社の内部はどうですか?
DVCSを使用する大規模なオープンソースプロジェクトのほとんどは、プッシュの代わりに「プルリクエスト」を使用します。つまり、ユーザーがプロジェクトをブランチからプルするように要求し、プロジェクトはこれらのプルリクエストを任意の順序で実行することを選択できます。 、もしあれば。これにより、名前を付けた「プッシュレース」が不要になります。
他の会社では私はプロセスを保証することはできませんが、私が働いている場所ではこれは問題ではありません。
ケースに取り組んでいるときは、リポジトリ全体のブランチに取り組んでいるので、プッシュリクエストはメインバージョンのリモートバージョンに送信されます。 (終了した)変更をトランクに統合する場合は、トランクをロードし、プル、マージ、プッシュします。
たまに(非常にたまに)2人が同時にこれをしようとします(通常は何らかの誤解のため)。この場合、「負けた」人は誰でも、再プル、マージ、プッシュする必要があります。中央リポジトリにコミットするための午後5時のラッシュは存在しないため、概要を示した問題は実際にはありません。
それがDVCSの美しさです。分岐は簡単なので、誰もが自分の分岐で作業できます。
[〜#〜]編集[〜#〜]
ああ、私はあなたの「マーキュリアルではあなたは枝分かれしない...」というコメントに気づきました:はい、あなたはそうします。必ずしもそうする必要はありませんが、そうするのはとても簡単であり、そうすることの利点はそうするよりもはるかに重要であるので、単にリポジトリをブランチ化する傾向があります。