それが話題になる前に、私はすでにこのトピックに関するいくつかのスレッドを見てきました。
開発グループを (Subversion から) Mercurial に切り替えることを検討しています。その前に、通常の賛否両論のリストを作成しています。
私の「長所」の 1 つは、マージが Mercurial の方が優れていることですが、これまでのところ、説得力のある証拠を見つけることができていません。つまり、HgInit.com で確認できなかった声明があります。
たとえば、関数を少し変更してから別の場所に移動した場合、Subversion はそれらの手順を実際には覚えていないため、マージの時期になると、新しい関数が突然現れたと考える可能性があります。 . Mercurial はこれらのことを個別に記憶します: 関数の変更、関数の移動。つまり、その関数も少し変更した場合、Mercurial が変更を正常にマージする可能性が高くなります。
これは非常に魅力的な機能ですが、私が知る限り、それはただの熱気です。上記の記載については確認できませんでした。
Mercurial リポジトリを作成し、Hello World を実行してからクローンを作成しました。1 つでは、関数を変更し、コミットしてから移動し、コミットしました。もう1つは、関数に別の出力行を追加してコミットしただけです。
マージすると、Subversion を使用した場合と基本的に同じマージ競合が発生します。
Mercurial はファイルの名前変更をより適切に追跡できること、および DVCS にはマージ以外にも利点があることは理解していますが、この例に興味があります。ジョエル・スポルスキーはここに基地外ですか、それとも何か足りないのですか?
私はこの分野の経験はありませんが、Mercurial はより多くの情報を保持しているため、理論的にはマージがうまくいくようです (開発者も頻繁にチェックインを行った場合)。たとえば、Mercurial が複数の変更を比較してコンテキストの変更を取得することは実行可能であると考えています。たとえば、関数を変更し、チェックインし、関数を移動し、チェックインすると、Mercurial はこれら 2 つの部分を関連付けます。
ただし、Mercurial のマージは、追加された情報を実際に利用していないようで、Subversion と同じように動作しているようです。これは正しいです?