Git - обработка имен файлов смешанного кодирования

У меня есть репозиторий, в котором есть обработчики окон (cp1252) и linux (utf8). Очевидно, что Git запутывается и помещает недопустимые (с точки зрения linux) имена файлов. Я знаю, что я могу использовать перехватчики для переименования файлов в одну сторону (на стороне Linux, например, переименование файлов с cp1252 на utf8, когда они приходят, и наоборот, когда они идут), но... как именно это сделать? Точно, какие крючки мне нужно написать?

Ответы

Ответ 1

Хороший вопрос!

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. Похоже, вы просто добавляете script для выполнения в .git/hooks/post-commit, а git запускает его после совершения. Это может быть script, который даже запускает script в вашем репозитории git.

Для script я бы рекомендовал просто сканировать с помощью find, преобразовать имя файла в UTF-8, посмотреть, уже ли это имя, а если нет, переместите его.