Eigene Filter für git diff


In einem aktuellen Projekt arbeite ich derzeit mit einer sqlite3 Datenbank (die innerhalb von git versioniert wird). Mit dem folgenden Trick zeigt ein git diff ein lesbares Diff der Änderungen in der Datenbank an:

~/.gitconfig

...
[diff "sqlite3"]
         textconv = bash -c 'echo .dump | sqlite3 "$0"'

Hiermit wird git angewiesen, dass wann immer es auf eine sqlite3 Datenbank trifft, diese vor einem Diff mit dem unter textconv eingetragenen Befehl konvertieren soll.

Wie weiß git, ob es eine sqlite3 Datenbank ist?

Hierfür muss leider pro Projekt in [PROJEKT_DIR]/.git/info/attributes die Dateizuordnung eingetragen werden:

> cat .git/info/attributes
*.sqlite3 diff=sqlite3

Dies kann selbsverständlich für beliebige Dateien (z.B. PDFs, tar.gz oder odt) ergänzt werden. Wichtig ist nur, dass der Befehl unter textconv sinnvolle Zeilen aus der Ausgangsdatei erzeugt.

Kommentare per Mail an post@wolfgang-jung.net.