Come usare git diff con i file epub
Tracciare file epub, docx, pptx e sqlite in Git
Non amo molto i formati binari, perché è difficile tenerne traccia delle modifiche. Per fortuna esistono modi per gestire in Git file binari come epub, docx, pptx e persino database SQLite, rendendoli più gestibili. In questo articolo vediamo alcune tecniche per usare git diff con questi formati binari e metterli sotto controllo di versione.
Configurazione di Git per diversi formati binari
Tracciare i formati basati su ZIP
Come spiegato in un articolo di tante.cc, alcuni formati binari come docx e pptx sono essenzialmente pacchetti ZIP di file XML, il che rende possibile una qualche forma di diff. Per permettere a Git di gestire questi formati, seguite questi passaggi:
Utenti Windows: in Windows il percorso ~/.config/git/attributes equivale a
-
Aprite il file
~/.gitconfig(createlo se non esiste ancora) e aggiungete la seguente sezione:[diff "zip"] textconv = unzip -c -aQuesta configurazione indica a Git di usare il comando
unzipper convertire il file ZIP in testo ASCII durante i diff. -
Create o modificate il file
YOUR_GIT_REPOSITORY/.gitattributeso~/.config/git/attributese aggiungete le seguenti righe:*.pptx diff=zip *.docx diff=zip *.epub diff=zip *.odt diff=zipQueste righe specificano quali estensioni di file Git deve trattare come formati ZIP per il diff.
Ora, quando usate git diff, Git decomprime automaticamente questi file e vi mostra le differenze in ASCII, facilitando il tracciamento delle modifiche in questi formati binari.
Gestire i vecchi file di Microsoft Office
Anche i file di Microsoft Office come .doc, .xls e .ppt possono essere gestiti configurando Git. Ecco i passaggi:
-
Aggiungete le seguenti righe al file
$HOME/.config/git/attributes:*.doc diff=doc *.xls diff=xls *.xlsx diff=xls *.ppt diff=pptIn questo modo queste estensioni vengono associate a configurazioni di diff specifiche.
-
Aggiungete quanto segue al file di configurazione globale
$HOME/.gitconfigo$HOME/.config/git/config:[diff "word"] textconv = catdoc binary = true [diff "xls"] textconv = xls2csv binary = true [diff "ppt"] textconv = catppt binary = trueQueste configurazioni usano un convertitore di testo diverso per ogni formato, così da rendere i diff più leggibili.
Gestire i vecchi file di Open Office
Se usate Open Office, potete seguire un approccio simile a quello per i file di Microsoft Office. Ecco come:
-
Nel file degli attributi aggiungete:
*.odt diff=odtIn questo modo l’estensione .odt viene associata alla configurazione di diff.
-
Nel file di configurazione aggiungete:
[diff "odt"] textconv = odt2txt binary = trueQuesta configurazione usa
odt2txtper convertire i file .odt ai fini del diff.
Gestire i file PDF
Anche i file PDF possono essere gestiti con Git. A tale scopo, apportate le seguenti modifiche al file degli attributi:
*.pdf diff=pdf
E nel file di configurazione:
[diff "pdf"]
textconv = pdf2txt.py
binary = true
Questa configurazione permette a Git di estrarre il testo dai PDF per i diff.
Tracciare le modifiche ai database SQLite
I database SQLite sono file binari e tracciarne le modifiche può essere difficile. Potete comunque ottenere in Git diff significativi per i database SQLite. Ecco come:
-
Aggiungete alla configurazione un tipo di diff chiamato “sqlite3”:
git config diff.sqlite3.binary true git config diff.sqlite3.textconv "echo .dump | sqlite3"In alternativa, aggiungete questo frammento a
~/.gitconfigo a.git/confignel vostro repository:[diff "sqlite3"] binary = true textconv = "echo .dump | sqlite3" -
Create un file chiamato
.gitattributes, se non esiste già, e aggiungete questa riga:*.sqlite diff=sqlite3
Ora, quando eseguite git diff o qualsiasi altro comando Git che produce un diff su un file SQLite, vedrete un diff ben formattato delle modifiche, il che facilita il tracciamento dei cambiamenti nei database SQLite.
Conclusione
In questo articolo abbiamo visto varie tecniche per gestire in Git formati binari come epub, docx, pptx e database SQLite. Configurando Git perché usi convertitori di testo e strategie di diff specifici, potete rendere questi file binari più gestibili e avere una visione più chiara delle loro modifiche. Con questi approcci potete tracciare e mettere sotto controllo di versione una gamma più ampia di formati nei vostri repository Git.
Per maggiori informazioni e ulteriori possibilità di personalizzazione, consultate le fonti indicate e la documentazione di Git:
- Personalizzare gli attributi Git (Git Book, in inglese)
- Git advanced (text) diff: .odt, .pdf, .doc, .xls, .ppt – Maxime Bréhin (Medium)
- Tracking SQLite Database Changes in Git – Garrit’s Notes
- Simon Willison sul salvataggio di SQLite come testo in git, su Hacker News
- sqlite-diffable, uno strumento per Datasette