Git borrar e limpar filtros

2

Eu tenho alguns arquivos em um repositório git que são arquivos de valor separados por tabulações unicode. Eu sei que esses arquivos são UTF-8 ou UTF-16 codificados no tempo de geração.

Para minha estação de trabalho Windows, onde às vezes quero editá-las no Excel (não pergunte), quero borrá-las em UTF-16, não importa se elas chegam como UTF-8 ou UTF-16.

Mas na outra direção, eu sempre quero ter o UTF-8 na representação interna do repositório. (Eu também quero que os diffs sejam significativos, então o mesmo "de qualquer coisa para UTF-8" se aplica ao atributo diff .)

Atualmente, meu .gitattributes define

*.tsv diff=winutf16 filter=winutf16

que significa ( .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

Dado que eu sei que é apenas uma destas duas opções de codificação Unicode, eu deveria ser capaz de obter a codificação usando algo como -f $(file -b --mime-encoding file.tsv) , mas isso exigiria que eu especificasse um nome de arquivo, enquanto o estado docs

Upon checkout, when the smudge command is specified, the command is fed the blob object from its standard input, and its standard output is used to update the worktree file. Similarly, the clean command is used to convert the contents of worktree file upon checkin.

então tudo que eu obtenho é uma bolha para stdin, uma vez.

Existe uma maneira limpa de fazer isso no Windows sem instalar coisas além do que já está implícito?

    
por Anaphory 05.10.2016 / 16:54

0 respostas