Comparez deux arborescences avec diff, confortablement avec riff – Le blog de Seboss666

Comparer des Arborescences avec Diff et Riff : Une Approche Innovante

Dans le cadre de la migration de projets entre différentes instances de GitLab, j’ai été amené à adapter des pipelines GitLab-CI. Cette tâche a révélé des différences significatives entre les environnements : des machines virtuelles d’un côté et des conteneurs Kubernetes de l’autre. Pour valider les jobs, j’ai dû comparer le contenu des artefacts générés. Étonnamment, j’ai découvert que l’outil diff pouvait accomplir cette tâche efficacement.

Une Redécouverte d’un Outil Classique

Il est fascinant de constater que des outils que l’on utilise depuis des années peuvent encore nous surprendre. En effet, diff a la capacité de comparer non seulement un fichier, mais aussi des arborescences complètes, tant que l’on travaille avec des fichiers texte. Dans mon cas, les bibliothèques Flutter que je testais étaient parfaitement adaptées à cette méthode, étant des archives tar.gz sans fichiers binaires.

Pour commencer, j’ai récupéré mes deux versions : l’originale et celle issue du nouveau pipeline. J’ai créé deux dossiers pour extraire les paquets respectifs :

bash
mkdir 1.1.{0,1}
tar xfz ~/Downloads/app-1.1.0.tar.gz -C 1.1.0/
tar xfz ~/Downloads/app-1.1.1.tar.gz -C 1.1.1/
diff -rus 1.1.0/ 1.1.1/ > results.txt

Cette simple commande permet de comparer les deux versions et de générer un fichier de résultats. Sur des arborescences volumineuses, cette méthode peut rapidement devenir complexe.

Une Visualisation Améliorée avec Riff

Pour rendre les résultats plus lisibles, j’ai cherché un outil plus visuel et suis tombé sur Riff. Cet utilitaire, écrit en Rust, prend la sortie de diff et la présente de manière graphique. Pour ceux qui souhaitent l’installer, un grand nombre de méthodes sont disponibles sur la page du projet Riff.

Attention : Si vous utilisez asdf, sachez que le plugin Riff peut pointer vers un autre outil obsolète. Personnellement, j’ai opté pour télécharger le binaire directement depuis GitHub afin de l’ajouter à mon chemin d’accès.

L’utilisation de Riff est assez intuitive. Vous pouvez passer le fichier de résultats que vous avez créé :

bash
riff results.txt

Bien que vous puissiez également utiliser un pipe pour diriger directement la sortie de diff vers Riff, le résultat est visuellement convaincant. Voici un exemple de ce que cela peut donner :

Exemple de sortie de Riff

Dans mon cas, les différences étaient minimes, ce qui a permis de valider rapidement la conversion. J’ai appliqué cette méthode à l’ensemble des bibliothèques Flutter concernées par la migration, évitant ainsi la latence d’un développeur disponible pour tester un code identique.

Anticiper les Coûts et Éviter les Frais

Dans un autre projet, j’ai dû aller plus loin, car Riff affichait de grandes différences dans des fichiers XML. En réalité, les blocs étaient simplement réorganisés, mais la structure des fichiers était respectée. Cette approche m’a permis de confirmer l’intégrité des fichiers tout en réduisant le temps de validation.

Pour ceux qui souhaitent réserver un service ou un outil similaire, il est crucial de comparer les options disponibles afin d’anticiper les coûts et d’éviter les frais inutiles. Des plateformes comme Booking ou GetYourGuide peuvent être d’une grande aide pour cela.

En somme, l’utilisation d’outils comme diff et Riff pour comparer des arborescences s’avère non seulement efficace mais également essentielle pour garantir la qualité des migrations de projets.

Comparez deux arborescences avec diff, confortablement avec riff – Le blog de Seboss666
Source
Partager ici :
Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire