6

私はGitとMercurialの経験が数日しかなく、プログラミングの経験もあまりありません。

過去数日間、私は2つを比較する多くの投稿を読みました。私が読んだものと私のテストに基づいて、私は次の結論を得る:

Gitの名前変更は100%自動ですが、100%正確ではありません。名前の変更を推測するのはアルゴリズムに依存しています。エンドユーザーは、たとえそれが完全に間違っていたとしても、その決定を変更することはできません。

Gitの方法は99%のケースで問題ないかもしれませんが、その1%は頭痛の種になるでしょう。リファクタリングが多すぎるとファイル履歴が失われるリスクがあるため、コードをリファクタリングすること(クラス名とコンテンツを同時に変更すること)をためらうことになります。

Mercurialは、常にVisual Studio内で名前を変更/移動し、VisualHGがインストールされている限り、100%自動および100%正確にすることができます。VisualHGは、移動と名前変更を正確かつ自動的に追跡する必要があります(現在、VisualHGにはバグがあります-ファイルの名前が変更されない場合プロジェクト間で移動します)。また、エンドユーザーは、間違いを犯した場合にその決定を変更できます。

Visual Studioがない場合でも、TortoiseHgの[コピー/名前の変更の検出]ウィンドウを使用できます。類似性のパーセンテージを設定し、Mercurialに名前の変更を自動的に検出するように依頼できます。間違えた場合は訂正する機会があります。

私の結論は正しいですか、それとも間違っていますか?

参照:

GitとMercurial-比較と対比

4

2 に答える 2

6

ここで説明されている違いを見ることができますが、ほとんどの場合あなたは正しいです。Mercurialには「実際の」名前変更を行うコマンドがrenameありますが、Gitにはあります。また、MercurialはGitの動作を模倣し、名前の変更を推測できるようです。これは非常に優れた機能です。経験から、Gitの名前変更検出アルゴリズムは、多くの場合、間違った決定を下します。特に、ファイルをコピーして2つのコピーを少し変更すると、ほとんどの場合、間違った決定になります。mvmvrmadd

于 2011-05-11T00:28:44.937 に答える
4

ファイルの名前変更を追跡するMercurialの機能は、あなたが思っているほど完璧ではないと思います。私はGitの経験はあまりありませんが、Mercurialについては少しは知っています。ファイルの名前変更は、hg view「おもしろい」ことを何もしていなければ(理解している)、状況によっては問題なく機能するようです(やや頻繁に発生するようです)。

そして、Gitは、少なくとも評判では、必要に応じて履歴に低レベルの変更を加えることができるようになっています。

于 2011-05-11T00:27:57.083 に答える