gitで日本語ファイル名を無理やり通した

個人的にバージョン管理は git でウッボーな気がしていますが
ソースコード以外だと日本語ファイルとかもよくある話で
そういうのも扱いたくなる訳ですよ。


で、git で add したファイル名が日本語だと
diff した時とcommit した時の表示ファイル名が文字コードになります。


具体的には以下のようになります。
(本当のファイル名は"日本語ファイル.txt"で git diff --cached を実行した結果)

diff --git "a/\346\227\245\346\234\254\350\252\236\343\203\225\343\202\241\343\202\244\343\203\253.txt" "b/\346\227\245\346\234\254\350\252\236
index a03c641..b438621 100644
--- "a/\346\227\245\346\234\254\350\252\236\343\203\225\343\202\241\343\202\244\343\203\253.txt"
+++ "b/\346\227\245\346\234\254\350\252\236\343\203\225\343\202\241\343\202\244\343\203\253.txt"
@@ -1 +1 @@
-日本語のテストですYO
+日本語のテストですヨ


で、これを日本語が通るように適当に(泥酔しながら)
変更したみた結果がこれだよ。

diff --git "a/日本語ファイル.txt" "b/日本語ファイル.txt"
index a03c641..b438621 100644
--- "a/日本語ファイル.txt"
+++ "b/日本語ファイル.txt"
@@ -1 +1 @@
-日本語のテストですYO
+日本語のテストですヨ


表示はされとるな...


で、git の変更内容はこんなです。

diff --git a/source/git-1.6.0/quote.c b/source/git-1.6.0/quote.c
index 6a52085..f36d6c7 100644
--- a/source/git-1.6.0/quote.c
+++ b/source/git-1.6.0/quote.c
@@ -189,15 +189,18 @@ static size_t quote_c_style_counted(const char *name, ssize_t maxlen,
                        EMIT('"');
 
                EMITBUF(p, len);
-               EMIT('\\');
+               //EMIT('\\');
                p += len;
                ch = (unsigned char)*p++;
                if (sq_lookup[ch] >= ' ') {
                        EMIT(sq_lookup[ch]);
                } else {
+          /*
                        EMIT(((ch >> 6) & 03) + '0');
                        EMIT(((ch >> 3) & 07) + '0');
                        EMIT(((ch >> 0) & 07) + '0');
+            */
+                       EMIT(ch);
                }
        }


勉強不足もいいところなので、
ちゃんとした修正方法を誰か(ご指摘|解決して)くださると助かります。
たぶん、sjis環境でダメ文字がダメな気がしまする。


助けてアルゴマン!!