Git пятна и чистые фильтры

588
Anaphory

У меня есть несколько файлов в репозитории git, которые представляют собой файлы значений, разделенные табуляцией Юникод. Я знаю, что эти файлы во время генерации кодируются в кодировке UTF-8 или UTF-16.

Для моей рабочей станции Windows, где я иногда хочу редактировать их в Excel (не спрашивайте), я хочу размазать их в UTF-16, независимо от того, прибывают ли они как UTF-8 или UTF-16.

Но в другом направлении я всегда хочу иметь UTF-8 во внутреннем представлении в хранилище. (Я также хочу, чтобы различия имели смысл, поэтому то же самое «от чего-либо до UTF-8» применимо к diffатрибуту.)

В настоящее время мой .gitattributesопределяет

*.tsv diff=winutf16 filter=winutf16 

что означает ( .git/config)

[filter "winutf16"] clean = iconv -f utf-16 -t utf-8 smudge = iconv -f utf-8 -t utf-16 required [diff "winutf16"] textconv = iconv -f utf-16 -t utf-8 

Учитывая, что я знаю, что это только один из этих двух вариантов кодирования Unicode, я должен иметь возможность получить кодировку, используя что-то вроде -f $(file -b --mime-encoding file.tsv), но это потребовало бы от меня указать имя файла, тогда как состояние документа

При извлечении, когда указана команда smudge, команда получает объект blob со стандартного ввода, а его стандартный вывод используется для обновления файла рабочего дерева. Аналогично, команда clean используется для преобразования содержимого файла рабочего дерева при регистрации.

так что все, что я получаю, это капля к stdin, однажды.

Есть ли чистый способ сделать это в Windows без установки чего-либо, кроме того, что уже подразумевается?

2

0 ответов на вопрос