ファイルやフォルダの比較ができてマージもできる、WinDiffを使い易くしたようなソフトWinMergeの日本語版
GUIな CVS, Subversionクライアントのお供にでもどうぞ。
バージョン | 日付 | ファイル | ソース |
---|---|---|---|
0.10902.2015.5 | 2015-03-01 | Frhed 32bit版(0.24MB) Frhed 64bit版(0.25MB) | ソース(Bitbucket) |
名前 | 日付 | ファイル |
---|---|---|
プラグインパック(32bit版)(要2.14.0+-jp-63以上) | 2018-04-29 | ダウンロード(0.28MB) |
プラグインパック(64bit版)(要2.14.0+-jp-63以上) | 2018-04-29 | ダウンロード(0.30MB) |
PortableAppsの一員としてWinMerge Portableが加わりましたが、そのWinMerge PortableのファイルをWinMerge日本語版のものに置き換えることでWinMerge日本語版がPortable版になります。
あるファイルから他者と自分が別々の変更を行った結果、2つのファイルができてしまったため、 他者が修正したファイルと自分が修正したファイルをマージして 一つのファイルに戻したいとします。このとき、修正前の元のファイルが残っていれば、他者ファイル、自分のファイルの3つのファイルを元に ある程度自動的に修正を1つのファイルにマージすることが可能です。 この3つのファイルから(自動的な)マージをすることは、3方向マージ(3way-merge)と呼ばれています。
自動的なマージは、他者の修正と自分の修正箇所が被っていない箇所で可能です。たとえば、 あるファイルが小説のテキストだったとして、他者は第一章の誤字・脱字を修正し、自分は第三章の誤字・脱字を修正した場合は、 お互いの修正が被っていないのでどちらの修正も自動的にマージすることができます。しかし、他者と自分が同じ箇所(行)に 異なる修正を行った場合は、どちらの修正を採用してよいのか自動的に判断することができません。このような状態は コンフリクト(衝突/競合)と呼ばれ、手作業で修正を行うことになります。
P4MergeやKDiff3,DiffMerge,TortoiseMerge のようなツールはこの3方向マージをサポートしており、 WinMerge日本語版でも今更ではありますが、2.14.0-jp-29以降から利用可能となりました。 (実現方法としては、本当はp4mergeの様な4ペイン形式にしたかったのですが、 今まで実装する気力がわいてこなかったのと、最近3ペイン形式でもよいかと考え直して、今のように実装してみました) とはいえ、現時点では、3方向マージに関して他のツールよりも優位な点は特になく、むしろ、3ファイル比較時の差分検出精度がおそらく GNU diffutils の diff3 コマンドと同等程度で他のツールと比べて比較的大雑把になっているため、 他のツールがコンフリクトだと検出しないところでも コンフリクトと検出することがあります。このため、他のツールではうまくいないことがある場合や、 他のツールになじめなかった場合は、WinMerge日本語版を使用してみてください。
WinMergeで元のファイルと他者のファイルと自分のファイルの3つのファイルを開き、
[マージ]メニュー→[自動マージ(Alt+Ctrl+M)]またはツールバーのを選択すると
コンフリクトしている箇所(他者と自分が同じ所を修正しているためどちらを採用してよいかわからない所)は除いて自動的にマージを行います。
WinMergeでは、現在アクティブになっているペインによってマージする方法を変えています。
他の3ペイン方式のマージツールの多くは、最初の中央(元ファイル)に他者と自分の変更をマージする方式を採用していますが、 私は2番目の右側(自分)に中央(他者)の変更をマージする方式でも良いかなと思っています。 前者だとマージされる変更が他者と自分の両方となるためマージ量がどうしても多くなってしまい、 マージ後に通知される変更の数にぎょっとしてしまって心理的によくないのと、元のファイルが書き換わらないため、 マージ後でも他者がどのような修正を行ったのかを見ることができるのと、 マージ前にどの箇所が自動マージされるのかが事前にロケーションペインで水色で表示されている箇所としてわかるためです。 逆に後者だとマージすると自分のファイルの内容が変更されるため、マージ前の自分のファイルの内容と比較できなくなったり、 元のファイルと自分のファイルが離れているため、元と自分との比較がしにくくなります。好みの方法を選んでください。
なお、自動マージで変更された内容を元に戻したい場合は、Ctrl+Zキーで元に戻すことができます。 また、コマンドライン引数(/al,/am,/ar)を指定することによって、WinMerge起動時に自動で自動マージを行うことができます。
自動マージでは、コンフリクトしている箇所はマージを行わずそのままの状態とするため、 手動でコンフリクト箇所を修正してください。
コンフリクトの箇所はロケーションペインで3つのバーの間が赤く表示されており、 自動マージ直後は、最初のコンフリクト箇所へ移動します。
次のコンフリクト箇所へ移動するには、[マージ]→[次のコンフリクト(Alt+Shift+Down)]または、ツールバーの アイコンをクリックしてください。
また、[マージ]→[前のコンフリクト(Alt+Shift+Up)]または、ツールバーの アイコンで前のコンフリクト箇所に移動することができます。
なお、コンフリクト箇所を未修正のまま保存しようとしても kdiff3 のように警告しませんので注意してください。 修正忘れが発生すると他者から俺の修正が見捨てられたと憤慨されることになります。
右側ペインにマージする例です。
左側:[元のファイル]、中央:[他者のファイル]、右側:[自分のファイル]の順番でファイルを開きます。右側ペインでマージを行うため、
右側ペインにフォーカスを当てた後、ツールバーのをクリックすると自動マージが行われます。
自動マージ後は、コンフリクトしている箇所(例では3番目の差異)を修正してください。この例では、例えば、return "cat";
を 他者の修正を尊重してreturn "dog and cat";
のように修正します。
バージョン管理ツールを使用して複数の人と同時に開発すると3方向マージが必要な状況がよく発生します。 たいていのバージョン管理ツールでは3方向マージ用のツールが指定できるようになっています。
C:\Program Files\WinMerge\WinMergeU.exe /e /ub /fr /ar /wl /wm /dl %bname /dm %tname /dr %yname %base %theirs %mine /o %merged
C:\Program Files\WinMerge\WinMergeU.exe /e /ub /fm /am /wl /wr /dl %tname /dm %bname /dr %yname %theirs %base %mine /o %merged
C:\Program Files\WinMerge\WinMergeU.exe /e /ub /fl /al /wm /wr /dl %yname /dm %tname /dr %bname %mine %theirs %base /o %merged
[merge-tools]
# 右側ペインでマージする場合(起動時自動マージしたくない場合は /ar を削除)
winmergeu.args = /e /ub /fr /ar /wl /wm /dl base /dm other /dr local $base $other $local /o $output
# 中央ペインでマージする場合(起動時自動マージしたくない場合は /am を削除)
# winmergeu.args = /e /ub /fm /am /wl /wr /dl other /dm base /dr local $other $base $local /o $output
# 左側ペインでマージする場合(起動時自動マージしたくない場合は /al を削除)
# winmergeu.args = /e /ub /fl /al /wm /wr /dl local /dm other /dr base $local $others $base /o $output
[Tools]→[Options]→[Diff]タブ で [Merge Tool]を Custom にし、 [Diff Command]に
C:\Program Files\WinMerge\WinMergeU.exe
[Arguments]に
-e -ub -fr -ar -wl -wm -dl base -dm remote -dr local $BASE $REMOTE $LOCAL -o $MERGED
を指定します。(右側でマージする例)
WinMergeはGPL2です。
WinMerge WinMerge本家
WinMerge Portable WinMerge をUSBメモリ等で持ち運べるようにしたもの
bitbucket bitbucket.org にあるWinMerge日本語版ソースリポジトリ
7-Zip 7-Zipのホームページ(日本語)
WinMerge 関連 MS-AccessのMDBファイルを比較するためのプラグインを公開されています。
UK-taniyama's Homepage MS-Wordファイルを比較するためのプラグイン等を公開されています。
xdocdiff WinMerge Plugin -Word、Excel、PowerPoint、pdfの比較・差分を見る- MS-Office等様々な形式のファイルを高速に比較できるプラグインを公開されています。
xdocdiffPlugin64 xdocdiff WinMerge Plugin の64bit版を公開されています。
Chocolatey gallery Chocolatey から WinMerge日本語版をインストールできるようしていただいています。
chocolateryがインストールされていれば、以下のコマンドでWinMerge日本語版がインストールできます。
cinst winmerge-jp
WinMerge日本語版に関する不具合連絡等は、こちらか、か、以下のメールフォームに記入するか、issueトラッカーへの登録をお願いします。