3 déc

Subversion
Aujourd’hui en cours, découverte de subversion, le logiciel de gestion de versions et de travail collaboratif.
Le principe est de travailler à plusieurs sur les même fichiers sans perdre les modifications apportées par les uns et par les autres. On utilise donc un serveur qui stocke les fichiers et chacun travaille sur une copie qu’il met à jour régulièrement. De même régulièrement, chacun reposte ses modifications sur le serveur. Si jamais j’ai édité un fichier et que quelqu’un d’autre l’a aussi édité avant que je le renvoie sur le serveur, alors le système m’en informe et me permet de choisir quelle version garder ou de faire un mix des deux.
Le système permet aussi de revenir ou de consulter des versions antérieures. Il existe d’autres systèmes qui permettent ceci, mais subversion en est un des plus récents. Son avantage sur son prédecesseur (très longtemps utilisé) cvs est qu’il ne garde pas à chaque fois une copie complète du fichier, mais juste les modifications apportées, donc gain de place évident !
Schématiquement (honteusement pompé du cours de mon prof, ça doit venir du web et ne m’appartient pas )
Ce système a pris le parti de laisser deux personnes travailler en même temps sur un même fichier, mais s’assure juste de la possibilité de faire la mise à jour ou non (contrairement à d’autres systèmes où la personne qui édite pose un verrou).
Créer le dépot
Sous mac et linux, il est généralement installé par défaut. Le serveur n’est qu’un serveur de données. C’est le client qui fait tout le travail.
Pour créer le serveur la commande est
svnadmin create myrepo
dans le répertoire où l’on veut créer le dépot myrepo.
Créer le projet sur le dépôt
La commande
svn import . file:///chemin/et/nom/du/depot/nomduprojet -m "Commentaire"
va importer tous le contenu du répertoire courant pour remplir le nouveau projet sur le dépôt. On peut pratiquer cette commande sur un répertoire vide. Alors, ceci a pour unique effet de créer le projet sur le dépôt.
Le commentaire sert à indiquer que l’on crée le dépôt par exemple. Par la suite, dans les autres commandes de modification du contenu, on ajoutera de même des commentaires.
Commencer à travailler
Pour commencer à travailler, il faut utiliser la commande suivante :
svn co file:///chemin/et/nom/du/depot/nomduprojet repertoirelocal
Alors un nouveau répertoire nommé repertoirelocal va être créé dans le répertoire courant et tout le contenu du projet nomduprojet y est téléchargé.
Modifications locales
Création d’un fichier
Pour créer un fichier, la commande à utiliser est svn add nom sur le fichier ou le répertoire existant à ajouter au projet.
Suppression d’un fichier
Il ne faut pas utiliser la commande rm seul, mais utiliser svn delete nom pour le fichier ou le répertoire. Ça supprime le fichier / répertoire en local et l’inscrit dans les modifications à effectuer sur le dépôt.
Déplacement/Renommage d’un fichier
La commande à utiliser n’est pas non plus mv, mais svn move nomancien nomnouveau . (Il existe aussi svn copy).
Modification d’un fichier
Il suffit simplement d’éditer le fichier.
Contrôler les changements en attente
Pour cela, utilisons la commande svn status .
Appliquer les changements
Mettre à jour par rapport au contenu du dépôt et vérifier qu’il n’y a pas de conflits
svn update
Résoudre les conflits
La commande update signale les conflits et propose plusieurs options : résoudre plus tard (postpone : p), appliquer les changements « des autres » (theirs-full : tf) ou les miens (mf).
Si l’on choisit résoudre plus tard, il nous reste la possibilité de comparer les versions avec la commande diff et d’éditer le fichier de travail pour faire une compilation qui nous convient. Enfin, ne reste plus qu’à lancer la commande :
svn resolve --accept [state] fichierquiposepb
avec state soit : working, version modifiée pour compilation par exemple, mine-full ou theirs-full pour choisir de garder sa version ou celle du dépôt.
Effectuer les changements
Enfin, la commande
svn commit -m "commentaire"
valide les changements une fois les conflits résolus et passe à la version n+1 en inscrivant dans l’historique le commentaire.
Suivre les changements
La commande svn log permet d’afficher l’historique des changements.
Connexion pas ssh à un serveur svn
svn co svn+ssh://login@ipduserveur/chemin/et/nom/du/repo/projet