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

Gestionnaires de sources décentralisé

Voici un petit billet pour parler des outils de gestion de source, car j’ai voulu résumer tout ça dans un seul endroit.

Si j’ai beaucoup travaillé avec Subversion (SVN) depuis de nombreuses années, j’en ai aussi payé les frais, et j’ai adopté aujourd’hui les gestionnaires de sources décentralisés.
SVN reste un très bon choix, et impose de bonnes pratiques sans imposer sa façon de travailler.
Mais j’ai souvent souffert des problèmes suivants:

  • Merges compliqués, peut-être résolu avec SVN 1.5 et TortoiseSVN 1.5, mais ça reste difficile par moment
  • Lenteur, que ce soit en Updatant/Commitant, ou avec l’utilisation de TortoiseSVN
  • "Rename" compliqué, puisqu’il faut faire un "Move" avec SVN et pas avec le FileSystem ou dans l’IDE

Trop facile les branches avec Tortoise! ;)

C’est pour ces raisons que je suis fan de GIT ou Mercurial (HG), avec une préférence pour ce dernier. J’avais commencé à utilisé GIT, mais un ami m’a dit qu’il trouvait Mercurial plus facile: après avoir fait l’essaie, je confirme!

Si j’ai opté pour SVN à l’époque, c’est sans doute grâce à l’outillage qui est autour:

Ce fut aussi sans doute parce que SVN s’intégrait bien avec d’autres outils, comme les bugs-trackers (Track ou Redmine).

Si j’opte pour GIT ou Mercurial, c’est pour les mêmes raisons: les outils existent!
Pour GIT:

Pour Mercurial:

La puissance de GIT et Mercurial c’est aussi de pouvoir convertir un repository SVN rapidement, ou même l’utiliser comme "main branch". A ce niveau, j’ai eu une meilleure expérience avec Mercurial.

Mais ce n’est pas tout, si GIT/HG explose en puissance, c’est qu’ils offrent un repository "officiel" gratuit!
Petite anecdote: je voulais faire de la place sur mon disque dur plein à craqué, et en faisant le ménage je suis tombé sur un dossier contenant des backups de mes sources de mes projets perso. Ce fut un beau moment de nostalgie, j’en reviens pas d’avoir fait un "simulateur de vie en 3D en Java" ou un projet avec "Eclipse RCP" ou encore un "framework RCP en .Net"…
Il ne fallait absolument pas perdre tout ça, il me fallait le mettre sur un SVN. A l’époque, j’avais des repos SVN locaux, mais pour ne rien perdre en cas de crash, je me suis dit que je vais tout backuper sur le plus gros disque du monde: Internet.
J’ai trouvé Assembla à l’époque, qui inclut le bug-tracker Trac. J’aurai pu choisir Google Code, mais je n’y ai pas pensé. Quand à CodePlex ce n’était que du TFS à l’époque, mais maintenant il y a un pont SVN.

Avec la découverte de GIT, j’ai aussi découvert GitHub et ça a changé ma vie: Wiki light, bug-tracker light, interface Web très soigné, et très simple d’utilisation (très facile à créer plusieurs repos). Gitorious est aussi un très bon choix, mais j’ai l’impression qu’il n’a pas connu le même succès.

Et c’est avec joie que j’ai découvert que Mercurial possède aussi son repository "officiel" tout comme GitHub: BitBucket. Les 2 sont très comparables, on dirait presque des clones.

J’ai une petite pensé pour Bazaar qui est aussi un gestionnaire de sources décentralisé, qui est très utilisé dans le monde Linux (produit de Canonical donc très utilisé par Ubuntu) mais qui n’a pas séduit la communauté des développeurs (manque d’outils? trop complexe? c’est la vie?) pour ceux qui veulent quand même le tester, TortoiseBZR existe.

Amusez-vous bien sur GIT ou Mercurial, apprenez à maitriser l’outil, car c’est grâce à vos connaissance que vous les verrez apparaitre dans vos entreprise.

Petite astuce Tortoise

Vous connaissez sans doute tous les properties de svn ?
J’adore Tortoise, et ce dernier offre des fonctionnalités "supplémentaires" à l’aide de properties custom.
On cherche souvent à empêcher les autres membres de l’équipe à commiter sans commentaires. C’est possible à l’aide des properties, à condition d’utiliser Tortoise :)


Lire la suite

Subversion

Mon intérêt pour le monde libre m’a fait faire des recherches sur CVS.

Sous win, j’ai installé CVSNT et j’ai testé ainsi à l’aide d’Eclipse. CVSNT plante avec Eclipse… je n’arrive pas à voir pourquoi… en tout cas, la version CVSNT 2.0.14 marche parfaitement avec Eclipse si on choisi de ne pas utiliser de préfix (chemin en dur).

Et puis je me suis dit : « Mais pourquoi ne pas profiter de CVS avec Visual Studio Express ? ». Ben parceque.. (voir explications ici)

Et puis dans ma recherche, je suis tombé sur Subversion ! Encore un serveur de gestion de versions concurrentes (à la CVS, SourceSafe, ClearCase,…). J’ai vraiment accroché ! Surtout avec TortoiseSVN qui s’intègre très bien à l’explorateur de Windows.

L’équivalent existe aussi pour CVS: TortoiseCVS.

Et puis il y a aussi le plugin Eclipse pour SVN : SubEclipse.

Mais aussi l’équivalent pour Visual Studio : ANKHSVN.

Malheureusement, ce dernier ne fonctionne pas avec Visual Studio Express :(

Affaire à suivre…

Suivre

Recevez les nouvelles publications par mail.