Linux Embedded

Le blog des technologies libres et embarquées

Gérer les fichiers OpenOffice avec git

Git est un système de gestion de configuration révolutionnaire. Nous l'utilisons tous, nous l'adorons tous, et nous voudrions l’utiliser pour gérer plus de choses.

Pourtant, git a des limites... en particulier dans la gestion des formats binaires.

Il y a un format binaire qu'il est assez courant de vouloir gérer en conf, le format odt (commun à libreoffice, openoffice et quelques autres). Dans cet article, nous allons aborder l'utilisation de git pour pouvoir voir les différences textuelles entre deux révisions d'un document openoffice.

Depuis la version 1.6, git peut utiliser des outils externes pour transformer des données binaires en données textuelles puis utiliser ce résultat pour afficher les différences entre deux révisions (git utilise toujours une comparaison bit à bit pour déterminer si il y a des différences. La transformation en texte ne concerne que l'affichage). Nous allons ajouter une nouvelle méthode de transformation en utilisant un petit outil appelé odt2txt puis nous allons apprendre à git à utiliser cet outil pour l'analyse des fichiers odf.

Installation de odt2txt

odt2txt est un outil en ligne de commande qui extrait les données textuelles des différents formats de la famille OpenOffice. Les différences de mise en page ne seront pas indiquées mais c'est tout de même bien utile pour comparer des révisions quand on cherche à comprendre les évolutions d'un document dans un historique git.

Cet outil fait généralement partie des distributions linux mais, si ce n'est pas le cas, il est trivial à recompiler.

commencez par télécharger les sources

git clone git://repo.or.cz/odt2txt.git

Rendez vous dans le répertoire créé et tapez simplement

make

Et voila, vous avez un binaire appelé odt2txt il ne vous reste plus qu'à le déplacer quelque-part dans votre path (je recommande le répertoire ~/bin, mais chacun ses préférences).

configuration de git

Tout d'abord il va falloir indiquer à git la nouvelle méthode à utiliser pour transformer des données binaires en texte. Cela se fait dans les différents fichiers de configuration de git. Ici nous ajouterons la méthode à la configuration utilisateur mais il est possible de le faire pour un dépôt particulier ou (si vous êtes administrateur de votre machine) pour tous les utilisateurs.

les commandes suivantes indiqueront à git une nouvelle méthode de textualisation appelée odf

git config --global diff.odf.textconv odt2txt
git config --global diff.odf.cachetextconv true

Ces commandes vont créer une section dans votre fichier de configuration ~/.gitconfig

[diff "odf"]
   textconv = odt2txt
   cachetextconv = true

(il est par ailleurs possible d'ajouter ce texte directement à la main mais je préfère le faire en ligne de commande).

La première ligne donne le nom d'un programme qui prend un fichier binaire comme paramètre et fournit une sortie textuelle sur stdout.

La deuxième ligne précise que les résultats de la transformation peuvent être gardés en cache et n'ont pas besoin d'être régénérés à chaque utilisation.

La dernière étape consiste à lister quels fichiers peuvent utiliser cette nouvelle méthode de transformation. Pour cela nous utilisons un autre fichier de configuration de git : gitattributes. Ce fichier sert principalement à modifier des propriétés par fichier au sein d'un dépot. Par défaut git n'a pas de fichier global gitattributes, mais c'est facile à corriger

git config --global core.attributesfile ~/.gitattributes

Git utilisera maintenant le fichier ~/.gitattributes quand il recherchera des propriétés pour un fichier et qu'il n'en trouve pas dans le dépot courant. Mettez les lignes suivantes dans ce fichier

*.ods diff=odf
*.odf diff=odf
*.odt diff=odf
*.odp diff=odf

Et voila, vous pouvez maintenant utiliser git diff, git blame, git gui blame et tous les autres sur vos fichiers odt.

conclusion

Notons tout de même que si cette solution est très pratique pour visualiser les différences entre les révisions d'un document binaire, elle ne rend pas leur utilisation complètement transparente. En particulier il n'y a pas de gestion de merge entre documents binaires.

Malgré ces limitations, cette petite manipulation simplifie beaucoup la vie et permet de travailler de façon bien plus confortable avec la documentation binaire. Il serait dommage de s’arrêter en si bon chemin...

Vous trouverez dans votre distribution linux préférée un certain nombre d'outils pour convertir des formats divers en texte. Citons notamment pdftotext (généralement fourni par un paquetage nommé poppler) docx2txt, mais pourquoi ne pas utiliser exiv2 ou id3tag pour voire des différences dans des fichiers son ou image...

Liens

Mots-clés :

    • le 04 novembre 2013 à 10:23

      [...] Note : l’affichage des différences entre les versions est réalisé à l’aide d’odt2txt comme décrit dans un précédent article. [...]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.