subversion - initiationsubversion-présentation1/2 i gestiondesversionsd’unprojet i...
TRANSCRIPT
Principe Rappels Generalites Pratique Avance Admin Crédits
Subversion - initiation
Guillaume Allègre - François Gannaz
SILECS
2007-2008 - Rev: 262
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Subversion - Présentation 1/2
I Gestion des versions d’un projetI issu du développement : fichiers textes et binairesI archive les versions successives d’un projetI stocke les versions parallèles d’un projet (branches)I facilite le travail collaboratif asynchroneI sans verrou (contr. RCS), sans validation (contr. git...)I centralisé (clients - serveur)
I Le contexte - avantI WebDAV : Web-based Distributed Authoring and VersioningI Les ancêtres
I RCS : Revision Control SystemI CVS : Concurrent Versioning System
I Les bases : commandes Unix diff et patchI La communauté http://www.tigris.org
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Subversion - Présentation 2/2I Des “extensions” à Subversion
I SVN utilities : base des développements futurs...I Trac : SVN + gestion de tickets (Python)
http://trac.edgewall.org/I SVK : “SVN décentralisé” (Perl)
http://svk.bestpractical.com/I FSVS : FileSystem VerSioning http://fsvs.tigris.org/
I Les référencesI Le site http ://subversion.tigris.org/I l’aide en ligne : svn help ...I la référence : Version Control with Subversion aka “SVN Book”
http://svnbook.red-bean.com/I la FAQ : http://subversion.tigris.org/faq.htmlI tutoriel L. Meister en français
http://www.codiciel.fr/gestion/subversion/
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Rappel : diff, patch...
I La commande diffI calcule la différence entre deux fichiers/répertoiresI diff (-b -u) fic1 fic2 : entre deux fichiersI diff -R -b -u Rep1 Rep2 : entre deux répertoires
I La commande patchI applique le diff à un fichier/répertoireI éventuellement de façon intelligente (fuzz, contexte)I patch -p0 < patchfile
I ComplémentsI patchutils : lsdiff, grepdiff...I xdelta : un diff pour les binaires
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Diff simple
I Récupérer archive :http://hulotte/form-svn/projet.tgz
I Extraction du diffI Modification d’un fichier simpleI une interface graphique : tkdiffI diff simple : -b, -wI diff contextuel : -c, -u
I Application du résultatI application “à la main”I application par patchI Emacs : mode ediff, epatchI diff + application combinés : sdiff -o fic fic1 fic2
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Diff récursif (ou multi-fichiers)
I Extraction du diffI Modification de plusieurs fichiers du répertoireI diff -r Rep1 Rep2 : récursif
I Application du résultatI application par patch -pN <I sécurité : - -dry-run, - -backupI utilitaire lsdiffI gestion des imprécisions (fuzz) : - -fuzz=N,
- -ignore-whitespace
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Subversion - GénéralitésI Les interfaces utilisateur
I ligne de commande ; ex : svn log -vI mode SVN intégré à l’éditeur : Emacs, vim, Eclipse...I interface graphique indépendante : eSVN, RapidSVN,
TortoiseSVN...I interface web : CVSweb (Perl), WebSVN (php)...I intégré aux plateformes SourceForge, GForge...
I Évolution rapide mais stableI 1.5.0 (19 juin 2008)I 1.4.0 (sep. 2006)I 1.3.0 (jan. 2006)I 1.2.0 (mai 2005)I 1.1.0 (sep. 2004)I 1.0.0 (fév. 2004)I 0.17 (jan. 2003) −→ 0.37 (jan. 2004)
I a progressivement remplacé CVS dans la communauté LL/[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
modifie
Blocage
copie
Pierre(copie de travail)
Paul(copie de travail)
révision 12
révision 13
dépôt central
révision 12
modifie
révision 12
r12 modifiée
r12 modifiée
copie
copie (commit)
copie (commit)
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Exemple d’une copie de travail
I svn checkout svn ://hulotte/initiation-svnrep-local
I svn infoI svn log (-v, -rNNN)I vim index.php . . .I svn status (-u)I svn diff (-cNNN)I svn commit (-m ‘‘message’’)I svn update
svn help : aide en ligne
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Travailler sans conflit
Blocage
révision 13
dépôt centralPaul
(copie de travail)
copie (commit)
r13 modifiée
update
révision 14copie (commit)
r12 modifiée
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Cycle usuel
I Initialisation d’une copie localesvn checkout
I Cycle1. Synchroniser avec le dépôt :
svn update2. Modifier la copie locale. . .3. Vérifier les modifications avant diffusion :
svn status (-u) / svn diff4. Répercuter les changements :
svn commit (-m)
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Opérations sur les fichiers
I svn add : ajoutera un fichier au dépôt
I Variantes des commandes unix usuelles :I svn rmI svn cp : cheap copies (copies a minima)I svn mvI svn mkdir
Ces modifications sont uniquement sur la copie locale.
Seul svn commit modifie le dépôt subversion.(exception : svn cp dans certains cas particuliers)
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Commandes utiles
I Utilisation courante :I svn status (-u)I svn diffI svn log
I Utilisation moins fréquente :I svn revert : annuler les modifications localesI svn lsI svn cat
I Autres :I svn blame : connaître les auteurs d’un fichierI svn merge : fusionner deux branches (svn diff + patch)
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Mise en pratique : annulation de modification
I Annuler les modifications localessvn revert fichier
I Annuler une modification propagée (révision)I Principe : elle restera dans l’historique !I par svn update -rNNN −→ impasseI par svn catI par svn diff . . .I par svn merge (-c -NNN)
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Gestion d’un conflit de modifications
I apparition d’un conflit : lors d’un updateI U ⇒ update (mise à jour) : OKI G ⇒ merge (fusion) : OKI C ⇒ conflit : cf fichiers créés
I modification manuelle + svn resolved
I abandon du fichier :I rm fichier puis svn up fichierI svn revert fichier
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Organisation canonique du dépôt
I Numéro de révision global
I Structure recommandée pour les répertoires :I /trunk/I /branches/I /tags/
Subversion utilise des cheap copies (copies paresseuses).I un fichier copié est simplement marqué comme telI il est réellement dédoublé en cas de modification. . .I . . . ou presque : gestion des diffs
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Mise en pratique
I Exercice...I Créer une branche (svn cp URL URL (exception !) )I Passer dedans (svn switch)I Modifier un (des) fichier(s)I commitI backport dans le tronc ?
I VarianteI sans switch ?
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Propriétés des fichiers : exemples...
Substitution : “marquer” les fichiersEn ligne de commande :svn proplist index.phpsvn propset svn:keywords "ID Date" index.php
Dans index.html, insérer :<p>Dernière modification de ce fichier : $Date$</p>
Ignorer certains fichierssvn propset svn :ignore -F Fichier Rép
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Administration : gestion d’un dépôt
L’outil d’administration : svnadmin
I Création du dépôt : svnadmin create CheminI Sauvegarde : svnadmin dump ←→ svnadmin load
Possibilité de filtrer le dump : svndumpfilter
Auxiliaire : svnlook
I svnlook tree (- -show-ids) CheminI svnlook info Chemin
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Les protocoles d’accès : 2 cas de figure
Un dépôt localI svn co file :///depot⇒ utilisateurs et permissions système
Un accès réseau : 3 solutionsI Serveur svnserve : svn ://depot⇒ comptes ad-hoc, auth. faible, permissions fines
I SSH+svnserve :svn+ssh ://[email protected]/depot⇒ auth. ssh, comptes système, permissions grossières
I Apache2 + WebDav : https ://serveur.domaine/depot⇒ auth. Apache(...), comptes ad-hoc, permissions fines.
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
L’accès svnservesvnserve simple (sans ssh)
I Configuration du dépôtI vim DEPOT/conf/svnserve.confI vim DEPOT/conf/passwd
I Lancement du serviceI svnserve -dI option -r /var/lib/svnI définitif : ajout à /etc/services et /etc/inetd.conf
svn stream tcp nowait svnuser /usr/bin/svnservesvnserve -i
svn+sshsvnserve -t temporaire lancé par svn ...pas de démon ⇒ rien à configurer.
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
L’accès Apache / WebDAVI Prérequis : Apache 2 + libapache2-svn (mod_dav_svn)I Configuration de base
LoadModule dav_module . . . / mod_dav . soLoadModule dav_svn_module . . . / mod_dav_svn . so
<Loca t i on / svn repos >DAV svnSVNParentPath / va r / l i b / svn
</Locat ion >
I Authentification basiqueAuthType Bas i cAuthName " Depot SVN"A u t h U s e r F i l e / e t c / apache2 / dav_svn . passwdRequ i r e v a l i d−u s e r
sudo htpasswd -b -c /etc/apache2/dav_svn.passwdUSER PASSWD ...
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Administration : les pannes courantes
I Mauvaises permissions sur le dépôtI réglages droits Apache/WebDAVI droits pour svn+ssh : : encapsulation dans un wrapper⇒ SVN Book, 6.6 Supporting Multiple Access Methods
I Incohérence du dépôtI théoriquement inutile depuis la v.1.2I svnadmin recover /chemin/depotI puis vérifier les permissions
[email protected] Initiation à Subversion
Principe Rappels Generalites Pratique Avance Admin Crédits
Crédits
I LicenceCe document est sous licence Creative Commons,Attribution-Share alike 3.0http://creativecommons.org/licenses/by-sa/3.0/
Conformément à la philosophie du logiciel libre, vous êtesencouragés à réutiliser, reproduire et modifier ce document,sous les conditions de la licence.
J’accepte volontiers les remarques, suggestionsd’améliorations, corrections et contributions à ce document.
I CréditsI François Gannaz, 2006-2007 pour la version initialeI Guillaume Allègre, 2007-2008 pour la version actuelleI c© SiLECS SARL, [email protected]
[email protected] Initiation à Subversion