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 .gitattributespliku
*.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ń *.vmcsię *.whateverdla whateverplikó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 +diffnie 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 .gitattributespliku, 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 textnie 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ę.