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環境でダメ文字がダメな気がしまする。
助けてアルゴマン!!