MacにMercurialをインストールしてNetBeansから利用
すっかりどっぷりMercurialにハマってしまったので、自宅のMacにもインストールしてみようと思います。さて、ここはやっぱりMacPortsでインストールするべきかと思い、久しぶりにMacportsをアップデートしてみました。
>sudo port selfupdate
なんだかエラーが出ます。そういえばSnow Leopardにアップデートしてから一度もMacPortsを起動していないことを思い出し、これはやっぱりバージョンアップしたせいであるという結論を導きだしました。MacPortsのサイトにいくと、Snow Leopardについて言及していて、対応版1.8.2が出ているようなのでそれをダウンロードしてインストールします。インストール後のアップデートは正常に動作(注意:XCode3.2.1以降がインストールされていないとMacPorts1.8.2が正常に動作しません)したので、早速、Mercurialがあるのかどうか検索してみます。
>sudo port search mercurial
Mercurial @1.4.2を見つけることができたので、これをインストールします。ここまで来たら後はNetBeansからMercurialに対してコミットを実施するだけです。NetBeansの「チーム」->「Mercurial」から「プロジェクトの初期化」を選択して、既存プロジェクトを初期化します。(既存のファイル等が消える訳ではなく、Mercurialのリポジトリとして動作するように管理ファイルが設置される、ということです)プロジェクトをCtrl+クリックして「Mercurial」から「コミット」を選択します。ところが、ここで問題が...。
コミットメッセージに日本語を使うと、コミットに失敗するようなのです。すぐに文字コードの問題だということはわかったのですが、Mercurialのコミットの文字コードはどこで設定すればよいのか。マニュアルを調べるとHGENCODINGという環境変数で文字コードを設定できるとあります。が、NetBeansからこの設定が見えるのでしょうか?通常、.bashrcとかに設定するとは思うのですが、NetBeansはターミナルから起動する訳ではないので認識しない。NetBeansのパッケージ構成を見ると「Contents/Resources/NetBeans/bin」にnetbeansという起動用のシェルスクリプトがあります。ここにHGENCODINGの設定を行えばうまく認識してくれそうです。起動処理の直前にHGENCODINGの設定を追加します。
export HGENCODING="Shift_JIS" # in case of macosx, the apple.laf.useScreenMenuBar property should be ideally in the Info.plist file # but it doesn't get propagated into the executed java VM. case "`uname`" in Darwin*) eval launchNbexec \ --jdkhome '"$netbeans_jdkhome"' \ -J-Dcom.apple.mrj.application.apple.menu.about.name=NetBeans \ -J-Xdock:name=NetBeans \ '"-J-Xdock:icon=$progdir/../nb6.8/netbeans.icns"' \ --branding nb \ --clusters '"$netbeans_clusters"' \ -J-Dnetbeans.importclass=org.netbeans.upgrade.AutoUpgrade \ -J-Dnetbeans.accept_license_class=org.netbeans.license.AcceptLicense \ ${netbeans_default_options} \ '"$@"' ;; *) eval launchNbexec \ --jdkhome '"$netbeans_jdkhome"' \ --branding nb \ --clusters '"$netbeans_clusters"' \ -J-Dnetbeans.importclass=org.netbeans.upgrade.AutoUpgrade \ -J-Dnetbeans.accept_license_class=org.netbeans.license.AcceptLicense \ ${netbeans_default_options} \ '"$@"' ;; esac
文字コードはShift_JISとします。これはJDK6ではデフォルトの文字コードがShift_JISとなっているためです。そのためJDK6上で動作するNetBeansは、特に文字コードを設定しなければShift_JISで動作することになり、コミットメッセージもShift_JISとなります。
これでコミットメッセージに日本語を利用できるようになりました。