2009-03-25 11 views
14

私は窓(cp1252)とlinux(utf8)コミッターを持つリポジトリを持っています。明らかにGitは混乱し、(Linuxの観点から)無効なファイル名を付けます。私はフックを使って片方のファイルの名前を変更できることを知っています(たとえば、linux側ではcp1252からutf8にファイル名を変更し、逆にファイル名を変更するなど)...どうすればいいですか?正確にどのフックを書く必要がありますか?Git - ファイル名の混在を扱う

+1

ファイルを一度変換してWindowsでUTF-8を使用する方が簡単ではないでしょうか? – TimWolla

答えて

7

良い質問!

http://www.serverwatch.com/tutorials/article.php/3705216ファイル名を修正する「convmv」というツールについて語っています。これは参考になるかもしれません。

Iconv http://www.gnu.org/software/libiconv/は、任意のテキストを異なる文字セットに変換できます。

http://ozmm.org/posts/git_post_commit_for_profit.htmlポスト・コミット・フックを作る方法について説明しますが、Rubyに特化しています。 .git/hooks/post-commitで実行するスクリプトを追加するだけで、コミット後にgitが実行されるようです。あなたのgitリポジトリでスクリプトを実行するスクリプトでも可能です。

スクリプトの場合は、findでスキャンし、ファイル名をUTF-8に変換し、それがすでにその名前であるかどうかを確認し、そうでなければ移動することをお勧めします。

+0

しかし、ポストは右フックをコミットしていますか?私はLinuxファイルを他のリポジトリにコミットしたり比較したりする前に、cp1252からutf8へcp1252からcp1252に戻って受信ファイルを変換しなければならないと思っていました(Linuxマシンはネットワーク上のマイノリティであり、convmvは* buntu)... – Massa

+1

'pre-commit'は有望です。 http://git-scm.com/book/en/Customizing-Git-Git-Hooksを参照してください。 – tessi

関連する問題