Subversion Subversion Pour Quoi Faire Problmes de la
Subversion
Subversion : Pour Quoi Faire ? • Problèmes de la gestion du code dans un projet – Durée de vie du projet peut être longue : besoin de gérer l’historique • Changement d’architecture • Changement des personnes impliquées dans le développement – Travail en parallèle sur plusieurs versions • Maintenance d’une ancienne version en // avec la version courante • Test de nouvelles fonctionnalités sans impacter la version courante • Pouvoir propager facilement des changements d’une version à l’autre – Plusieurs personnes impliquées en même temps dans le développement • Travailler simultanément sur le même code • Détecter et (aider à) résoudre les conflits • Membre de la famille des Version Control System (VCS) – CVS est 1 des plus anciens et des plus connus (open source) – Subversion (SVN) en reprend les principaux concepts en les modernisant – Texte et binaire, language neutral, pas de gestion de configuration 2
Le Modèle CVS/SVN repository Check-out Repository central Base de données contenant l’ensemble des versions (révisions) Unique pour 1 projet Copies locales, dans des working area commit Working area B Working area A Synchronisation entre working area et repository Atomique (SVN) Détection/Résolution des conflits 3 Pas de « locking » : plusieurs utilisateurs peuvent modifier 1 copie différente du même fichier
SVN : Référencer un Repository • On désigne un repository par son URL – Exemple : https: //svn. lal. in 2 p 3. fr/projects/Etudiants • On appelle branche tout répertoire dans le repository – Correspond à un répertoire dans l’espace de travail – 1 niveau supplémentaire dans l’URL – Exemples : • https: //svn. lal. in 2 p 3. fr/projects/Etudiants/ens 5/Hello. World • Grand choix de clients SVN – Command line : svn • Nom des commandes généralement identique à CVS – Client Web : Web. SVN • Consultation du repository uniquement • https: //svn. lal. in 2 p 3. fr/Web. SVN 4
Principales Opérations… • check-out : crée une copie locale du (1 branche) du repository – svn co URL – Ex : svn co https: //svn. lal. in 2 p 3. fr/projects/Enseignement/ens 6 Projets • WA add : ajoute 1/des fichiers au repository lors de la prochaine synchronisation – svn add fichier/répertoire – Nécessaire pour tout fichier/répertoire créé depuis le check-out – Si répertoire, traite tous les fichiers et répertoires contenus • WA status : permet de connaître l’état du répertoire de travail – svn status [-u] – 1 ligne par fichier modifié par rapport au repository – -u force la vérification par rapport au repository et non à la copie locale • WA Info : permet de savoir la branche associée au répertoire local – svn info • R WA commit : enregistre les modifications locales dans le repository – – svn ci –m « message » Crée une nouvelle révision du repository contenant toutes les modifications Demande un username/password si nécessaire (ens 2006, non changeable) Possible uniquement si l’espace de travail à jour par rapport au repository 5 R WA
… Principales Opérations • update : intégre les changements du repository dans la copie locale – – R svn update [-r révision] Ajout des nouveaux fichiers (A) ou mise à jour des autres (U) WA Préserve les modifications locales en faisant un merge (G) Signale les conflits : modification locale en conflit avec une modification du repository (C) • En cas de conflit, création de plusieurs versions du fichier • Empêche les commits • resolved : indique le conflit a été résolu – svn resolved fichier – Supprime les versions temporaires créées • revert : revient à la version du repository – svn revert fichier/répertoire – Restaure la version du dernier update. Les modifications sont perdues – resolved implicite en cas de conflit sur le fichier/répertoire • WA WA log : liste les messages associés à chaque révision d’un fichier/répertoire – – svn log [fichier/répertoire] [-v] [--stop-on-copy] Ne liste que les révisions qui concernent la branche (fichier) courante Inclut les opérations de copie entre branches, sauf si --stop-on-copy Faire svn update pour voir les révisions derniers commits 6 R
Opérations sur les Fichiers • SVN garde la trace de tous les fichiers renommés, copiés, détruits, … – Permet de conserver l’historique même si le fichier est renommé – Indique la révision du fichier dont est issu un nouveau fichier (copy/mv) – Gère la création/suppression/renommage des répertoires • Aucune opération sur les fichiers implicite pour SVN – Doit notifier SVN des changements – svn status indique les inconsistances (!) • Pour simplifier, SVN permet d’appeler les commandes cp, mv, mkdir… – svn cp, svn mv, svn rm, svn mkdir • Possible de faire oublier un fichier détruit à SVN – svn rm --force fichier 7
Fonctionnalités Avancées • diff : visualiser les différences entre 2 versions d’un (groupe de) fichier – Avec l’espace de travail : svn diff [-r révision] fichier/répertoire – Entre 2 révisions du repository : svn diff [-r r 1: r 2] fichier/répertoire • Plus facile avec un interface Web (Web. SVN, Trac…) • Web. SVN au LAL : http: //svn. lal. in 2 p 3. fr/Web. SVN • merge : revenir à une révision antérieure du repository R – svn merge –r HEAD: révision fichier/répertoire WA – Ne modifie pas le repository mais seulement la copie locale (faire un commit pour valider le retour à la révision antérieure) – update permet de restaurer une version antérieure dans l’espace de travail mais cause un conflit lors du commit • commit exige que l’espace de travail soit à jour par rapport à la dernière révison – D’autre formes plus complexes pour appliquer une modification se trouvant ailleurs dans le repository 8
Pour en Savoir Plus… • Documentation SVN en ligne – http: //svnbook. red-bean. com/en/1. 1/index. html • L’aide en ligne – svn help [command] 9
- Slides: 9