Git für Binärdateien¶
git diff
lässt sich konfigurieren, sodass es auch bei Binärdateien sinnvolle
Diffs anzeigen kann.
… für Excel-Dateien¶
Hierfür benötigen wir openpyxl und pandas:
$ pipenv install openpyxl pandas
Anschließend können wir in exceltocsv.py
pandas.DataFrame.to_csv zum Konvertieren der
Excel-Dateien verwenden:
import sys
from io import StringIO
import pandas as pd
for sheet_name in pd.ExcelFile(sys.argv[1]).sheet_names:
output = StringIO()
print("Sheet: %s" % sheet_name)
pd.read_excel(sys.argv[1], sheet_name=sheet_name).to_csv(
output, header=True, index=False
)
print(output.getvalue())
Nun fügt ihr noch in der globalen Git-Konfiguration in der Datei ~/.gitconfig
den folgenden Abschnitt hinzu:
[diff "excel"]
textconv=python3 /PATH/TO/exceltocsv.py
binary=true
Schließlich wird in der globalen ~/.gitattributes
-Datei unser
excel
-Konverter mit *.xlsx
-Dateien verknüpft:
*.xlsx diff=excel
… für PDF-Dateien¶
Hierfür wird zusätzlich pdftohtml
benötigt. Ihr installiert es mit
$ sudo apt install poppler-utils
$ brew install pdftohtml
Anschließend fügt ihr den folgenden Abschnitt der globalen Git-Konfiguration in der
Datei ~/.gitconfig
hinzu:
[diff "pdf"]
textconv=pdftohtml -stdout
Schließlich wird in der globalen ~/.gitattributes
-Datei unser
pdf
-Konverter mit *.pdf
-Dateien verknüpft:
*.pdf diff=pdf
Nun wird beim Aufruf von git diff
die PDF-Datei zunächst konvertiert und
dann ein Diff über den Ausgaben des Konverters durchgeführt.
… für Word-Dokumente¶
Auch Unterschiede in Word-Dokumenten lassen sich anzeigen. Hierfür kann Pandoc verwendet werden, das einfach installiert werden kann mit
$ sudo apt install pandoc
$ brew install pandoc
Herunterladen und Installieren der aktuellen .msi
-Datei von GitHub.
Anschließend wird der globalen Git-Konfiguration ~/.gitconfig
folgender
Abschnitt hinzugefügt:
[diff "word"]
textconv=pandoc --to=markdown
binary=true
prompt=false
Schließlich wird in der globalen ~/.gitattributes
-Datei unser
word
-Konverter mit *.docx
-Dateien verknüpft:
*.docx diff=word
Die gleiche Vorgehensweise kann auch angewandt werden, um nützliche Diffs von
anderen Binärdateien zu erhalten, z.B. *.zip
,
*.jar
und andere Archive mit unzip
oder für Änderungen in den
Metainformationen von Bildern mit exiv2
. Zudem gibt es
Konvertierungswerkzeuge für die Umwandlung von *.odt
, *.doc
und
anderen Dokumentenformaten in einfachen Text. Für Binärdateien, für die es
keinen Konverter gibt, reichen oft auch Strings aus.