← Articles

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>).

  1. Ouvrez votre fichier ~/.gitconfig (créez-le s’il n’existe pas encore) et ajoutez la section suivante :

    [diff "zip"]
    textconv = unzip -c -a
    

    Cette configuration indique à Git d’utiliser la commande unzip pour convertir le fichier zip en texte ASCII lors des diffs.

  2. Créez ou modifiez le fichier YOUR_GIT_REPOSITORY/.gitattributes ou ~/.config/git/attributes et ajoutez les lignes suivantes :

    *.pptx diff=zip
    *.docx diff=zip
    *.epub diff=zip
    *.odt diff=zip
    

    Ces 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 :

  1. Ajoutez les lignes suivantes à votre fichier $HOME/.config/git/attributes :

    *.doc diff=doc
    *.xls diff=xls
    *.xlsx diff=xls
    *.ppt diff=ppt
    

    Cela associe ces extensions à des configurations de diff spécifiques.

  2. Ajoutez ce qui suit à votre fichier de configuration global $HOME/.gitconfig ou $HOME/.config/git/config :

    [diff "word"]
      textconv = catdoc
      binary = true
    [diff "xls"]
      textconv = xls2csv
      binary = true
    [diff "ppt"]
      textconv = catppt
      binary = true
    

    Ces 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 :

  1. Dans votre fichier d’attributs, ajoutez :

    *.odt diff=odt
    

    Cela associe l’extension .odt à la configuration de diff.

  2. Dans votre fichier de configuration, ajoutez :

    [diff "odt"]
        textconv = odt2txt
        binary = true
    

    Cette configuration utilise odt2txt pour 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 :

  1. 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 ~/.gitconfig ou au .git/config de votre dépôt :

    [diff "sqlite3"]
      binary = true
      textconv = "echo .dump | sqlite3"
    
  2. Créez un fichier .gitattributes s’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 :