subversion - initiationsubversion-présentation1/2 i gestiondesversionsd’unprojet i...

24
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

Upload: others

Post on 03-Oct-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 2: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 3: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 4: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 5: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 6: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 7: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 8: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 9: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 10: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 11: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 12: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 13: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 14: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 15: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 16: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 17: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 18: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 19: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 20: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 21: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 22: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 23: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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

Page 24: Subversion - initiationSubversion-Présentation1/2 I Gestiondesversionsd’unprojet I issududéveloppement:fichierstextesetbinaires ... copie Pierre (copie de travail) Paul (copie

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