なか日記

一度きりの人生、楽しく生きよう。

git commit -m で日本語入力(msysgit編)

以前のエントリに書いたやり方*1はコミットメッセージを編集するエディタの文字コードutf-8 にしてやるという物でしたので、git commit -m "ほげほげ" というのは相変わらず文字化けしてしまうという問題を残してました。
1行のログだけでいい場合には、-mでちゃちゃっとコミットしたいのに、使えないのでエディタからログを入力する必要があり、これが以外とめんどくさいなぁと常々思っていました。

入門Git」を読んでて、commit-msg フックを使えばもっと簡単に日本語でのログ入力に対応出来そうなので試してみました。

前提

commit-msg の作成

.git\hooks に commit-msg を作成します。

中身を以下の様に編集します。

#!/bin/sh

mv $1 $1.tmp
nkf -w $1.tmp > $1
rm $1.tmp

commit-msg に実行権限が付いていることを確認して、付いていなければ実行権限を付けておきます*2

試してみる

適当なファイルを作ってコミットしてみます。

nakaji@PC01 /d/Work/myproject (master)
$ git add howtocommitjapaneselog.txt

nakaji@PC01 /d/Work/myproject (master)
$ git commit -m "ほげほげ"
[master dab0ce3] 縺サ縺偵⊇縺
 1 files changed, 20 insertions(+), 0 deletions(-)
 create mode 100644 howtocommitjapaneselog.txt

nakaji@PC01 /d/Work/myproject (master)
$ git log -1
commit dab0ce3d40e244e135af7c7b60d7e68d6cb77a27
Author: nakaji <nakaji129@gmail.com>
Date:   Sun Dec 13 08:24:17 2009 +0900

    ほげほげ

最後に

このやり方は nkf に出力文字コードのみを指定しています。入力となるファイルの文字コードnkf がいい感じに識別してくれていますので、「Gitでの日本語入力対応(msysgit編) - タイトルは未定」で行った設定が残っていても問題無い(はず)です。

しかし、リポジトリ毎に commit-msg を作成してやる必要があるのでリポジトリをたくさん作る人にとってはちょっと面倒かも。

*1:[http://d.hatena.ne.jp/nakaji999/20091124/1259068448:title]

*2:mysysgit の bash で見る限り、勝手に実行権限が付いてました