#contents

*はじめに [#s5428e6e]

gitで日本語を扱う方法。

''前提として、gitは現状でファイル名に関してはUTF-8透過、つまり正規化せずにそのまま扱うようでこの手の処理はGitクライアントやOSのAPIやファイルシステムに依存するようです'' 
(代表的な問題は、WindowsのANSI API使うとUTF-8透過できなくね?とかMacのUTF-8-MACな問題とか)


(代表的な問題は、WindowsのANSI API使うとUTF-8透過できなくね?とかMacの[[UTF-8-MAC:http://www23.atwiki.jp/selflearn/pages/55.html]]な問題とか)
*調査メモ [#p4b00274]


%%LinuxでUTF8環境だとマズ大丈夫だと思われます。%%
coLinuxのUbuntu 9.04で試す限り設定等が必要の模様。

問題はさらにWindows。

以下は、Windows上 cygwin 1.7(=UTF-8版) コマンドライン版での調査です。msysgitはUTF-8周りを考えるとマズイ気がする…。

TortoiseGitは一部検証。
Git Extensionsは未検証。

情報が一部古くなっている可能性があります。ご注意ください。
**日本語コミットログ ○? [#b04cf821]

UTF-8Nが多分推奨かと。gitkでもUTF-8Nなら文字化けしない。

git commit -a 時に立ち上がるエディタは、
私はUTF-8N対応ということで、[[GreenPad:http://www.kmonos.net/lib/gp.ja.html]]を使ってみています。

※エディタの指定方法は、[[../git commitでエディタ起動しようとしてエラーが出る]]を参照のこと。

TortoiseGitは未確認。これちゃんとUTF-8で入ってるのかな…。

**日本語ファイル名 ? [#i690ff79]

-''ここで扱う主な問題は他のプラットフォーム(Unix等)でやりとりができるかどうか?''''プラットフォーム依存にならないかどうか?''

***結論 [#va225053]
-Windowsからは日本語ファイル名を追加コミットしたい場合は、''UTF-8対応しているcygwin cygwin 1.7必須'' (cygwin 1.7以前の場合は、[[UTF-8 DLL導入すればOK:http://www.okisoft.co.jp/esc/utf8-cygwin/download.html]])
-''最近のUnixでUTF-8環境の場合も大丈夫?''
-TortoiseGit+msysgitではまだ止めておいた方が良い。

ようするにUTF-8で統一しておけば大丈夫っぽいよ。

#ここで大丈夫というのはgithubで確認してOK、複数環境で相互運用できそう、という意味ぐらい

***メモ [#ba79a5ed]
%%コミット等はできるが、コミットログやgitkなどでは''表示だけは文字化けする''様子です。しかし、クローンしたり、前のバージョンに戻したりしたときに生成される日本語ファイル名のファイルは問題なく生成される。''一応大丈夫''っぽい??%%

LinuxなどのUTF-8環境でUTF-8でファイル名入れる分にはさして問題ない様子。
しかしWindowsの場合、SJISで入れちゃったりすると他環境とやりとりできなくなる(Windowsでしか扱えなくなるっぽい)

cygwin版の場合、[[UTF-8版cygwin:http://www.okisoft.co.jp/esc/utf8-cygwin/index.html.ja]]を導入した状態で、[[githubに日本語ファイル名(UTF-8で入っているはず)を含むリポジトリを上げてみました。:http://github.com/toooooooby/japanese_test]]
→問題ないのかな?? (Loading commit dataばかりでてるけど…)
(2010/02/14時点でうちのcygwinのバージョンがかなり古いので要検証)

cygwin 1.7以降(=UTF-8対応)(か、cygwin + UTF-8 DLL)で今のところは問題ない気がします。(これって多分Mercurialもそうだと思う)

ただし、TortoiseGitはどうも、ダメ文字含むファイル名があると、アイコン表示等がバグります。ログ画面でも文字化けしますね。

***git status など各種コマンドで日本語ファイル名が数値表示される問題 [#b6befe32]

git statusなど各種コマンドで日本語ファイル名が数値表示される問題の解決策は、 [[../日本語ファイル名をgit statusなどで表示する方法]] を参照してください。オプション設定で解決します。

**日本語が含まれるファイル ○[#rc77ca90]

SJISでテキストを書いたファイルを突っ込んでみてますが
表示が化ける以外は今のところ特に問題ないみたいです。

ただし、diffとかはSJISのテキストファイルは環境によっては化けて表示されます。
→SJISが読めるページャを用意する必要がある(jlessとかかな)

githubでもSJISのテキストを表示させると表示は化けます。

ただ、データが壊れているわけではないようです。

*gitkとgit-guiについて [#h2975d6f]

ログをグラフィカルで見るgitkの日本語状況について

日本語メッセージ関係はこちらも参考に:[[Tk実装によるgitリポジトリコミットビューア gitk の日本語化言語ファイルです。 - Index of /gitk:http://lab.mzr.jp/gitk/]]

前提:
UTF-8環境前提 (~/.bashrcに記述してあるとか)
#pre{{
export LANG=ja_JP.UTF-8
}}

git用のGUIツールのデフォルトエンコーディングをUTF-8に設定する
#pre{{
git config --global gui.encoding utf-8
}}

**cygwin 1.7.5 git 1.7.0.4 [#g37d950f]
-gitk
--UIメッセージの日本語のために .bashrcに以下を追加しておく
#quotex(Tk実装によるgitリポジトリコミットビューア gitk の日本語化言語ファイルです - Index of /gitk,http://lab.mzr.jp/gitk/){{
export GITK_MSGSDIR=/usr/share/gitk/lib/msgs/
}}
--そもそも起動しないことも多く、起動しても固まったり、クリックすると固まったりすることが多い。正常に使える確率は低い(「願う」必要がある)
--コミットログはUTF-8なら化けない
(その他のエンコーディングは)
--フォントはEdit->PreferencesでUNICODE表示できるものを使用
--diffはテキストの中身かUTF-8の場合は化けない
(Edit->Preferences で "Support per-file encodings" にチェックを入れると他のエンコーディングも読めると思ったけど少なくともSJISのテキストはダメでした)
--''UTF-8のファイル名は文字化けする''
うーん。該当ファイルのdiffもファイル名を選択しないと表示されなかったり。
-git-gui
--(調査中)

**Ubuntu 9.04 1.6.0.4 [#u8e0eb96]

-[[Index of /gitk:http://lab.mzr.jp/gitk/]]

* [#xbe126af]

**関連 Issue [#f6817d10]
-[[Issue 101 - tortoisegit - UTF-8 (Japanese) filenames are broken. - Project Hosting on Google Code:http://code.google.com/p/tortoisegit/issues/detail?id=101#makechanges]]
他の環境で作ったUTF-8のファイル名がTotoiseGit(+mysysgit)でぶっ壊れるんだけどの件
-[[Issue 56 - tortoisegit - Enhancement: ability to use Cygwin's git instead of msysGit - Project Hosting on Google Code:http://code.google.com/p/tortoisegit/issues/detail?id=56]]
msysgitはイケてないから、cygwin gitに対応して下さいよ!な件
-[[Issue 80 - msysgit - git-clone fails when repo contains UTF-8 filepath - Project Hosting on Google Code:http://code.google.com/p/msysgit/issues/detail?id=80]]
mysysgitで UTF-8ファイル名があるとcloneできないうんぬんかんぬん
-[[Issue 230 - msysgit - Question: How I can add files in national character - Project Hosting on Google Code:http://code.google.com/p/msysgit/issues/detail?id=230]]
msysygitでファイル名が(ry → 表示以外は大体OK、ポータブル性はないよ

*参考リンク [#wfa59bbc]
-[[UTF-8ファイル名対応版 Git for Windows:http://tmurakam.org/git/]]
msysgitのUTF-8パッチキテルー。パッチ作成者さんところではTortoiseGitでも動いているらしい。
(こちらの環境ではcygwin環境もあるせいか上手く行かない…)
----
#pcomment(,reply)

TIME:"2010-12-21 (Tue) 07:48:16" REFERER:"http://tobysoft.net/wiki/index.php?cmd=edit&page=git%2Fgit%A4%C7%C6%FC%CB%DC%B8%EC%A4%F2%B0%B7%A4%A6%CA%FD%CB%A1&id=s5428e6e" USER_AGENT:"Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)"
Front page   Edit Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes