If you can't read please download the document
Upload
jerome-vieilledent
View
27.008
Download
2
Embed Size (px)
Citation preview
Diapositive 1
TRex Subversion
Utilisation et bonnes pratiques
20/05/2010
+Logo client
Prsentation
Subver... Quoi ?
Subverquoi ? - Prsentation de SVN
Subversion, un gestionnaire de code source (SCM) et de versionningLe versionning permet le travail collaboratif
Chacun peut travailler sans craser les fichiers de son voisinDveloppement : permet un suivi des sources
Permet de revenir une version N un instant T
Permet de comparer les versions d'un fichier afin de voir ce qui a t modifi
Permet de travailler sur plusieurs versions d'un mme projetVersion TMA
Version future
R&D sur un projet en cours
Dfinition de versions figes, garanties comme tant stables
Ce n'est pas un systme de sauvegarde !
Subversion (ou SVN) : un SCM parmi d'autresD'autres SCM existent : VSS (Microsoft), ClearCase (IBM), CVS, GIT, Mercurial...
SVN est une volution de CVS
SVN est Open Source (licence Apache)
Subverquoi ? - Autour du dpt
SVN est un systme centralisCentralisation autour d'un dpt (repository en anglais) pour partager l'information
Le dpt est un serveur qui stocke toutes les modifications effectues
Un dveloppeur se connecte en tant que client au dpt pour rcuprer et/ou partager des modifications effectues sur le dpt
Le dpt possde enregistre l'arborescence de fichiers du projet
Accs au dptAccs en HTTP essentiellement par l'intermdiaire d'un client SVN
Le client de base est la ligne de commande
Des clients graphiques permettent un accs plus convivialTortoise SVN => Intgration dans l'explorateur Windows
Versions (Mac)
Subversive => Intgration dans Eclipse
Pour les dveloppeurs, l'utilisation de Subversive dans Eclipse est vivement recommande !
Travail collaboratif Situation viter
Travail collaboratif Avec SVN (1/2)
Travail collaboratif Avec SVN (1/2)
Organisation & Utilisation
Organisation
Trunk, Branches, TagsLe Trunk est la ligne de vie du projet.Tronc commun de dveloppement
Correspond la version la plus jour du projet
Les Branches peuvent correspondre des projets drivsTMA en cours
Projets parallles
Dveloppements exprimentaux
Les Tags permettent de figer (ou freeze) une versionUn tag pour chaque version livre (au minimum !)
Dpt SVN bien gr = Projet serein !Possibilit d'automatiser les livraisons (Ant)
Rollback de livraison possible en cas de problme
Historique et organisation clairs pour tout le monde
Utilisation - Commandes
Quelques commandes courantessvn checkout Rcupre un projet avec toutes les mtadonnes SVN
Indispensable pour commencer travailler
svn updateMet jour la copie de travail
Fusionne les fichiers modifis
Des conflits peuvent parfois apparatre
svn commitPropage les modifications effectues
Chaque commit correspond une rvision
TOUJOURS METTRE UN COMMENTAIRE !!!
svn logAffiche l'historique des modifications, rvision par rvision
svn revertAnnule les modifications effectues sur un fichier et revient la dernire version (rvision) SVN, ou HEAD
svn mergePermet de fusionner des modifications effectues dans une autre branche que celle de la copie de travail
Utilisation - Conflits
Rsolution de conflitsDans certains cas SVN ne sait pas fusionner lui-mme les fichiers sources2 dveloppeurs ont modifi la mme portion de code => Conflit
Dans ce cas SVN vous laisse la main pour une rsolution manuelle
Pour un fichier monfichier.txt en conflit, 3 sont crs par SVN :monfichier.txt.mine => Fichier tel qu'il tait dans la copie de travail avant la mise jour
monfichier.txt.rOLD_REV => Fichier tel qu'il tait avant les modifications, dans le dpt
monfichier.txt.rNEW_REV => Fichier que l'on vient de recevoir du serveur
monfichier.txt contient des marqueurs indiquant o se trouvent les conflits> .rXX (Indique le dbut du mme bout de code la rvision XX)
Les clients graphiques permettent de visualiser les diffrences et d'diter les conflits facilement
Une fois le conflit rsolu, il faut :Signaler la rsolution du conflit (svn resolved)
Commit le fichier avec le conflit rsolu
Important !!!TOUJOURS rsoudre les conflits en cours
NE JAMAIS COMMIT DES FICHIERS EN CONFLIT NON RESOLU !!!
Utilisation - Conflits
Utilisation - Proprits
Les proprits sont des mta-donnesElles permettent de modifier le comportement standard de SVN
La plupart sont destines au fonctionnement interne de SVN
Certaines peuvent tre trs utiles
svn:ignorePermet d'ignorer un certain nombre de fichiers par emplacement ou pattern (Thumbs.db, cache, logs...)
A rgler au dbut d'un projet pour viter de versionner des fichiers inutiles
svn:externalsPermet d'indiquer une dpendance
Par exemple une librairie maintenue par une autre quipeInutile de dupliquer le code dans le dpt
S'il y a des mises jour dans le dpt dfini en svn:externals, votre copie de travail sera galement mise jour lors de votre prochain update
Utilis souvent avec Symfony pour rcuprer le kernel du framework
Comprendre les branches
Des branches : Pour quoi faire ?
MaintenanceUne branche est souvent une copie du trunk (rpertoire principal)Ligne de vie indpendante
Historique commun => Permet les fusions
Exemple sur un projet web avec TMA + EvolutionsLes volutions sont dvelopps sur le trunk (future release)
Mais des bugs peuvent tre signals en production et doivent tre corrigs
=> Cration d'une branche pour la TMA (correction de bugs uniquement)
=> Livraisons effectues partir de la branche TMA
=> Une fois les bugs corrigs, on fusionne les correctifs avec le trunk
Fusion entre branches (Merge)
Pourquoi fusionner (ou merger) ?Permet de maintenir les branches jour entre elles
vite de modifier 2 fois du code source (branche TMA + Trunk)La multiple modification manuelle prsente des risques de rgressions
SVN fusionne intelligemment (par diffrentiel)
Comment faire ?Pr-requisPour fusionner entre 2 branches il faut avoir les 2 copies de travail en local
Les 2 copies doivent tre jour
Modification du code source sur la branche TMAsvn commit -m 'Correction de bug #123' mondossier/monfichier.php
Fusion dans la copie de travail du trunk, d'abord en localcd /chemin/vers/trunk/working/copy
svn merge http://mon-repository-svn/monprojet/branches/tma/mondossier/monfichier.php mondossier/monfichier.php
On teste que tout fonctionne, puis on commit
svn commit -m 'Merge correction de bug #123' mondossier/monfichier.php
Des conflits peuvent survenir avec le merge, comme avec un update. Il faut dans ce cas les rsoudre avant de commit
Vous pouvez vous rendre compte des modifications (et donc conflits potentiels) en passant l'option dry-run la commande de mergesvn merge http://mon-repository-svn/monprojet/branches/tma/mondossier/monfichier.php mondossier/monfichier.php --dry-run
Intgration Eclipse
Plugins Eclipse
Une fonctionnalit : 2 pluginsSubclipseClient SVN historique dans Eclipse
Maintenu par Tigris, l'quipe de dveloppement de SVN
Open Source
SubversiveClient retenu par la fondation Eclipse
Initialement dvelopp par la socit Polarion
Open Source
Il ne peut en rester qu'un ! => SubversivePlus stable que son concurrent
Bien document dans l'aide d'Eclipse
Prsent dans les paquets optionnels de Galileo (Eclipse 3.5)
Subversive : Prsentation
Subversive - Prsentation
S'intgre parfaitement votre workspace
Compatible avec la fonction de synchronisation d'quipePermet d'anticiper les mises jour et les conflits venirPrsentation visuelle des modifications entrantes et sortantes
Possibilit d'afficher les diffrences sur ces modifications
Accessible depuis le menu contextuel (Team / Synchronize)
Autres clients SVN
Tortoise SVN (Windows, intgration dans l'explorateur) - Gratuit
SCPlugin (Mac OS, intgration dans le Finder) - Gratuit
Rapid SVN (Java, vieillissant) - Gratuit
Versions (Mac OS) - Payant
SVNx (Mac OS, vieillissant) - Gratuit
RabbitVCS (Linux Gnome, intgration dans Nautilus)
KDESVN (Linux KDE, intgration dans Konqueror)
Conclusion
SVN est un puissant outil de gestion de versions
Indispensable pour le dveloppement en quipe, voire seul !
SVN n'est pas un systme de sauvegarde !
Permet un suivi de versions prcis, condition de bien l'utiliser
Ce n'est pas le seul SCM du march !GIT gagne de plus en plus terrain (nouvelle gnration, dcentralis...)
De nombreuses intgrations (IDE, clients indpendants) sur toutes les plateformes
Des Questions ?
?
#
++
#
++
#
++
#
++
#