Git - 处理混合编码文件名

标签 git

我有一个包含 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/

相关文章:

gitignore some-path/some-file.ini 也忽略 some-path/some-file.ini.default

ruby-on-rails - Heroku:上传单个未版本化的文件

git - 使用不同的用户通过 https 推送到 GitHub

git - 从 git bundle 获取所有分支

git - 如何在 GitHub Desktop 中使用 SSH 远程?

java - 我如何从 java 运行 git 命令?

node.js - git 预提交 |文件未提交

git - 本地备份源的自动版本控制

git - 从 git 存储库中提取作者信息

java - Maven 和 GitHub 的版本编号/发布机制