[Linux] Comparer deux dossier récursivement avec hdiff

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

Ce contenu a été publié dans Développement Web, Linux et logiciels libres, avec comme mot(s)-clé(s) , , , . Vous pouvez le mettre en favoris avec ce permalien.

4 réponses à [Linux] Comparer deux dossier récursivement avec hdiff

  1. mathedit dit :

    Ça a l’air sympa et plus efficace que la solution que j’utilisais, elle consistait en un script bash simple mais peu performant sur les gros dossiers.

    Je l’avais pris ici : http://nicofo.tuxfamily.org

    Pour les comparaisons (fichiers et dossiers) en graphique j’utilise « meld », qui permet même de faire des comparaisons triples.

  2. Ishimaru dit :

    Merci, je vais regarder ça, surtout que je ne sais pas si c’est ma Jaunty qui manifeste des signes de fatigue, mais ces derniers jours, à chaque fois que je testais hdiff, une erreur était retournée, comme si diff avait un problème, alors que ça allait rondement (selon mes souvenirs) quand mon installation était plus jeune. Je vérifierai une fois rendue sur Lucid. En attendant, je vais tester Meld et ensuite, je mettrai ma news à jour sur Ishimaru-Design pour ceux qui veulent connaître les changements entre deux versions d’un de mes styles.

  3. Ishimaru dit :

    Je viens de l’installer, mais il ne se lance pas, même après un redémarrage du système !
    Il faut vraiment que je réinstalle Ubuntu. Ça fait au dessus d’un mois que je veux upgrader vers Lucid, mais j’ai ces commandes à finir avant.

  4. Ping : Enfin sur Ubuntu 10.04 LTS ! « Ishimaru-Blog

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree