大規模なリポジトリ(Linuxカーネルなど)のメンテナが、次のpu maintなどの「重要な」ブランチをどのようにマージできるのか疑問に思っています。マージの競合を解決する方法を1人で知るにはどうすればよいですか?そのような重要なブランチは、ソースツリーのさまざまな部分にいる多くの異なる人々からの多くのコミットによって分岐した可能性があると思います。このような2つのブランチのマージは、1人の担当者が行う必要があるため、特定の競合の分野の専門家である人々が解決するために、競合を分割することはできません。
3 に答える
Linuxカーネルが含まれる非常に大規模なプロジェクトの場合、関係者間の膨大な量のコミュニケーションと調整が必要になります。
答えは、「どのマージが競合するかを確認する」および/または「どのコンパイラエラーが発生するか」ではありません。競合が発生した(または発生する)理由を事前に知る必要があります。他に誰が自分に影響を与える変更を加えているのかわからない場合は、事前に調べて調整してください。ソースコードマネージャーは、何が起こったのか、誰がそれをしたのかを知るのに役立ちますが、目標は、最初から予期しない問題を回避することであり、最初に行うべきではない変更を行った人の後にクリーンアップする必要はありません。
Linusのような人が関与することの利点は、問題が発生する前に問題を回避するのに役立つカーネルの全体像を把握できることです。あなたの質問はまた、タイピスト、プログラマー、ソフトウェアエンジニアの違いの問題を提起します。
ソフトウェアプロジェクトの決定的な仕事は、フレデリックブルックスによる「人月の神話」です。彼が1975年に大規模なプロジェクトで特定したのと同じ問題(彼はOS / 360のアーキテクトでした...)は今日でも当てはまります。それを購入。それを読んで。それを覚えなさい。
Linusは「簡単な」マージの競合を解決すると思います。物事が困難になった場合、彼はパッチ提出者に、関係するサブシステムの副官と一緒に物事を理解するように頼みます。Linusがプロジェクトをどのように実行するかについて、Stackoverflowに質問があります。
マージエラーが発生した場合は、両方の同じファイルを編集したことを意味します。つまり、そのファイルの内容を知っているか、とにかくしてはいけないことをしたことを意味します。
これが発生した場合はhuman A
、別のにプッシュするように指示し、その新しい自分との競合を解決しbranch x
ましょう。にマージします。human B
branch x
branch x
master