ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

TortoiseHGのカスタマイズ(好きなdiffツールを割り当てる等)

ちょっとした理由で、TortoiseHGを使ってみようと思いました。
いや、メインリポジトリが手元に無い状態&手元に長期間残すつもりが無いコードだったので。
(実際、手元の環境ではSubversionをバージョン管理に使っています)


コマンドライン版のMercurialを使わないのは、単に不精なせいです。
すみません、ほげらったなコマンド体系を覚えられないんです。
後、TortoiseSVNでCommit時、「追加すべきじゃない?」ファイルを列挙&追加してくれる機能(毎日眺めているエクスプローラ上でも赤く注意してくれるし)を、コマンドライン上で手軽に実現できる手法をよく知らないってのもあります。コマンドをポチポチ打ち込むのも面倒だしなぁ。


では、インストールから。

インストール

TortoiseHGのインストールと最初のスタートについては、以下の記事が画面付きで参考になりました。


自分がインストールした時点では、'TortoiseHg-0.4rc1.exe'でした。
使い勝手はそんなに悪くないですが、UIの完成度はTortoiseSVNに比べると「え〜と」という感じです。
まぁ、開発から そんなに経ってないので仕方ないでしょう。


というか、短期間で実用になる水準にまとめ挙げている点に注目すべきかと思います。
TortoiseHGのインストールフォルダに転がっている大量の'*.pyd'ファイルから、どうもPythonで開発してpy2exeでEXE化しているんじゃないか?と思うんですが、どうでしょうね?


以降は、実際に使ってみる際に、詰まった点と解決方法について、幾つか列挙してみます。

無視(ignore)ファイル&フォルダの指定方法

TortoiseSVNだと、右クリックメニュー→TortoiseSVN→Add to ignore list で、簡単にファイル&フォルダをバージョン管理対象に回す事が出来ます。
TortoiseHGでは、メニューを眺めた限りでは、それらしいものが見つかりませんでした。


代わりに、設定ファイルで指定するようです。
設定方法については、以下の「無視ファイルの設定」という所の説明が役に立ちます。

テキストエディタの設定

右クリックメニューから「View Changelog」して適当なファイルを「View at revision」するとノートパッド(notepad)が起動します。
これだと、EUCなどで記述した文字列が文字化けするので、適当なテキストエディタに変更します。


これには、XPの場合'C:\Documents and Settings\ユーザ名\mercurial.ini'を開いて、以下の項目を追加します。

[ui]
editor = C:\tool\sakura_editor\sakura.exe

比較(diff)ツールの設定

右クリックメニューから指定したファイルを「Visual Diff」すると通常では、TortoiseHG内蔵のdiffツール(kdiffというらしい)が起動します。
これは、UTF-8やShift-JISで記述した日本語が変な具合に表示されて使えないので、適当なツールに変更します。


設定方法は以下の通りです。
1.エクスプローラ上で右クリック→TortoiseHG→Settings→Global とする。

これで、'C:\Documents and Settings\ユーザ名\mercurial.ini'が出来るそうです。
2.mercurial.iniを開き、以下を追加します。

[extdiff]
cmd.vdiff = hgmerge

3.TortoiseHGのインストールフォルダに、hgmerge.cmdを作成します。

作成したら、MergeProgram - MercurialのWindows記述例を参考にして、hgmerge.cmdにコードを貼り付けます。


以下のURLの事例には、WinMergeやTortoiseMergeなど著名なdiffツールを使う例が記載されているので、非常に参考になります。

よく判ってない点(日本語の話)

日本語環境で扱う点については、今一よく判っていません。

↑こちらの話では、日本語環境で扱う場合について解説いただいているんですが、自分の導入したバージョンでは、ある程度解決されているのか

  • 日本語含んだデータは、ちゃんと格納されている感じ
  • 日本語ファイルも、リストダイアログでは化けるけど、ちゃんと格納されている模様

だったんですね。


設定ファイル(mercurial.ini)の設定例としてよく記載されている、以下の設定って必要なのか不要なのか、今一判っていません。

[extensions]
hgext.win32text=
hgext.win32mbcs=

[encode]
** = cleverencode:

[decode]
** = cleverdecode:


[encode]と[decode]セクションの、この設定は以下の説明によると、CR ←→CR+LF の自動変換として存在している感じなので、正直設定しない方が良いのかな?と思っています。VSSからSubversionに移行した理由の一つは、「勝手に変換すんなよ」だったので。(一応補足しますと、VSSは設定すれば勝手な変換はしません。ただデフォルトがテキストファイルは変換対象になるだけです)


'hgext.win32mbcs'キーについては、以前のバージョンでは設定しないと、日本語を正常に扱えないケースがあったようなんですが、ちゃんと扱えました。

最後に(オチ)

また やってしまった。3時間…。orz