Регистрация изменений в спецификации UTF8 с помощью git - PullRequest
3 голосов
/ 21 июня 2011

Я случайно зарегистрировал текстовый файл в кодировке utf8 из Windows, не удаляя BOM раньше.Теперь я попытался удалить его в более поздней версии и снова зарегистрировать это изменение.Кажется, что git игнорирует изменение байтов спецификации.Есть ли настройка, чтобы git позволял мне регистрировать файл как есть?(Я знаю, что есть аналогичная проблема, когда дело доходит до конца строки - и для этого есть настройка ...)

Баки для вашей помощи!

Симон

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Если вы можете сделать это воспроизводимым, во что бы то ни стало сообщите об ошибке

Вот мои два цента:

xxd -r > raw <<< "0000000: 4865 c582 c397 c3b8 0a                   He......."
cat raw # shows "Heł×ø" in UTF8 terminals

git init .
iconv -t UTF32BE raw  > test
git commit -am nobom test
iconv -t UTF32 raw  > test
git diff # reports: "Binary files a/test and b/test differ"
git commit -am bom test

Проверка наличия различных объектов:

git rev-list --objects --all
1d0cf0c1871a8743f947bd4582198db4fc1e72b1
c52c2a8c211a0031e01eef5d5121d5d0b4aabc40
4740254f8f52094afc131040afc80bb68265e78c 
fd3c513224525b3ab94a2512cbbfa918793640eb test
2d9da153c5febf0425437395227381d3a4784154 
2e54d36463fee81e89423d7d80ccc5d7003aba21 test

или, чуть более прямой

for h in $(git rev-list --all -- test); do git ls-tree $a; done
100644 blob 2e54d36463fee81e89423d7d80ccc5d7003aba21    test
100644 blob 2e54d36463fee81e89423d7d80ccc5d7003aba21    test

Это с git 1.7.4.1 на 64-битной Ubuntu


xxd test # no bom:
0000000: 0000 0048 0000 0065 0000 0142 0000 00d7  ...H...e...B....
0000010: 0000 00f8 0000 000a                      ........

xxd test # with bom
0000000: fffe 0000 4800 0000 6500 0000 4201 0000  ....H...e...B...
0000010: d700 0000 f800 0000 0a00 0000            ............

0 голосов
/ 21 июня 2011

Если вы не можете найти правильное решение, вы всегда можете добавить символ в файл, зафиксировать, удалить спецификацию и букву и изменить фиксацию.

...