2009-03-25 12 views
14

Mam repozytorium, w którym znajdują się okna (cp1252) i linux (utf8). Oczywiście Git jest zdezorientowany i umieszcza niepoprawne (z perspektywy Linuksa) nazwy plików. Wiem, że mogę używać haków do zmiany nazwy plików w jedną stronę (po stronie linuksa, na przykład, zmieniając nazwy plików z cp1252 na utf8, gdy przychodzą, i odwrotnie, kiedy je przechodzą), ale ... dokładnie jak mam to zrobić? Dokładnie jakie haczyki muszę napisać?Git - zajmowanie się kodami mieszanymi nazw plików

+1

Czy nie byłoby łatwiej konwertować pliki raz i używać również UTF-8 w systemie Windows? – TimWolla

Odpowiedz

7

Dobre pytanie!

http://www.serverwatch.com/tutorials/article.php/3705216 Mówi o narzędziu o nazwie "convmv", które naprawi nazwy plików. To może być pomocne.

Iconv http://www.gnu.org/software/libiconv/ może konwertować dowolny tekst na różne zestawy znaków.

http://ozmm.org/posts/git_post_commit_for_profit.html Mówi ci, jak zrobić hak po zatwierdzeniu, ale bardziej specyficzne dla języka Ruby. Wygląda na to, że dodajesz skrypt do wykonania w .git/hooks/post-commit, a git uruchomi go po zatwierdzeniu. Może to być skrypt, który uruchamia skrypt w repozytorium git.

Dla skryptu polecam po prostu skanowanie za pomocą find, przekonwertuj nazwę pliku na UTF-8, zobacz, czy to już ta nazwa, a jeśli nie, przenieś ją.

+0

ale czy po zatwierdzeniu prawy hak? Myślałem, że muszę przekonwertować (na linux) z cp1252 na utf8 po odebraniu plików z powrotem do cp1252 przed zatwierdzeniem lub porównaniem plików z drugim repozytorium (ponieważ maszyny linux są mniejszością w sieci - i convmv można łatwo zainstalować w * buntu) ... – Massa

+1

'pre-commit' wygląda obiecująco. patrz: http://git-scm.com/book/en/Customizing-Git-Git-Hooks – tessi

Powiązane problemy