Hatena::ブログ(Diary)

兀兀 -雑多編- このページをアンテナに追加 RSSフィード

2009-05-04

ポータブル版msysgitの日本語対応

| 11:58 | ポータブル版msysgitの日本語対応を含むブックマーク ポータブル版msysgitの日本語対応のブックマークコメント

msysgitは、そのままでは日本語にうまく対応できません。これは、表示やテキストの編集に使われるコマンド(lessコマンド、vimコマンドなど)が日本語に対応していないからです。よって、日本語を正しく扱うためには、これらのコマンドを日本語対応のものに置き換える必要があります。

 Windows環境でGitを利用する際、問題になるのが日本語などマルチバイト文字の扱いだ。Windows環境では通常、日本語の文字コードとしてShift JIS(CP932)が利用されている。いっぽう、Gitではマルチバイト文字の文字コードとしてUTF-8を利用することが推奨されているようだ。また、ファイル名に関してもWindows環境ではCP932が、Mac OS Xを含むUNIX/LinuxではUTF-8(もしくはEUC-JP)が採用されていることが多いため、たとえば日本語のファイル名を持つファイルを Windows環境でコミットした場合、UNIX環境ではファイル名が文字化けしてしまう。

現状ファイル名については、日本語を使わないという解決策しかない。

WindowsでのGit環境構築とその注意点 - SourceForge.JP Magazine : オープンソースの話題満載

上記サイトで紹介されている日本語対応方法を参考に、私の環境で実施した手順をまとめておきます。


準備

日本語対応に必要なコマンドをダウンロードします。


インストール

lessとnkfは、それぞれless.exe、nkf.exeをmsysgitインストール先のbinフォルダに展開します。lessはすでに存在するため、上書きします。

香り屋版vimは、msysgitとは別に単独で利用できるため、msysgitとは別のフォルダに展開します。私の場合は、E:\PortableApps\vim72-kaoriya-w32jに展開しました。


環境設定

git専用コマンドプロンプト起動バッチファイルの作成

git作業に特化したコマンドプロンプトを起動するためのバッチファイルを以下の内容で作成します。

@echo off
@set PATH=%~d0\PortableApps\Git\bin;%~d0\PortableApps\vim72-kaoriya-w32j;%PATH%
@set HOME=%~d0\home\aki-s
cd %HOME%
start bash --login -i

PATH環境変数やHOME環境変数に設定している内容は、ご自分の環境に合わせて適切に変更してください。「%~d0」は、お使いのUSBメモリUSB HDDのドライブレターに置き換わるため、変更しないでください。


inputrcの作成

msysgitインストール先のetcフォルダに、inputrcというファイルを以下の内容で作成します。

set convert-meta off
set meta-flag on
set output-meta on
set kanji-code utf-8

profileにGIT_EDITORとGIT_PAGER環境変数を追加

inputrcファイルを作成したetcフォルダにあるprofileファイルに以下の内容を追加します。

export GIT_EDITOR=gvim
export GIT_PAGER="nkf -s | less"

使い方

環境設定で作成した「git専用コマンドプロンプト起動バッチファイル」を実行して、コマンドプロンプトを開いてください。gitコマンドでの作業は、すべてこのコマンドプロンプト上で行ってください。

なお、コミット時のメッセージは、コマンドライン上で入力するのではなく、エディタを使って文字コードUTF-8で入力するようにしてください。参考までに、vimUTF-8を扱う際の_vimrcの設定を紹介しておきます。

"---------------------------------------------------------------------------
" 日本語に関する設定:
set enc=utf-8                      " 表示用の文字コード
set fenc=utf-8                     " 保存時の文字コード
set fencs=ucs_bom,utf-8,ios-2022-jp,euc-jp,cp932,utf-16,utf-16le " 文字コード自動判別候補