Comment faire un git diff de fichiers epub
Suivre les fichiers epub, docx, pptx et SQLite dans Git
Je ne suis pas un grand fan des formats binaires, car il est difficile d’en suivre les modifications. Heureusement, il existe des moyens de gérer dans Git des fichiers binaires comme epub, docx, pptx, et même des bases de données SQLite, pour les rendre plus maniables. Dans cet article, nous verrons des techniques pour faire un git diff de ces formats binaires et les placer sous gestion de versions.
Configuration de Git pour différents formats binaires
Suivre les formats de fichiers basés sur ZIP
Comme l’explique un article de tante.cc, certains formats binaires comme docx et pptx sont en fait des archives zip de fichiers XML, ce qui rend possible une certaine forme de diff. Pour que Git gère ces formats, suivez ces étapes :
Utilisateurs de Windows : sous Windows, le chemin ~/.config/git/attributes équivaut à <YourWindowsHome>.config\git\attributes, où <YourWindowsHome> est le répertoire personnel de votre compte utilisateur Windows (C:\Users\<YourUsername>).
-
Ouvrez votre fichier
~/.gitconfig(créez-le s’il n’existe pas encore) et ajoutez la section suivante :[diff "zip"] textconv = unzip -c -aCette configuration indique à Git d’utiliser la commande
unzippour convertir le fichier zip en texte ASCII lors des diffs. -
Créez ou modifiez le fichier
YOUR_GIT_REPOSITORY/.gitattributesou~/.config/git/attributeset ajoutez les lignes suivantes :*.pptx diff=zip *.docx diff=zip *.epub diff=zip *.odt diff=zipCes lignes indiquent quelles extensions Git doit traiter comme des formats zip pour le diff.
Désormais, lorsque vous utilisez git diff, Git décompresse automatiquement ces fichiers et affiche les différences en ASCII, ce qui facilite le suivi des modifications de ces formats binaires.
Gérer les anciens fichiers Microsoft Office
Pour les fichiers Microsoft Office comme .doc, .xls et .ppt, vous pouvez aussi configurer Git. Voici les étapes :
-
Ajoutez les lignes suivantes à votre fichier
$HOME/.config/git/attributes:*.doc diff=doc *.xls diff=xls *.xlsx diff=xls *.ppt diff=pptCela associe ces extensions à des configurations de diff spécifiques.
-
Ajoutez ce qui suit à votre fichier de configuration global
$HOME/.gitconfigou$HOME/.config/git/config:[diff "word"] textconv = catdoc binary = true [diff "xls"] textconv = xls2csv binary = true [diff "ppt"] textconv = catppt binary = trueCes configurations utilisent un convertisseur de texte différent pour chaque format afin de rendre les diffs plus lisibles.
Gérer les anciens fichiers OpenOffice
Si vous utilisez OpenOffice, vous pouvez procéder de la même manière qu’avec les fichiers Microsoft Office. Voici comment :
-
Dans votre fichier d’attributs, ajoutez :
*.odt diff=odtCela associe l’extension .odt à la configuration de diff.
-
Dans votre fichier de configuration, ajoutez :
[diff "odt"] textconv = odt2txt binary = trueCette configuration utilise
odt2txtpour convertir les fichiers .odt en vue du diff.
Gérer les fichiers PDF
Même les fichiers PDF peuvent être gérés avec Git. Pour cela, apportez la modification suivante à votre fichier d’attributs :
*.pdf diff=pdf
Et dans votre fichier de configuration :
[diff "pdf"]
textconv = pdf2txt.py
binary = true
Cette configuration permet à Git d’extraire le texte des PDF pour les diffs.
Suivre les modifications d’une base SQLite
Les bases de données SQLite sont des fichiers binaires, et suivre leurs modifications peut être difficile. On peut néanmoins obtenir des diffs pertinents pour les bases SQLite dans Git. Voici comment :
-
Ajoutez un type de diff appelé « sqlite3 » à votre configuration :
git config diff.sqlite3.binary true git config diff.sqlite3.textconv "echo .dump | sqlite3"Vous pouvez aussi ajouter cet extrait à votre
~/.gitconfigou au.git/configde votre dépôt :[diff "sqlite3"] binary = true textconv = "echo .dump | sqlite3" -
Créez un fichier
.gitattributess’il n’existe pas encore et ajoutez cette ligne :*.sqlite diff=sqlite3
Désormais, lorsque vous exécutez git diff ou toute autre commande Git qui produit un diff sur un fichier SQLite, vous verrez un diff bien formaté des modifications, ce qui facilite leur suivi.
Conclusion
Dans cet article, nous avons exploré diverses techniques pour gérer dans Git des formats binaires comme epub, docx, pptx et les bases SQLite. En configurant Git pour qu’il utilise des convertisseurs de texte et des stratégies de diff spécifiques, vous rendez ces fichiers binaires plus maniables et gagnez en visibilité sur leurs modifications. Grâce à ces approches, vous pouvez suivre et versionner efficacement un plus large éventail de formats dans vos dépôts Git.
Pour plus d’informations et d’options de personnalisation, consultez les sources citées et la documentation de Git :
- Customizing Git Attributes (Git Book - English)
- Git advanced (text) diff: .odt, .pdf, .doc, .xls, .ppt – Maxime Bréhin (Medium)
- Tracking SQLite Database Changes in Git – Garrit’s Notes
- Simon Willison sur le stockage de SQLite en texte dans git, sur Hacker News
- sqlite-diffable - un outil pour Datasette