|
|
|
|
|
|
|
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 |
|
|
|
|
|
On désigne un repository par son URL |
|
Exemple : https://svn.lal.in2p3.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.in2p3.fr/projects/Etudiants/ens5 |
|
https://svn.lal.in2p3.fr/projects/Etudiants/ens5/HelloWorld |
|
Grand choix de clients SVN |
|
Command line : svn |
|
Nom des commandes généralement
identique à CVS |
|
Client Web : WebSVN |
|
Consultation du repository uniquement |
|
https://trac.lal.in2p3.fr/Etudiants/browser |
|
|
|
|
check-out : crée une copie locale du (1
branche) du repository |
|
svn co URL |
|
Ex : svn co https://svn.lal.in2p3.fr/projects/Enseignement/ens6
Projets |
|
Info : permet de savoir la branche
associée au répertoire local |
|
svn info |
|
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 |
|
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 |
|
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 (ens2006, non changeable) |
|
Possible uniquement si lÕespace de
travail à jour par rapport au repository |
|
|
|
|
|
update : intégre les changements du
repository dans la copie locale |
|
svn update [-r révision] |
|
Ajout des nouveaux fichiers (A) ou mise
à jour des autres (U) |
|
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 que 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 |
|
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 des derniers commits |
|
|
|
|
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 |
|
|
|
|
|
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 r1:r2] fichier/répertoire |
|
Plus facile avec un interface Web
(WebSVN, TracÉ) |
|
WebSVN au LAL :
http://svn.lal.in2p3.fr/WebSVN |
|
merge : revenir à une révision
antérieure du repository |
|
svn merge –r HEAD:révision
fichier/répertoire |
|
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 |