Archive pour le mot-clef ‘comparaison’

[Linux] Comparer deux dossier récursivement avec hdiff

Mardi 6 juillet 2010

En voulant écrire ma news annonçant la mise en ligne de la nouvelle version de mes styles phpBB3, j’ai voulu donner le lien de la page de FluxBB.fr sur l’utilisation de WinMerge et hdiff. Or, ils sont en train de migrer et cette page n’est plus disponible, mais par contre, à l’heure où j’écris ces lignes, la page est encore en cache sur Google. J’en profite donc pour écrire ce billet afin de garder une page explicative à porter de main, ce qui sera autant utile à moi qu’à d’autres Linux-users non-familiers avec Perl qui veulent mettre à jour leur forum ou style sans se péter la yeule, en bon Québécois.

Préparer le terrain

Commencez par aller télécharger le script sur ce lien

Hdiff est à exécuter où vous le voulez.

Si votre hébergement vous permet un accès en ssh, vous pouvez exécuter le script sur votre site. Sinon, vous pouvez le faire en local.

Pour cela, sous Linux (ou Windows, avec Cygwin ou ActivePerl), décompressez d’abord les deux dossiers à comparer si besoin :

unzip dossier1.zip

puis

unzip dossier2.zip

Un petit coup de ls -l vous indiquera que vos deux dossiers sont bien décompressés.

caroline@caroline-desktop:~$ ls -l | grep dossier
drwxrwxrwx 6 caroline caroline 4096 2010-07-05 05:31 dossier1
-rw-r--r-- 1 caroline caroline 1198101 2010-07-05 05:34 dossier1.zip
drwxrwxrwx 6 caroline caroline 4096 2010-07-05 05:30 dossier2
-rw-r--r-- 1 caroline caroline 1103539 2010-07-05 05:34 dossier2.zip

Maintenant, exécutez hdiff récursivement comme suit :

~/hdiff -r -o hdiff-dossier1_to_dossier2.html dossier1 dossier2

Si hdiff et vos fichiers ne sont pas dans le dossier racine de votre /home, indiquer le chemin relatif du script à partir de la racine du dossier personnel ! Ainsi, si hdiff et vos dossiers sont situés dans le dossier test qui se trouve à l’intérieur de /home/toto, vous devez donc faire comme ceci :

~/test/hdiff -r -o hdiff-dossier1_to_dossier2.html dossier1 dossier2

Ce n’est pas obligatoire de mettre les noms exacts des dossiers pour le nom du fichier généré, du moment que vous pouvez vous y retrouver avec les versions. :)

Sinon, je suis toujours ouverte à une proposition d’un soft graphique pour Linux qui fait la comparison récursive du code de chacun des fichiers d’un dossier, et non juste soit un seul fichier ou juste la liste des fichiers. Si quelqu’un en connaît un qui permet de faire une chose similaire à ce que fait WinMerge, je suis ouverte, car c’est vrai que c’est pas évident pour quelqu’un qui n’est pas familier avec les scripts Perl.

Sources : FluxBB.fr