Par défaut, il ressemble git
ne fonctionne pas bien avec de l'UTF-16; pour un tel fichier, vous devez vous assurer qu'aucun CRLF
le traitement est fait sur elle, mais vous souhaitez diff
et merge
à travailler comme un fichier texte (ce qui est ignorant si oui ou non votre terminal/éditeur peut gérer l'UTF-16).
Mais en regardant l' .gitattributes
man, ici, c'est l'attribut personnalisé c'est - binary
:
[attr]binary -diff -crlf
Il me semble donc que vous pouvez définir un attribut personnalisé dans votre haut niveau .gitattributes
pour utf16
(à noter que j'ai ajouter de fusion ici pour être sûr qu'il est traité comme du texte):
[attr]utf16 diff merge -crlf
À partir de là, vous seriez en mesure de préciser dans .gitattributes
le fichier de quelque chose comme:
*.vmc utf16
Notez également que vous devriez toujours être en mesure d' diff
d'un fichier, même si git
pense que c'est du binaire avec:
git diff --text
Modifier
Cette réponse dit essentiellement que GNU diff avec UTF-16 ou même de l'UTF-8 ne fonctionne pas très bien. Si vous voulez avoir l' git
utiliser un autre outil pour voir les différences (via --ext-diff
), la réponse suggère Guiffy.
Mais ce que vous avez probablement besoin est juste de diff
UTF-16 fichier qui ne contient que des caractères ASCII. Un moyen d'obtenir que le travail est d'utiliser --ext-diff
et le script suivant:
#!/bin/bash
diff <(iconv -f utf-16 -t utf-8 "$1") <(iconv -f utf-16 -t utf-8 "$2")
Notez que la conversion en UTF-8 pour la fusion ainsi, vous avez juste à vous assurer que c'est fait dans les deux directions.
Comme pour la sortie à la borne lorsque l'on regarde un diff de UTF-16 fichier:
En essayant de diff aime que les résultats de
binaire ordures craché à l'écran.
Si git est de l'utilisation de GNU diff, il serait
semble que GNU diff n'est pas
unicode.
GNU diff n'est pas vraiment à unicode, donc lorsque vous utilisez diff --texte juste diffs et les sorties du texte. Le problème est que le terminal que vous utilisez ne peut pas gérer l'UTF-16 émise (combinée avec la diff marques qui sont des caractères ASCII).