1

ファイルの名前変更をコミットし、extdiff を使用して Beyond Compare または kdiff3 で差分を表示すると、両側に 2 つの異なるファイルが表示されます。

Beyond Compare を使用すると、各側から任意のファイルを手動で選択して比較できますが、名前の変更が多い場合 (つまり、リファクタリングのために Java パッケージ名を変更する場合) は非常に面倒です。

その理由は理解できます。extdiff は、diff ツール用に 2 つの一時スナップショット ディレクトリを作成するだけです。

だから私の質問は、古いファイル名と新しいファイル名を比較するように、名前の変更を差分ツールに伝える方法はありますか?

これはおそらく各差分ツールに固有です。それで、それをサポートするツールを知っているなら、教えてください。

4

2 に答える 2

1

注意これは TortoiseHg との差分でのみ機能します。

Beyond Compare 3 を使用して Mercurial インストールを構成した方法は次のとおりです。

(注: これらは差分とマージに関連するオプションのみです。同じセクションの一部で他のオプションが必要な場合もあるため、追加または変更のみを行い、古いセクションをクリアして以下のものに置き換えないでください)

[うい]
マージ = bc3m

【拡張子】
extdiff=

[拡張差分]
cmd.bc3d = C:\Program Files (x86)\Beyond Compare 3\bcomp.exe
opts.bc3d = /lro

[マージツール]
bc3m.executable = C:\Program Files (x86)\Beyond Compare 3\bcomp.exe
bc3m.args = $local $other $base $output /automerge /reviewconflicts /closescript /lro /rro /title1="左の親" /title2="右の親" /title3="共通ベース" /title4="マージされた出力"
bc3m.priority = 1
bc3m.premerge = True
bc3m.gui = 真

【亀頭】
vdiff=bc3d

これは今:

  • 可能であれば自動マージし、マージの競合がない限りマージ GUI を表示しません
  • 名前を変更したファイルの diff では、左側に古いファイル名が表示され、右側に新しいファイル名が表示されます (ファンキーな一時ディレクトリ名ですが)

重要な注意: マージ ツールと差分ツールに同じ名前を使用しないでください (両方の bc3 など)。関連するツールを混乱させ、BC の起動画面にパントするだけです。そのため、マージ ツールの名前は bc3m、差分ツールの名前は bc3d です。

また、組み込みの beyondcompare ツールの構成が正しくないように見えるため、使用を中止したことにも注意してください。特に、組み込みツールを使用すると自動マージ部分が発生しませんでしたが、今ではうまく機能しています。また、組み込みツールを使用して、名前を変更して差分を視覚化すると、ディレクトリ比較が表示されるか、必要な比較の種類を選択できる BC の起動画面にパントされます。

そのため、最終的には、適切なオプションを見つけてすべてを自分で設定するまで実験しました.

于 2010-11-17T18:17:41.977 に答える
0

名前の変更を処理するには、典型的な scm が持つ歴史を掘り下げる必要があります。特に Mercurial のような DVC。それが、名前の変更を処理できる方法です。

興味深い点として、Git は名前の変更を追跡せず、コンテンツを操作し、名前の変更は重要ではないという事実があります。

差分ツールは変更の調査を処理できますが、その中のファイルについては何もわかりません。また、ファイルの名前が変更されたかどうかを判断するために、以前の履歴を使用するのも誤りです。通常、外部差分ツールはコンテンツを検査するため、ファイルを提供するタスクはユーザーに残ります。

ただし、Mercurial は名前の変更を追跡します。名前が変更されたファイルを追跡するために使用できるこの拡張子を参照 してください。これを使用して、比較する適切なファイル名を外部の差分ツールに提供できます。

于 2010-11-17T17:53:13.497 に答える