Outil de diff/merge

A l’origine, je voulais parler des différents outils de diff/merge car je n’étais pas fan de KDIFF3 fournit avec Tortoise HG.

Comme je suis un garçon qui se disperse, j’ai commencé à écrire un soit disant « petit billet » qui est devenu tellement gros, que j’ai oublié de quoi je voulais parler à l’origine.

Donc, pour ceux qui ne comprennent pas ce que c’est que Tortoise HG ou Mercurial, lisez le billet précédent 😉

Revenons à nos moutons: je ne suis pas fan de KDIFF3. J’avais fait une étude des différents outils de Diff/Merge pour Windows, et j’ai décidé de le publié pour la prospérité 🙂

Avant de commencer, je tiens à préciser la différence entre un Diff et un Merge:

  • Diff: comparaison entre 2 fichiers seulement.
  • Merge: comparaison entre 3 fichiers: l’original, le votre, et le modifier par quelqu’un d’autre. C’est comme ça qu’on résout les conflits quand il y en a avec un gestionnaire de source.

KDiff3

http://kdiff3.sourceforge.net/

Outil à l’origine de KDE. Je l’ai très peu utilisé, je me demande pourquoi…

TortoiseMerge

http://tortoisesvn.tigris.org/TortoiseMerge.html

Fournit avec TortoiseSVN, il est très bien. Le choix des couleurs était parfois douteux, et rendait la lecture du code difficile (voir illisible) mais c’est corrigé depuis une certaine version.
Fonctionne bien avec les Merge, mais il est dommage de ne pas pouvoir éditer le source pendant la résolution d’un conflit (c’est très souvent nécessaire lors d’un conflit).
Il est aussi dommage de ne pas pouvoir ignorer le changement de type « espace » ou « tabulation ».

WinMerge

http://winmerge.org/

Contrairement à ce que son nom indique, WinMerge ne fait pas les Merges, mais seulement les Diff.
Il est beaucoup plus clair et agréable que TortoiseMerge, et l’édition du source est possible pendant la comparaison (c’est pourquoi je l’utilise souvent).

WinMerge fonctionne aussi avec les répertoires, et ça c’est trop class 🙂

DiffMerge

http://www.sourcegear.com/diffmerge/

Certains préfèrent la vue « 3 colonnes » pour effectuer un Merge. C’est que que DiffMerge vous propose.

Meld

http://meld.sourceforge.net/

Si KDIFF3 vient du monde KDE, Meld vient du monde Gnome.

Je triche un peu: ce n’est pas un outil Windows. Mais il est possible de le faire marcher sous Windows (installation de Python+GTK): http://live.gnome.org/Meld/Windows.
Je l’ai aussi fait marcher avec CoLinux (Linux natif sous Windows).

Si j’en ai la patience, je vous ferais un petit package prêt à installer (avec python+gtk embarqué).
Comme j’ai eu la patience aujourd’hui, voici le Setup pour Windows de Meld (EN EXCLUSIVITE!!!): http://bitbucket.org/grozeille/meld/downloads/Install.exe

Eclipse

http://www.polarion.com/products/svn/subversive.php

Je triche encore, mais pour ceux qui utilise SVN, Eclipse et son connecteur offre une vue « Synchronize » très pratique que je regrette sous VisualStudio.

Elle permet en effet de vous facilité la phase « j’update puis je commit » avec une vue globale de ce qui va se passer. L’éditeur permet de gérer aussi bien les Diff que les Merge.
Pour ma part, j’ai souvent un Eclipse d’ouvert pour diverses choses que VisualStudio ne fait pas (ou mal) comme l’édition de Javascript ou de schéma XSD ou WSDL.
Cela ne me gêne donc pas d’utiliser le même outil pour les Commit/Update SVN, mais j’avoue qu’Eclipse est loin d’être léger et qu’il est plus simple d’utiliser ToirtoiseMerge ou WinMerge dans certaines conditions.

NotePad++

http://notepad-plus.sourceforge.net/fr/site.htm

Parfois, j’utilise Notepad++ pour un simple diff. C’est très léger mais pratique.

WinDiff

http://en.wikipedia.org/wiki/WinDiff

Saviez-vous qu’avec l’installation de VisualStudio, qui inclut le « Plateform SDK » vous aviez déjà à votre disposition un diff visuel?

J’avoue, il pique les yeux…

Perforce Merge

http://www.perforce.com/perforce/products/merge.html

Perforce est un gestionnaire de code source, pas très populaire. Dans la suite d’outils offerts avec Perforce, il y a PerforceMerge, qui est gratuit.
J’avoue être agréablement surpris car il est clair et gère bien les Merges.

Araxis

http://www.araxis.com/merge/index.html

Je triche ENCORE UNE FOIS: ce n’est PAS un outil gratuit.
Mais je trouve qu’il a le mérite d’être cité, car je l’ai déjà utilisé en entreprise, et qu’il est très efficace (avec vue Merge en 3 colonnes).

Autres…

Pour tous ceux que je n’ai pas cités, vous avez une liste exhaustive sur Wikipedia: http://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools

Publicités

9 réflexions sur “Outil de diff/merge

    1. Connait pas, pour l’instant, ma conclusion c’est que P4Merge est très bien, et me va aussi bien pour les Diff que les Merge:
      – il est capable d’ignorer les espaces
      – sont interface de merge est lisible

      Même si je trouve « Meld » plus esthétique, il ne fait pas de merge auto (tout sauf conflit) donc c’est plutôt pénible.

      Je vais tester Beyond Compare, mais j’accroche pas à première vue.

      1. Keuwah? Tu fais un comparatif diffmerge et tu connais pas Scooter Beyond Compare ?
        Non mais allo quoi! C’est la Rolls des diffmerge!

    1. Haha, non, malheureusement je ne suis pas payé pour faire ça. Je suis tout simplement en congés 😉
      J’ai tellement de projets et d’idées en tête… il me faudrait encore une autre semaine de vacances.

  1. De mon côté les favoris sous windows sont winmerge et diffmerge.

    J’ai aussi utilisé meld sous linux dont je suis tombé accro par sa simplicité, merci bcp pour le Setup je vais tester de ce pas!

    1. J’ai galéré pour le faire:
      – j’ai pris les derniers sources du GIT officiel
      – j’ai fait le « setup.py » pour py2exe (à tâtons, en devinant les dépendances)
      – j’ai deviné les fichiers manquant de GTK à copier manuellement (j’ai ensuite trouvé un site qui l’explique -_-« )
      – j’ai hacké le code car il y avait des problèmes sur les chemins relatif quand le programme est sous la forme d’exe
      – j’ai fait mon tout premier script NSI!

      J’ai passé presque une journée… je me demande pourquoi.
      J’ai contacté l’équipe de MELD sur la mailling list pour qu’ils intègrent mes changements, j’attends une réponse.

      Il reste une chose qui ne marche pas: l’intégration avec le SCM comme SVN, GIT ou HG. En effet, si tu fais [File>New>Version Control Browser], tu obtiens une vue sur ton répertoire et la possibilité de voir les fichiers modifiés ou pas par rapport au serveur de sources (comme dans l’exploreur avec les icones de Tortoise).
      Mais comme c’est expliqué ici, cela dépend de libs externes ce qui nécessite Cigwin sous windows (si j’ai le temps, je chercherais ce qui manque pour l’inclure dans le Setup).
      Cette vue ne marche donc pas sous Windows pour l’instant.

      Mais comme je l’ai dit à Romain: le merge m’embête avec Meld, car il n’essaye pas de fusionne ce qui est possible. Des gens ont « patché » HG pour qu’il « pre-merge » en laissant que les conflits avant de lancer Meld:
      http://www.melez.com/mykzilla/2008/06/merging-with-mercurial-and-meld.html

    2. En regardant de plus prêt le code de Meld, j’ai oublié d’inclure des choses pour qu’il gère les différents SCM. Après avoir fait le test, j’ai la vue de mon dossier « mercurial » qui s’affiche bien, mais quand j’essaye de faire une action « update/compare/etc » ça ne marche pas.

      Et c’est en fait parce que le code d’exécution d’un process (svn/hg/git/etc) est un code pure Unix. J’ai trouvé des libs compatibles Unix/Windows, mais je ne sais pas trop comment l’intègrer (j’arrive à ma limite de compréhension du Python… surtout avec des lambda et des yield ;))

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s