Можно ли использовать что-то вроде reposurgeon, чтобы превратить все коммиты файла UTF-16 в UTF-8 в git-репо? - PullRequest
0 голосов
/ 16 октября 2011

У меня есть git-репозиторий, в котором есть файл UTF-16. Это единственный UTF-16, случайно, файл может быть закодирован в 7-битной ASCII без потери данных. Я хотел бы использовать что-то вроде reposurgeon для преобразования файла в UTF-8, чтобы git diff работал со старыми ревизиями файла, и мне не пришлось прибегать к git difftool. Это возможно?

1 Ответ

3 голосов
/ 16 октября 2011

Почему бы вам просто не преобразовать файл в UTF-8 и зафиксировать его, например, с:

iconv -f UTF-16 -t UTF-8 input-file.txt > input-file.txt.fixed
# Check here that the conversion worked OK
mv -i input-file.txt.fixed input-file.txt
git commit -m 'Convert input-file.txt from UTF-16 to UTF-8' input-file.txt

Обновление после уточняющего комментария:

Если вы хотите переписывать этот файл при каждом коммите в истории HEAD, вы можете использовать git filter-branch, что-то вроде:

git filter-branch --tree-filter \
    'iconv -f UTF-16 -t UTF-8 input-file.txt > input-file.txt.fixed  &&
     mv input-file.txt.fixed input-file.txt' HEAD

Конечно, если вы переписываете историю таким образом, это может вызвать проблемы, если вы поделились этим хранилищем с кем-либо. (Я не проверял эту команду - используйте ее осторожно, вероятно, только новый клон вашего хранилища.)

...