Git verwischen und reinigen Filter

670
Anaphory

Ich habe einige Dateien in einem Git-Repository, die durch Unicode-Tabs getrennte Wertedateien sind. Ich weiß, dass diese Dateien zum Zeitpunkt der Generierung entweder UTF-8 oder UTF-16 codiert sind.

Für meine Windows-Workstation, auf der ich sie manchmal in Excel bearbeiten möchte (nicht fragen), möchte ich sie mit UTF-16 verschmieren, unabhängig davon, ob sie als UTF-8 oder UTF-16 ankommen.

In der anderen Richtung möchte ich jedoch immer UTF-8 in der internen Darstellung im Repository haben. (Ich möchte auch, dass diffs aussagekräftig sind, daher gilt für das diffAttribut dasselbe "from any to UTF-8" .)

Derzeit .gitattributesdefiniert mein

*.tsv diff=winutf16 filter=winutf16 

welche bedeutet ( .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 

Da ich weiß, dass es nur eine dieser beiden Unicode-Codierungsoptionen ist, sollte ich in der Lage sein, die Codierung mit etwas Ähnlichem zu erhalten -f $(file -b --mime-encoding file.tsv), aber dazu müsste ich einen Dateinamen angeben, wohingegen die docs den Status angeben

Wenn der Befehl smudge angegeben wird, erhält der Befehl das blob-Objekt von seiner Standardeingabe, und seine Standardausgabe wird zur Überprüfung der Worktree-Datei verwendet. In ähnlicher Weise wird der Befehl clean zum Konvertieren des Inhalts der Worktree-Datei beim Einchecken verwendet.

also bekomme ich nur einen blob zum stdin, einmal.

Gibt es eine saubere Möglichkeit, dies unter Windows zu tun, ohne dass etwas installiert wird, was bereits impliziert ist?

2

0 Antworten auf die Frage