Comment créer/appliquer un patch svn sous windows ?

Des fois, malheureusement, on n’a pas le choix et il nous faut travailler avec svn au lieu d’utiliser un système de gestion de source moderne tels que Git ou Mercurial. Des fois même, il faut travailler et en plus sous windows ! On a les malheurs qu’on mérite. La plus grosse erreur que vous pourriez faire à mon sens est d’installer TortoiseSVN. Ca pourrit le menu contextuel, les icônes ne sont parfois pas mises à jour, on ne sait pas trop quel bouton exécute quelle commande, bref du grand n’importe quoi. Le mieux est donc d’installer le client svn windows classique depuis le site officiel, quitte à ajouter le dossier des binaires svn à votre path

Je vais prendre l’exemple d’Irrlicht car c’est pour contribuer à ce projet que j’ai du m’intéresser a problème.
Depuis la ligne de commande:

 mkdir irrlicht_svn
 svn checkout https://irrlicht.svn.sourceforge.net/svnroot/irrlicht/trunk .

(Attention au point, sinon svn crée un sous-dossier « trunk »)

Après on modifie les sources etc… Si on a créé de nouveaux fichiers alors on les ajoute via « svn add » (on peut utiliser des wildcards, l’option -R pour la récursivité). On vérifie que tout est à jour avec un « svn status » puis on crée notre patch via la commande:

svn diff > monPatchDuTonnerreDeZeus.patch 

(peu importe l’extension, il s’agit d’un fichier texte)

 

Jusque là rien de nouveau, c’est la procédure classique. Pour patcher sous windows, c’est déjà un peu plus sport car le programme « patch » de linux n’est pas présent par défaut. Il faut donc d’abord installer le programme patch.exe, l’ajouter à votre variable PATH (WIN+Pause -> Advanced Settings -> Environment Variables). Pour tester votre patch, placez-vous dans le même répertoire (au même niveau dans l’arborescence) et faîtes:

 patch --dry-run -p0 < monPatchDuTonnerreDeZeus.patch

L’option –dry-run permet de ne pas appliquer les modifications du patch mais permet d’afficher les messages (erreurs comprises) que vous auriez eu si vous aviez réellement appliqué le patch. S’il n’y a pas d’erreur alors vous pouvez appliquer le patch pour de bon avec patch -p0 < monPatchDuTonnerreDeZeus.patch . Si jamais néanmoins vous avez des erreurs vous pouveez revenir en arrière en faisant un svn revert -R * .  L’option « -pX » permet d’appliquer le patch depuis un répertoire différent de celui où il a été fait (remplacer « X » par le nombre de repértoires à enlever du chemin relatif). En l’état vous risquez fort d’avoir des problèmes et patch.exe va planter car les sauts de ligne ne sont pas ceux qu’il attend. svn diff crée des sauts de ligne Unix tandis que patch.exe attends des sauts de ligne windows (CR+LF). Vous devez donc effectuer la transformation vous-même. Par exemple avec Notepad++, on ouvre le patch puis dans les menus « Edition »-> »Convertir les sauts de ligne », on choist les fins de ligne windows, on sauvegarde et c’est tout bon. Autrement on peut aussi utiliser l’option –binary

Quelques liens en vrac:

  • http://www.journaldunet.com/developpeur/tutoriel/out/060906-subversion-svn-diff-patch.shtml
  • http://wiki.habariproject.org/en/Creating_and_Applying_Patches_for_Subversion
  • http://gnuwin32.sourceforge.net/packages/patch.htm (version windows de patch si vous ne voulez pas utiliser cygwin)

0 Responses to “Comment créer/appliquer un patch svn sous windows ?”


  • Aucun commentaire

Laisser un commentaire