spipzine

Accueil > Ateliers > Tutoroom > Utiliser SVN sous Mac OS X avec svnX

Utiliser SVN sous Mac OS X avec svnX

mardi 6 février 2007, par Alexandra Guiderdoni, gilles

Lorsque l’on est plusieurs à travailler sur un projet, un logiciel serveur collaboratif facilite nettement la tâche. C’est le cas de subversion, utilisé par les équipes de développement de SPIP et de spip-zone. Mais la ligne de commande peut paraître rébarbative à certains d’entre nous, peu familiarisés avec le terminal Unix. C’est là qu’intervient svnX, qui y ajoute une interface graphique qui ne déroutera pas les habitués de Mac Os X. Comment l’installer et l’utiliser, voilà l’objet de ce tutoriel.

SvnX, un outil de Suivi de Versions pour Mac OS X

La fonction principale d’un système de suivi de versions est de permettre l’édition collaborative et le partage de données. C’est grâce à cet outil que bien des œuvres, des plugins et choses diverses se développent sur spip-zone, où tout le monde peut déposer son bout de code, récuper celui d’un autre, améliorer tel projet commencé, sans que cela ne crée de conflits liés à des modifications simultanées.

Toutes les modifications sont enregistrées sur un serveur unique. Celles-ci sont alors gérées localement sur chaque poste utilisateur par un programme spécifique, qui s’assure que les modifications faites localement ne sont pas incompatibles avec la dernière version en ligne. Il permet aussi à chacun d’effectuer des mises à jour rapides en ne récupérant que les éléments modifiés.

Nous aborderons dans ce tutoriel l’utilisation de svnX, un programme Open Source gratuit permettant sous Mac OS X d’interagir avec le serveur de versions utilisé par spip-zone. Son interface graphique permet de rendre cette opération plus intuitive et agréable que des lignes de commande en Unix tapées au terminal.

Installation de SvnX

- 1. Subversion

Package Subversion {JPEG}

Ce package doit obligatoirement être installé avant SvnX, car ce dernier n’est tout simplement qu’une GUI (Graphic User Interface) de Subversion.

Il faut télécharger Subversion. depuis ce site : http://www.codingmonkeys.de/mbo.
C’est une installation classique pour laquelle il suffit de cliquer sur le package binaire de Martin Ott et de se laisser guider pour l’opération.

Note : n’oubliez pas par la suite de vérifier et d’effectuer la mise à jour des versions de ce package…

- 2. SvnX

SVNX {JPEG}

Le téléchargement de l’application est accessible sur le site de l’éditeur. Vous trouvez aussi sur le site des renseignements et des copies d’écrans de SvnX.

Il suffit ensuite de la placer dans votre dossier "Applications".

Utilisation simple

Lorsque vous lancez l’application, deux fenètres s’ouvrent :
- L’inspecteur de dépots (Repository Inspector) ;
- et L’inspecteur de copies de travail (Working Copy Inspector).

L’inspecteur de dépôt contient des informations sur tous les dossiers partagés sur le serveur (aussi appelés "dépôts") avec lesquels nous sommes synchronisés. La seconde fenètre concerne les éléments que vous avez récupérés sur votre ordi.

JPEG - 18.1 ko

1. Récupération de la dernière version d’un dossier du serveur SVN

Commencez par enregistrer un nouveau dépôt :
Cliquez sur le bouton intitulé "+" de l’inspecteur de dépôts
Remplissez l’intitulé (champ "name") par exemple "plugins stables"
dans "Path", indiquez l’url du dépôt. Par exemple, pour les plugins stables : svn ://zone.spip.org/spip-zone/_plugins_/_stable_

JPEG - 26.5 ko

Puis accédez au détail d’un dépôt donné : il faut double-cliquer sur la ligne correspondante dans l’inspecteur de dépôts (ce n’est pas très intuitif, il faut bien le reconnaître).

La fenêtre qui s’affiche alors permet de consulter les actions possibles sur le serveur, l’historique et la version actuelle du dépôt, ainsi qu’un mini navigateur permettant de nous y retrouver. Ce navigateur correspond à celui disponible en ligne sur le Trac de spip-zone. On voit alors que le serveur est organisé sur plusieurs niveaux de répertoires. La racine est accessible à l’adresse svn ://zone.spip.org/spip-zone/.

JPEG - 57.3 ko

Pour créer notre répertoire de travail, on clique sur le bouton vert en haut intitulé SVN checkout.

Une fenêtre s’ouvre pour nous demander où l’on veut enregistrer sa copie locale.

JPEG - 44.4 ko

- Par exemple, indiquez le chemin vers votre serveur Apache local :
(racine du disque dur)/Bibliothèque/Webserveur/Documents/monsitespip

- ou bien, si vous rangez vos sites dans le dossier Sites de votre Home :
(racine du disque dur)/Users/ nom court d’utilisateur/Sites/monsitespip

- ou alors le chemin vers votre site qui tourne sur Mamp :
Disque dur/Applications/MAMP/htdocs/monsitespip

Validez, et c’est tout : vous voilà avec la dernière version disponible !! Celle-ci a été automatiquement mémorisée dans l’inspecteur de travail, intitulé "Working Copies" :

JPEG - 22.8 ko

2. Mettre à jour une copie de travail

La mise à jour s’effectue via l’inspecteur des copies de travail : On double-clique alors sur la ligne de la fenètre de copies de travail.

Une nouvelle fenêtre s’ouvre, et on clique sur le bouton vert update tout en haut.

JPEG - 29.3 ko

Une popup s’ouvre en nous demandant si on est sur de vouloir updater la dernière version de la copie de travail. Il faut cliquer sur oui.

JPEG - 13.8 ko

En bas de la fenêtre, une petite ligne bleue clignote jusqu’à ce que le rapatriement des fichiers soit terminé. Le bouton "show output" permet de voir l’ensemble des modifications qui ont été faites. Le numéro de version de la copie de travail a éventuellement augmenté (il s’agit du numéro indiqué dans la légende "Rev NNN de svn ://zone.rezo.net").

Modification des éléments du serveur

L’intérêt d’un gestionnaire de versions est de permettre à plusieurs contributeurs d’ajouter / modifier / déplacer des éléments, tout en s’assurant que le code reste valide au fil des modifications et que chacun puisse récupérer les fichiers ainsi mis à jour.

La modification demande une authentification. Il faut pour cela saisir votre login et votre mot de passe dans les champs correspondants ("User" et "Pass") de l’inspecteur des copies de travail. Ces éléments sont disponibles sur simple demande faite sur la liste d’information de spip-zone.

1. Validation de ses modifications sur le serveur

Tout modification locale d’éléments placés sous un répertoire de travail est détectée automatiquement par SvnX. Il suffit de double-cliquer sur le répertoire principal dans l’inspecteur des versions de travail.

PNG - 46.7 ko
commit

Les éléments que vous avez modifés sont indiqués par un ’M’ au début de leur nom. Sélectionnez alors les éléments que vous voulez valider, puis cliquez sur le bouton "commit". Une zone de saisie apparaît alors pour donner des détails sur les modifications effectuées (d’où la règle imposant le commentaire accompagnant ses modifications).

Chaque validation va incrémenter le numéro de version du dépôt. Ainsi tous les autres clients SvnX sauront qu’ils ne sont plus à jour.

2. Annuler des modifications faites localement

Vous avez fais des modifications en local qui finalement ne vous conviennent pas ? Il est très simple de revenir en arrière et de restaurer la version du dernier update/checkout. Sélectionnez le fichier ou le dossier concerné puis cliquez sur le bouton ’revert’. Attention  ! Cette annulation ne peut plus être faite si vous les avez validées ("commit").

3. Ajouter un dossier sur le serveur

Cette action passe par l’inspecteur de dépôts. Une fois le dépôt sélectionné, cliquez sur le bouton "svn mkdir". Une boite de dialogue vous permet alors de choisir le répertoire dans lequel sera votre nouveau dossier (il est interdit de déposer directement des dossiers à la racine, vous devez donc vous placer dans l’un des sous-répertoires). Précisez le nom du répertoire dans la zone ’target cible’ (en validant par le bouton ’+’). Enfin remplissez la zone explicative de votre commit, afin que les autres développeurs comprennent quels éléments vous comptez déposer dans ce nouveau dossier.

PNG - 63.8 ko
Ajout de répertoires

Dans cet espace fraîchement créé sur le serveur, vous pouvez ensuite y mettre vos propres créations (si elles ne font pas doublon avec d’autres développements déposés sur le serveur, bien sûr).

4. Ajouter des fichiers sur le serveur

Lorsque l’on rajoute de nouveaux éléments dans une copie de travail, ceux-ci n’ont pas de version. SvnX ne possède aucune information sur eux tout simplement parce qu’ils n’existent pas sur le serveur. Ces éléments sont précédés d’un point d’interrogation dans l’inspecteur des copies de travail. Pour les ajouter au serveur afin que tous les autres développeurs puissent avoir une copie de ces fichiers, il suffit de les sélectionner et de cliquer sur le bouton ’add’.

PNG - 59.5 ko
ajout /suppression de fichiers

Les éléments sont alors précédés d’un caractère ’A’. Il ne reste plus alors qu’à synchroniser votre version modifiée avec le serveur (commit avec un message explicatif). Si vous cliquez sur le bouton "Go to repository", vous verrez que vos fichiers figurent bien désormais sur le serveur. Les autres développeurs les récupèreront lors de leur prochaine mise à jour.

Attention toutefois à ne pas ajouter de fichiers binaires inutiles (comme des archives destinées uniquement à des besoins perso), ni à ajouter de fichier comportant des données sensibles. En effet les fichiers déposés existeront toujours sur le serveur, même si vous les supprimez dans une version ultérieure (le principe de base du suivi de versions est de ne jamais rien détruire)

Quelques liens indispensables

- Le Tutoriel de Cent20
Le B-A BA de l’utilisation de SVN sur Windows

- La chose interactive, site dédié à SvnX

- un très bon article de projectomega
Gestion de Version avec Subversion : Concepts de Base

- L’article de wikipedia sur Subversion

Portfolio

Messages

  • J’ai jamais réussi à comprendre la logique de svnX et de ses menus.

    Du coup je l’utilise dans le terminal (installez juste le packet svn sans l’interface svnX) et c’est vachement plus ergonomique !

    • Je suis d’accord, mais pour pas mal de monde ouvrir le terminal c’est super technique (en plus il faut connaitre un minimum de commandes unix, aller dans des répertoire de type /Volumes qui sont rendus invisibles par Finder..). svnX ça évite ça, c’est super pratique quand même

    • SvnX est si bizarre et si peu ergonomique (c’est quoi toutes ces fenêtres dans tous les sens ; à quoi ça sert ; où je suis), qu’il était plus simple, même pour moi qui n’avait jamais fait ça, de me servir du Terminal :-P

    • D’accord pour le terminal. Mais alors que quelqu’un prenne le temps de nous expliquer les commandes, et ce que concrètement il faut taper. Parce que ca ne s’invente pas tout de même. Et puis pourquoi vouloir absolument que SVN reste en ligne de commande pour initiés. Je suis sur mac et je préfère de loin les interfaces graphiques. Avec SVNX, le checkout n’est plus seulement une histoire de geek.

  • Les soucis que je rencontre avec svnx (mais c’est peut-être parce que je débute aussi avec Mac), ce sont d’une part, le bouton FileMerge (sensé faire l’équivalent de svn diff, mais qui tel qu’installé, génère un message d’erreur), et d’autre part, le fait de voir seulement les fichiers différents au lieu de tous, ça sert une sorte de vision inversée par rapport à TortoiseSVN dans windows ou eSvn sur Linux... et donc ça surprend :) Enfin, pas moyen d’éditer un fichier depuis cette interface (l’habitude du double-clic sans doute), le système ne semble pas historiser les messages de commit qu’on fait et plus bizarre encore, tous les fichiers semble être commités avec la propriété « executable »... (même si ça vient d’autre chose, on peut pas changer ça dans ce GUI)

    En conclusion, c’est un outil déroutant qui demande un certain temps d’acclimatation et qui pour l’instant, ne remplace pas la ligne de commande et la navigation dans finder.

    • FileMerge fonctionne très bien chez moi. On peut naviguer dans les différences/conflits. Annuler telle modif. Résoudre les conflits. La seule chose que je regrette c’est l’absence de numéro de ligne

      De plus il est possible d’éditer le fichier dans le bloc du bas (et d’utiliser les fléches centrales pour annuler les modifs/suppressions de blocs) [en tout cas avec la version 2.2.1] Bon, ça peut être l’objet d’un second tuto : "SvnX avancé"

      Mais ici c’est pour ceux qui débutent sous Mac, ne connaissent pas les équivalent Win/Linux (et peuvent donc être perdus par les tutos qui s’adressent à ces produits). C’est surtout ceux qui ne vont faire que des checkout :)

    • Sinon pour afficher tout il suffit de cliquer sur le bidon "Go to repository" qui bascule sur le second gestionnaire. Tu as une interface aussi souple que Trac, avec possibilité de faire des diff (fileMerge) entre n’importe quelle version, d’éditer et de faire une sauvegarde locale.. En fait de faire tout ce que tu as sous Tortoise quoi..

      Le seul élément que je n’ai pas retrouvé c’est si par exemple on veut retourner sur une ancienne version (en ligne de commande c’est facile : "svn up —version NN"). Alors que Tortoise le propose de mémoire.

      Mais bon, c’est pas super courant comme usage non plus..

    • ah bah voilà, y avait qu’à demander :)

  • Allez, on va réconcilier tout le monde !!

    Y’a un plugin qui permet d’avoir l’équivalent de Tortoisesvn, c’est-à-dire d’avoir un client subversion intégré au Finder.

    Il s’agit de scplugin.

    Je le teste, et s’il me va je fais un autre tuto :-) (Bon, il faut dire qu’il semble en plein développement aussi, la dernière version date du 27 janvier)

    et bye bye la ligne de commande :))

    Voir en ligne : scplugin : le tortoise du Mac !

  • Bonjour, J’ai suivi votre tutoriel et je rencontre cette erreur : svn : XML data was not well-formed J’ai tout réinstallé et pas de changements... Auriez-vous une idée quant à cette erreur ?

    Merci par avance, bien à vous, Julietta

    Environnement MAc 10.5 Path to svn binaries folder : /usr/local/bin

  • Je reviens vers vous car j’ai résolu en parti mon problème en lui indiquant le chemin /sw/bin/ au lieu de usr/local/bin/ Mais quelque chose doit m’échapper car je souhaite récupérer inscription2 qui se trouve à cette adresse : http://zone.spip.org/trac/spip-zone/browser/_plugins_/_test_/inscription2/inscription2_193

    J’ai donc entré ce Path : svn ://zone.spip.org/trac/spip-zone/browser/_plugins_/_test_/inscription2/inscription2_193

    Et SVNX me retourne cette erreur : svn : No repository found in ’svn ://zone.spip.org/trac/spip-zone/browser/_plugins_/_test_/inscription2/inscription2_193’

    J’ai essayé en remontant d’un ou plusieurs dossiers et j’ai toujours la même erreur...N’ai-je pas compris le fonctionnement de la spip-zone ou de svnx ?

    Par avance merci...Et pardon pour les messages à répétition :s