我有一个拥有Windows(cp1252)和linux(utf8)提交者的存储库.显然,Git会感到困惑,并且无效(从linux的角度来看)文件名.我知道我可以使用钩子来重命名文件的一面(例如,在linux的一面,将文件从cp1252重命名为utf8,当它们出现时反向重命名),但是......我究竟该怎么做?究竟哪个钩子我要写?
好问题!
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告诉你如何制作一个post-commit钩子,虽然更具有Ruby特性.看起来你只需添加一个脚本来执行.git/hooks/post-commit,git会在你提交后运行它.它可能是一个甚至在你的git仓库中运行脚本的脚本.
对于脚本,我建议只使用find进行扫描,将文件名转换为UTF-8,看看它是否已经是该名称,如果没有,请移动它.