git
のマージ競合解決は、他の SCM (CVS、Subversion など) やスタンドアロンのマージ ツールよりも本質的に効率的ですか? もしそうなら、なぜですか?
明確化:ここで私はアルゴリズム自体にもっと興味があります - それは単純な diff3 メソッドと何か違うのですか?
一部のツールはその点でよりスマートであると主張しています (例: Guiffy)。git マージ ツールとしてプラグインする価値はありますか? ファイル内またはファイル間で移動されたテキストの断片を理解する上で、git はよりスマートですか? (うるさい衝突を報告するというより.. ライナスの話から漠然とした印象がありました)。
背景: を使用して大規模なマージを行ったgit-svn
ところ、プレーン (追跡なしの最初のマージ) よりも半分の競合が発生しましたsvn merge
..その理由を理解したいと思います。
これらは似たような Q/A ですが、プロセスの全体像と、マージがより自然にどのように適合するかについてのものです。そのために、git
(分岐のみではなく)「マージ用に最適化」されていることは、実際には次のことを意味しますか?
- 手動の競合が少ない -- より優れた自動解決アルゴリズム (例: 名前の変更が適切に処理される)
- より安全な操作 -- 自動解決により、より多くの/実際の競合のみが残り、誤ったアラートが少なくなります
- より高速な操作 -- たとえば、リーン & ミーン オブジェクト モデルによるもの
- より優れたツール -- DAG ベースのマージ トラッキング、マージツール、ヒストリー クエリ/ビジュアライゼーション、スタッシュ、リベースなど、エクスペリエンスの負担を軽減します。
- 他の何か
- 上記の組み合わせ
? 今、私は主に1と2に興味があります。