git zaczął ostatnio rozumieć kodowanie, takie jak utf16. Zobacz dokumentację gitattributes , wyszukajworking-tree-encoding
[Upewnij się, że Twoja strona podręcznika pasuje, ponieważ jest to całkiem nowe!]
Jeśli (powiedzmy) plik jest w formacie UTF-16 bez BOM na komputerze z systemem Windows, dodaj go do swojego .gitattributes
pliku
*.vmc text working-tree-encoding=UTF-16LE eol=CRLF
Jeśli UTF-16 (z bom) na * nix to:
*.vmc text working-tree-encoding=UTF-16-BOM eol=LF
(Wymień *.vmc
się *.whatever
dla whatever
plików typu trzeba uchwytem)
Zobacz: Obsługa kodowania drzewa roboczego „UTF-16LE-BOM” .
Dodano później
Po @Hackslash można stwierdzić, że to nie wystarczy
*.vmc text working-tree...
Aby uzyskać ładne różnice tekstowe, potrzebujesz
*.vmc diff working-tree...
Umieszczenie obu działa również
*.vmc text diff working-tree...
Ale to prawdopodobnie
- Nadmiarowy -
eol=...
implikujetext
- Pełne - duży projekt może z łatwością zawierać dziesiątki różnych typów plików tekstowych
Problem
Git ma atrybut makro, binary
który oznacza -text -diff
. Odwrotność +text +diff
nie jest dostępna jako wbudowana, ale git daje narzędzia (chyba!) Do syntezy
Rozwiązanie
Git pozwala zdefiniować nowe atrybuty makr.
Zaproponowałbym ten szczyt .gitattributes
pliku, który masz
[attr]textfile text diff
Następnie dla wszystkich ścieżek, które muszą być tekstowe i różnicowe
path textfile working-tree-encoding= eol=...
Zauważ, że w większości przypadków chcielibyśmy domyślnego kodowania (utf-8) i domyślnego eol (natywnego), więc mogą zostać odrzucone.
Większość linii powinna wyglądać
textfile *.c
textfile *.py
Etc
Dlaczego po prostu nie użyć diff?
Praktyczne: w większości przypadków potrzebujemy natywnego eol. Co oznacza nie eol=...
. Więc text
nie będzie dorozumiany i musi być wyraźnie określony.
Koncepcyjne: binarny tekst Vs jest podstawowym rozróżnieniem. eol, kodowanie, różnicowanie itp. to tylko niektóre aspekty tego.
Zrzeczenie się
Ze względu na dziwne czasy, w których żyjemy, nie mam maszyny z działającym dupkiem. Dlatego w tej chwili nie mogę sprawdzić najnowszego dodatku. Jeśli ktoś znajdzie coś nie tak, poprawię / usunę.