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.