[thg] TortoiseHg と組み合わせて使う GUI のマージツールは何がおすすめでしょうか?

250 views
Skip to first unread message

ohira

unread,
Feb 7, 2017, 8:11:22 PM2/7/17
to mercurial-ja
いつもお世話になっております。
おおひらです。

質問
windows環境で日本語を含むソースを扱う場合に
TortoiseHg と組み合わせて使用するGUIマージツールは何がおすすめでしょうか?


状況説明
thg と WinMerge 日本語版の組み合わせで使用しているのですが、
この組み合わせで自動マージが行われるべき箇所で行われない場合が
あることがわかりました。
今のところ気がついた箇所は二箇所のみなのですが、他の箇所でも
同様の問題が発生している可能性が懸念されます。
winmergeで自動マージが行われなかった部分もマージツールを
P4merge, Kdiff3 に切り替えれば自動マージが行われることがわかりました。

検索してみると
 p4merge,kdiff3どちらも日本語の対応に問題がある
 Kdiff3についてはもうメンテナンスされていない
という問題があるようです。

入門TortoiseHg にもkdiff3では日本語の編集がうまく機能しない場合があるとの記述がありました。

kdiff3はTortoiseHg に同梱されているので、TortoiseHGは最近でもバージョンアップを
繰り返しているので、kdiff3もメンテナンスされているのではないかと期待したのですが
自分が使っている割と新し目のthgでも付属のkdiff3は0.9.96aという2012年ぐらいのものでした。
これは2014でメンテナンスが止まっている0.9.98より古いものっぽいです。








ohira

unread,
Feb 7, 2017, 8:18:29 PM2/7/17
to mercurial-ja
自分が現在使用中のwindows用のmercurialとmergeツールのバージョンは

TortoiseHg バージョン 4.0.1

 WinMerge Version 2.14.121+-jp-121 japanese Unicode X86



Katsunori FUJIWARA

unread,
Feb 10, 2017, 6:02:53 AM2/10/17
to mercurial-ja
藤原です。

2017年2月8日 10:11 ohira <shin....@gmail.com>:

> いつもお世話になっております。
> おおひらです。
>
> 質問
> windows環境で日本語を含むソースを扱う場合に
> TortoiseHg と組み合わせて使用するGUIマージツールは何がおすすめでしょうか?

TortoiseHg インストール先の hgrc.d/MergeTools.rc に設定が記載され
ているツール群に関しては、既に確認済みでしょうか?

オープンソース系の実装は、開発の活性度合にばらつきがあるものの、
meld とかは現在も開発が続いているみたいですから、試してみる価値は
あるかと。

BeyondCompare とか Araxis Merge, UltraCompare, CodeCompare あたり
は商用製品ですが、一応評価版も提供されてなかったかな?


> 状況説明
> thg と WinMerge 日本語版の組み合わせで使用しているのですが、
> この組み合わせで自動マージが行われるべき箇所で行われない場合が
> あることがわかりました。
> 今のところ気がついた箇所は二箇所のみなのですが、他の箇所でも
> 同様の問題が発生している可能性が懸念されます。
> winmergeで自動マージが行われなかった部分もマージツールを
> P4merge, Kdiff3 に切り替えれば自動マージが行われることがわかりました。

kdiff3 は「無理やり頑張って衝突を解消」する傾向があるみたいで、隣
接・同一行の変更で、Mercurial の内部マージ実装 (internal:merge) だ
と衝突とみなされる状況でも、「衝突無し」として振る舞うケースが多々
見られました。

以前 Mercurial のハンズオン向けに、マージ~衝突解消~コミットの流
れを説明する資料・元ネタリポジトリを作成した際に、10行程度の物凄く
単純なサンプルファイルで確認できた挙動です。

この辺は好みの問題もあると思いますが、私個人は衝突扱いにしてほしい
派なんですよねぇ。

「自動マージが行われるべき箇所」というのが、どういった状況かわかり
ませんが、kdiff3 がこのような挙動をとり得る、という点には留意して
おいた方が良いかと。


> 検索してみると
> p4merge,kdiff3どちらも日本語の対応に問題がある
> Kdiff3についてはもうメンテナンスされていない
> という問題があるようです。
>
> 入門TortoiseHg にもkdiff3では日本語の編集がうまく機能しない場合があるとの記述がありました。
>
> kdiff3はTortoiseHg に同梱されているので、TortoiseHGは最近でもバージョンアップを
> 繰り返しているので、kdiff3もメンテナンスされているのではないかと期待したのですが
> 自分が使っている割と新し目のthgでも付属のkdiff3は0.9.96aという2012年ぐらいのものでした。
> これは2014でメンテナンスが止まっている0.9.98より古いものっぽいです。

--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

ohira

unread,
Feb 15, 2017, 3:17:53 AM2/15/17
to mercurial-ja

> 質問
> windows環境で日本語を含むソースを扱う場合に
> TortoiseHg と組み合わせて使用するGUIマージツールは何がおすすめでしょうか?

TortoiseHg インストール先の hgrc.d/MergeTools.rc に設定が記載され
ているツール群に関しては、既に確認済みでしょうか?

オープンソース系の実装は、開発の活性度合にばらつきがあるものの、
meld とかは現在も開発が続いているみたいですから、試してみる価値は
あるかと。

BeyondCompare とか Araxis Merge, UltraCompare, CodeCompare あたり
は商用製品ですが、一応評価版も提供されてなかったかな?
 
 
> winmergeで自動マージが行われなかった部分もマージツールを
> P4merge, Kdiff3 に切り替えれば自動マージが行われることがわかりました。

kdiff3 は「無理やり頑張って衝突を解消」する傾向があるみたいで、隣
接・同一行の変更で、Mercurial の内部マージ実装 (internal:merge) だ
と衝突とみなされる状況でも、「衝突無し」として振る舞うケースが多々
見られました。

以前 Mercurial のハンズオン向けに、マージ~衝突解消~コミットの流
れを説明する資料・元ネタリポジトリを作成した際に、10行程度の物凄く
単純なサンプルファイルで確認できた挙動です。

この辺は好みの問題もあると思いますが、私個人は衝突扱いにしてほしい
派なんですよねぇ。

「自動マージが行われるべき箇所」というのが、どういった状況かわかり
ませんが、kdiff3 がこのような挙動をとり得る、という点には留意して
おいた方が良いかと。

 自動マージが行われるべき箇所とは、コンフリクトが発生したファイルの中に
あるコンフリクトが発生していない差分の部分です。
base と localが同一で、other のみ変更されている部分です。
(水色のまま残ってしまっていますが、自動マージを指定していので水色が残るのは
異常動作)
指定しているオプションでは、other の変更がlocalに自動で取り込まれるはずです。

詳しくはこちらのページに現象の説明があります。
画面見ていただければ状況はわかると思います。

mercurialを経由せずファイルを三個指定して現象を再現できているのですが
再現するソースコードを提供することができないため、見た目似たような
状況の再現程度しかできていないのです。
(見た目似たような状況では再現データとして意味が無いようです)

ohira

unread,
Feb 16, 2017, 3:44:08 AM2/16/17
to mercurial-ja

おおひらです。
回答ありがとうございます。 

TortoiseHg インストール先の hgrc.d/MergeTools.rc に設定が記載され
ているツール群に関しては、既に確認済みでしょうか?
このファイルは確認していませんでした、マージツールのデフォルト設定は
このファイルで行われているのでしょうか、とても参考になりました。
(Mercurial.iniに書いてなくてもそこそこ使えるのはどうしてなのか気になっていました)
 
オープンソース系の実装は、開発の活性度合にばらつきがあるものの、
meld とかは現在も開発が続いているみたいですから、試してみる価値は
あるかと。
 meldはホームページのコピーライトが2011-2012だったので開発止まっていると
勘違いしてチェックしていませんでした。

BeyondCompare とか Araxis Merge, UltraCompare, CodeCompare あたり
は商用製品ですが、一応評価版も提供されてなかったかな?
Araxis Mergeは日本語版があるのですね。ページもしっかりした感じ。

それに比べてこのページは機械翻訳なのか。英語版のレピューとか怪しい


kdiff3 は「無理やり頑張って衝突を解消」する傾向があるみたいで、隣
接・同一行の変更で、Mercurial の内部マージ実装 (internal:merge) だ
と衝突とみなされる状況でも、「衝突無し」として振る舞うケースが多々
見られました。

以前 Mercurial のハンズオン向けに、マージ~衝突解消~コミットの流
れを説明する資料・元ネタリポジトリを作成した際に、10行程度の物凄く
単純なサンプルファイルで確認できた挙動です。

この辺は好みの問題もあると思いますが、私個人は衝突扱いにしてほしい
派なんですよねぇ。

「自動マージが行われるべき箇所」というのが、どういった状況かわかり
ませんが、kdiff3 がこのような挙動をとり得る、という点には留意して
おいた方が良いかと。
貴重な情報ありがとうございます。使ってみないとわからないですね。

自分は
衝突なのか衝突じゃないかは、mercurial側で決めて欲しいです。 

Katsunori FUJIWARA

unread,
Feb 20, 2017, 5:44:21 AM2/20/17
to mercurial-ja
藤原です。

2017年2月16日 17:44 ohira <shin....@gmail.com>:

>> kdiff3 は「無理やり頑張って衝突を解消」する傾向があるみたいで、隣
>> 接・同一行の変更で、Mercurial の内部マージ実装 (internal:merge) だ
>> と衝突とみなされる状況でも、「衝突無し」として振る舞うケースが多々
>> 見られました。
>>
>> 以前 Mercurial のハンズオン向けに、マージ~衝突解消~コミットの流
>> れを説明する資料・元ネタリポジトリを作成した際に、10行程度の物凄く
>> 単純なサンプルファイルで確認できた挙動です。
>>
>> この辺は好みの問題もあると思いますが、私個人は衝突扱いにしてほしい
>> 派なんですよねぇ。
>>
>> 「自動マージが行われるべき箇所」というのが、どういった状況かわかり
>> ませんが、kdiff3 がこのような挙動をとり得る、という点には留意して
>> おいた方が良いかと。
>
> 貴重な情報ありがとうございます。使ってみないとわからないですね。
>
> 自分は
> 衝突なのか衝突じゃないかは、mercurial側で決めて欲しいです。

Mercurial 側で衝突を判定するとなると、おそらく internal:merge になっ
てしまうでしょうねぇ (笑)

例えば、記述内容の意味を解釈できるマージツールが提供された場合、従
来は手動で衝突解消していたケースでも、ツール側で衝突を自動的に解消
できるかもしれません。

改名や順序入れ替えのようなリファクタリング作業と、障害修正が並走す
るようなケースなどは、このようなツールの恩恵が大きいと思います。

XML ファイルのマージとかも、単なる文字列扱いより、正規化処理や文書
構造に基づいたマージの方が、衝突扱いが減るでしょう (ざっと検索した
限りでは、該当するものが幾つかあるみたいです)。

衝突の判定をマージツールに任せるという判断は、上記のような(将来提
供されるであろう)ツールの恩恵を受ける意味でも重要かと。

まぁ、現時点では選択肢がアレですけど (笑)


--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

ohira

unread,
Mar 1, 2017, 3:03:53 AM3/1/17
to mercurial-ja
おおひらです。

2017年2月20日月曜日 19時44分21秒 UTC+9 FUJIWARA Katsunori:

>> この辺は好みの問題もあると思いますが、私個人は衝突扱いにしてほしい
>> 派なんですよねぇ。

> 自分は
> 衝突なのか衝突じゃないかは、mercurial側で決めて欲しいです。

Mercurial 側で衝突を判定するとなると、おそらく internal:merge になっ
てしまうでしょうねぇ (笑) 

例えば、記述内容の意味を解釈できるマージツールが提供された場合、従
来は手動で衝突解消していたケースでも、ツール側で衝突を自動的に解消
できるかもしれません。  
そういう高度なツールの出現を想定しているんですね。
現状のマージツールの自動マージがおかしいのを何とかしたいです。。。


改名や順序入れ替えのようなリファクタリング作業と、障害修正が並走す
るようなケースなどは、このようなツールの恩恵が大きいと思います。

XML ファイルのマージとかも、単なる文字列扱いより、正規化処理や文書
構造に基づいたマージの方が、衝突扱いが減るでしょう (ざっと検索した
限りでは、該当するものが幾つかあるみたいです)。  

衝突の判定をマージツールに任せるという判断は、上記のような(将来提
供されるであろう)ツールの恩恵を受ける意味でも重要かと。

まぁ、現時点では選択肢がアレですけど (笑)
探し方が悪いのか見つからないです、
現時点でも存在するツールなのですか?
現在は開発中で実際に使用する選択肢に入らないということなのでしょうか。

Katsunori FUJIWARA

unread,
Mar 1, 2017, 3:32:13 AM3/1/17
to mercurial-ja
藤原です。

2017年3月1日 17:03 ohira <shin....@gmail.com>:

> おおひらです。
>
> 2017年2月20日月曜日 19時44分21秒 UTC+9 FUJIWARA Katsunori:

>> 改名や順序入れ替えのようなリファクタリング作業と、障害修正が並走す
>> るようなケースなどは、このようなツールの恩恵が大きいと思います。
>>
>> XML ファイルのマージとかも、単なる文字列扱いより、正規化処理や文書
>> 構造に基づいたマージの方が、衝突扱いが減るでしょう (ざっと検索した
>> 限りでは、該当するものが幾つかあるみたいです)。
>>
>>
>> 衝突の判定をマージツールに任せるという判断は、上記のような(将来提
>> 供されるであろう)ツールの恩恵を受ける意味でも重要かと。
>>
>> まぁ、現時点では選択肢がアレですけど (笑)
>
> 探し方が悪いのか見つからないです、
> 現時点でも存在するツールなのですか?
> 現在は開発中で実際に使用する選択肢に入らないということなのでしょうか。

Stackoverflow の以下のエントリで、言及されているものがいくつかあり
ますね。

http://stackoverflow.com/questions/1871076/are-there-any-free-xml-diff-merge-tools-available

例えば以下のような機能が紹介されています。

-CodeCompare は "Structural comparison" のサポート対象に XML 列挙
http://www.devart.com/codecompare/docs/index.html?file_comparison.htm

- "XML-aware comparison options" of DiffDog - XML Aware Diff/Merge Tool
https://www.altova.com/diffdog/xml-diff.html

まぁ、実際に評価してみたわけではないので、 "XML awareness" の度合
までは不明ですが (^ ^ ;;;)

また、Windows アプリケーション向けの XML ファイル固有の話ではあり
ますが、Microsoft も GUI を提供してますね。

https://msdn.microsoft.com/ja-jp/library/aa302295.aspx

--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

ohira

unread,
Mar 1, 2017, 4:28:54 AM3/1/17
to mercurial-ja
おおひらです。

>> XML ファイルのマージとかも、単なる文字列扱いより、正規化処理や文書
>> 構造に基づいたマージの方が、衝突扱いが減るでしょう (ざっと検索した
>> 限りでは、該当するものが幾つかあるみたいです)。

> 探し方が悪いのか見つからないです、
> 現時点でも存在するツールなのですか?
> 現在は開発中で実際に使用する選択肢に入らないということなのでしょうか。

Stackoverflow の以下のエントリで、言及されているものがいくつかあり
ますね。

    http://stackoverflow.com/questions/1871076/are-there-any-free-xml-diff-merge-tools-available

例えば以下のような機能が紹介されています。

  -CodeCompare は "Structural comparison" のサポート対象に XML 列挙
   http://www.devart.com/codecompare/docs/index.html?file_comparison.htm

  - "XML-aware comparison options" of DiffDog - XML Aware Diff/Merge Tool
    https://www.altova.com/diffdog/xml-diff.html

まぁ、実際に評価してみたわけではないので、 "XML awareness" の度合
までは不明ですが (^ ^ ;;;)

また、Windows アプリケーション向けの XML ファイル固有の話ではあり
ますが、Microsoft も GUI を提供してますね。

    https://msdn.microsoft.com/ja-jp/library/aa302295.aspx
 
回答ありがとうございます。
XMLだけじゃなくてbasicとかjavascriptとか普通の言語もあるんですね。

ohira

unread,
Mar 3, 2017, 12:16:04 AM3/3/17
to mercurial-ja
おおひらです。

2017年2月10日金曜日 20時02分53秒 UTC+9 FUJIWARA Katsunori:
BeyondCompare とか Araxis Merge, UltraCompare, CodeCompare あたり
は商用製品ですが、一応評価版も提供されてなかったかな?

 Araxis Merge Professional 評価版を試してみました。

こちらの想定している使い方はできなそうです。
コンフリクトマーカーでの3ペイン表示を期待していたのですが、
コンフリクトマーカーには未対応だそうです。

経緯
検索してもコンフリクトマーカーに対応できるのか、不明だったので
販売元問い合わせ窓口に、コンフリクトマーカーに対応する機能があるか聞いてみました。
回答は、mercurialでのテストは行っていないのでわからない。
コンフリクトマーカーはmercurialだけのものではなくて、git, svn, cvsでも使われているものなので
機能が有るのかないのか教えて欲しいと再度問い合わせ。
回答は、開発元に問い合わせたところコンフリクトマーカーに未対応だったということでした。

Reply all
Reply to author
Forward
0 new messages