我有一个包含 windows (cp1252) 和 linux (utf8) 提交者的存储库。显然 Git 会混淆,并输入无效的(从 linux 的角度来看)文件名。我知道我可以使用 Hook 在一侧重命名文件(例如,在 linux 一侧,当文件出现时将文件从 cp1252 重命名为 utf8,而当它们离开时则相反),但是......我该怎么做?我到底要写哪些钩子(Hook)?
最佳答案
好问题!
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告诉您如何着手制作提交后 Hook ,不过更特定于 Ruby。看起来你只是在 .git/hooks/post-commit 中添加一个脚本来执行,git 会在你提交后运行它。它可能是一个脚本,甚至可以在您的 git 存储库中运行脚本。
对于脚本,我建议只使用 find 进行扫描,将文件名转换为 UTF-8,看看它是否已经是该名称,如果不是,则移动它。
关于Git - 处理混合编码文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/682691/