1
@node Administration des D�p�ts
2
@chapter Administration des D�p�ts
4
Comment administrer un d�p�t Subversion.
6
Dans cette section, nous nous concentrerons sur comment utiliser les
7
programmes @command{svnadmin} et @command{svnlook} pour travailler avec
13
* Accroches d un d�p�t::
14
* Maintenance d un d�p�t::
15
* Mettre un d�p�t sur le r�seau::
22
@c ------------------------------------------------------------------
24
@section Cr�er un d�p�t
26
Cr�er un d�p�t est incroyablement simple:
29
$ svnadmin create path/to/myrepos
32
Ceci cr�e un nouveau d�p�t dans le sous-r�pertoire @file{myrepos}.
34
(Notez que les programmes @command{svnadmin} et @command{svnlook} op�re
35
@emph{directement} sur un d�p�t car ils utilisent la librairie
36
@file{libsvn_fs.so}. Ainsi, ces outils attendent un chemin local ordinaire
37
vers le d�p�t. Ceci est en opposition avec le programme client
38
@command{svn}, qui acc�de toujours � un d�p�t via une URL de type
39
@url{http://} ou @url{file://}.)
41
Un nouveau dep�t commence toujours sa ``vie'' � la r�vision 0, qui est
42
d�fini pour n'�tre rien saut le r�pertoire racine (@file{/}).
44
Comme mentionn� pr�c�dament, les r�visions de d�p�t peuvent avoir des
45
propri�t�s non versionn�es qui lui sont attach�es. En particulier, chaque
46
r�vision est cr��e avec une propri�t� ``date de modification''
47
@samp{svn:date} (les autres propri�t�s communes incluent @samp{svn:author}
50
Pour un d�p�t nouvellement cr��, la r�vision 0 n'a rien sauf la propri�t�
51
@samp{svn:date} attach�e.
53
Voici un arr�t rapide sur l'anatomie d'un d�p�t:
66
Actuellement inutilis�; les fichiers de configuration c�t� d�p�t
67
arriveront un jour ici.
69
Si le d�p�t est acc�d� par Apache et mod_dav_svn, des bases de donn�es
70
priv�es de gestion sont stock�es ici.
72
L'environnement principal de ``Berkeley DB'', c'est plein de tables DB qui
73
comprennent les donn�es stok�es par libsvn_fs. C'est ici que toutes vos
74
donn�es sont! En particulier, la plupart de vos contenus de fichiers
75
arrivent dans la table ``strings''. Les fichiers log s'accumulent aussi ici,
76
ainsi les transactions peuvent �tre r�cup�r�es.
78
C'est ici que ce trouve les fichiers d'accroche de pr�-remont�e et
79
post-remont�e (et un jour, une accroche de lecture).
81
Un simple fichier se trouve ici; les lectures et �criveurs prennent un
82
v�rrou partag� sur ce fichier. Ne pas supprimer ce fichier.
85
Une fois que le d�p�t a �t� cr��, il est tr�s probable que vous vouliez
86
utiliser le client svn pour importer une arborescence initiale. (essayez
87
@samp{svn help import}, ou @xref{Autres commandes}.)
90
@c ------------------------------------------------------------------
91
@node Examiner un d�p�t
92
@section Examiner un d�p�t
94
@subsection Transactions et R�visions
96
Un d�p�t Subversion est essentiellement une s�quence d'arborescence;
97
chaque arborescence est appel�e une @dfn{r�vision}. Si ceci est nouveau
98
pour vous, il serait bon que vous lisiez
99
@ref{Transactions et num�ro de r�vision}.
101
Chaque r�vision commence comme une @dfn{transaction} d'arborescence. Quand
102
vous faites une remont�e, un client construit une transaction qui copie
103
ses modifications locales, et lorsque la remont�e a r�ussie, la
104
transaction est effectivement promue en une nouvelle r�vision
105
d'arborescence et un nouveau num�ro de r�vision lui est assign�.
107
Les mise � jour fonctionnent de fa�on similaire: le client contruit une
108
transaction d'arborescence qui est un ``mirroir'' de sa copie de travail.
109
Le d�p�t alors compare la transaction d'arborescence avec une r�vision de
110
l'arborescence, et envoie en retour un delta des arborescences. Lorsque
111
la mise � jour est termin�e, la transaction est termin�e et supprim�e du
114
L'utilisation de transaction d'arborescence est le seul moyen pour
115
'�crire' dans le syst�me de fichier versionn� du d�p�t; tous les
116
utilisateurs de libsvn_fs font ��. Cependant, il est important de
117
comprendre que la dur�e de vie de la transaction est totalement flexible.
118
Dans le cas d'une mise � jour, la transaction d'arborescences est
119
temporaires et imm�diatement d�truites. Dans le cas d'une remont�e,
120
les transactions sont transform�es en une r�vision permanente (ou
121
abandonn�es si la remont�e �choue). Dans le cas d'une erreur ou d'un bug,
122
il est possible que la transaction soit accidentellement soit laiss�e tel
123
quel -- l'appelant de libsvn_fs peut mourrir avant de la supprimer. Et en
124
th�orie, un jour une application de workflow enti�re pourra faire des
125
r�parations lors de la creation des transaction; elles pourraient �tre
126
examin�es alternativement par diff�rents gestionnaires avant d'�tre
127
supprim�es pour promues � une r�vision.
129
Le fait est que si vous �tes en train d'administrer un d�p�t Subversion,
130
vous allez devoir examiner les r�visions et les transactions. Cel� fait
131
partie du travail de suveillance de la bonne sant� de votre d�p�t.
133
@subsection @command{svnlook}
135
@command{svnlook} est un outil qui travail en lecture-seule@footnote{
136
pourquoi en lecture-seule? parce que si un script d'accroche de
137
pr�-remont�e modifie la transaction avant que la remont�e soit faite, la
138
copie de travail n'aura aucune moyen pour savoir ce qui c'est pass�, et
139
serait donc d�synchronis� sans le savoir. Subversion n'a actuellement
140
aucun moyen pour traiter cette situation, et peut-�tre ne l'aura jamais.}
141
et qui peut-�tre utilis� pour examiner les r�visions et les transactions
142
d'arborescences d'un d�p�t. Il est utile pour les administrateurs syst�me,
143
et peut �galement �tre utilis� par les scripts d'accroche de pr�-remont�e,
144
(@file{pre-commit}), ou post-remont�e, @file{post-commit}.
146
L'utilisation la plus simple est:
152
Cel� imprime des informations sur la derni�re r�vision dans le d�p�t
153
``repos''. En particulier, elle montrera les descriptions de modification,
154
l'auteur, la date, et un diagramme de l'arborescence.
156
Pour regarder � une r�vision ou une transaction particuli�re:
159
$ svnlook repos rev 522
160
$ svnlook repos txn 340
163
Ou, si vous voulez uniquement voir certains type d'information,
164
@command{svnlook} acc�pte plusieurs sous-commandes. par exemple:
167
$ svnlook repos rev 522 log
168
$ svnlook repos rev 559 diff
171
Les sous-commandes disponibles sont:
175
Affiche la description des modifications de l'aborescence.
177
Affiche l'auteur de l'arborescence.
179
Affiche la date de l'arborescence.
180
@item @samp{dirs-changed}
181
Affiche la liste des r�pertoires qui ont chang� dans l'arborescence.
183
Affiche la liste de tous les fichiers et r�pertoires qui ont chang� dans
186
Affiche un ``unified diff'' des fichiers modifi�s.
190
@subsection l'interpr�teur de commande
192
L'outil @command{svnadmin} a un mode avec un interpr�teur de commande
193
'jouet'. Il n'en fait pas beaucoup, mais il permet de ``fourrager'' dans
194
le le d�p�t comme s'il y avait une mountage de syst�me de fichier
195
imaginaire. Les commandes de base @samp{cd}, @samp{ls}, @samp{exit}, et
196
@samp{help} sont disponibles, aussi bien que la tr�s sp�ciale commande
197
@samp{cr} -- ``changer de r�vision''. La derni�re commande vous permet de
198
vous d�placer entre r�visions d'arborescence.
201
$ svnadmin shell repos
204
< 1.0.2i7> [ 601] 1 0 trunk/
205
<nh.0.2i9> [ 588] 0 0 branches/
206
<jz.0.18c> [ 596] 0 0 tags/
209
<609: /trunk>$ cr 500
211
< 2.0.1> [ 1] 0 3462 svn_config.dsp
212
< 4.0.dj> [ 487] 0 3856 PORTING
213
< 3.0.cr> [ 459] 0 7886 Makefile.in
214
< d.0.ds> [ 496] 0 9736 build.conf
215
< 5.0.d9> [ 477] 1 0 ac-helpers/
216
< y.0.1> [ 1] 0 1805 subversion.dsp
221
L'affichage de @samp{ls} a seulement quelques colonnes:
224
NODE-ID CREATED-REV HAS_PROPS? SIZE NAME
226
< 1.0.2i7> [ 601] 1 0 trunk/
227
<nh.0.2i9> [ 588] 0 0 branches/
228
<jz.0.18c> [ 596] 0 0 tags/
232
@c ------------------------------------------------------------------
233
@node Accroches d un d�p�t
234
@section Accroches d un d�p�t
236
Une @dfn{accroche} est un programme d�clench� par un acc�s en lecture ou
237
�criture au d�p�t. L'accoche re�oie suffisament d'information pour dire
238
quel est l'action, la/les cibles de l'op�ration, et qui le fait. En
239
fonction de la sortie ou du code de retour de l'accroche, le programme
240
d'accroche peut continuer l'action, la stopper, ou la suspendre
241
d'une certaine mani�re.
243
Les accroches de Subversion sont des programme qui r�sident dans le
244
r�pertoire @file{hooks} du d�p�t:
248
post-commit.tmpl* read-sentinels.tmpl write-sentinels.tmpl
249
pre-commit.tmpl* start-commit.tmpl*
252
C'est ainsi que le r�pertoire @file{hooks} apparait apr�s la cr�ation d'un
253
d�p�t. Il ne contient aucun programmes d'accroche -- ce ne sont que des
256
Les accroches actuelles doivent �tre nomm�es @file{start-commit},
257
@file{pre-commit} ou @file{post-commit}. Les fichiers mod�les (.tmpl) sont des exemples de
258
script shell pour vous aider � commencer; lisez les pour connaitre les
259
d�tails de fonctionnement de chaque accroche. Pour faire vos propre
260
accroche, copi� @file{foo.tmpl} en @file{foo} et �ditez le.
262
Les @file{read-sentinels} et @file{write-sentinels} ne sont pas encore
263
impl�ment�s. Leurs intentions est d'offrir un fonctionnement plus proche
264
du d�mon que des accroches. Une sentinelle (Ndt: c'est la bonne traduction
265
?) est d�marr� au d�but d'une op�ration utilisateur. Le serveur Subversion
266
commnunique avec la sentinelle en utilisant un protocole encore a d�finir.
267
En fonction de la r�ponse de la sentinelle, Subversion va peut-�tre
268
stopper ou modifier l'op�ration.
270
Voici une description des programmes d'accroche:
274
@item @file{start-commit}
275
Le programme est ex�cut� avant que la transaction de remont�e soit cr��e.
276
C'est typiquement utilis� pour d�cider si l'utilisateur � les privil�ges
277
de remonter des modifications dans le d�p�t. Le d�p�t passe deux arguments
278
� ce programme: le chemin vers le d�p�t, et le nom de l'utilisateur qui
279
tente la remont�e. Si le programme retourne un code de sortie diff�rent de
280
z�ro, la remont�e est stopp�e avant que la transaction ne soit cr��e.
281
@item @file{pre-commit}
282
Ce programme est ex�cuter quand la transaction est compl�te, mais avant
283
quelle soit valid�e. Typiquement, cette accroche est utilis�e pour
284
prot�ger contre des remont�es qui ne sont pas authoris�es � cause du
285
contenu ou du lieu (par exemple, votre site pourrait exiger que toutes
286
les remont�es � une certaine branche inclues un num�ros de ticket du
287
syst�me de tra�age de bug, ou que la description des modifications
288
arrivant soit non vide.)@footnote{Actuellement, c'est la seule m�thode
289
part laquelle un utilisateur peut impl�menter un contr�le d'acc�s avec une
290
granulosit� fine; au-del� des facilit�s offertes pas Apache
291
(@file{httpd.conf}). Dans une future version de Subversion, Nous
292
planifions d'impl�menter une syst�me d'ACL (Liste de Control d'Acc�s)
293
directement dans le syst�me de fichier.} Le d�p�t passe deux param�tres �
294
ce programme: le chemin vers le d�p�t et le nom de la transaction en
295
attende de validation. Si le programme retourne un code de sortie
296
diff�rente de z�ro, la remont�e est annul�e et la transaction supprim�e.
298
Subversion inclut le script @file{tools/hook-scripts/commit-access-control.pl}
299
qui peut �tre appel� depuis @file{pre-commit} pour impl�menter un contr�le
302
@item @file{post-commit}
303
Ce programme est ex�cut� apr�s que la transation soit r�alis�e et que nous
304
avons une nouvelle r�vision. La plupart des gens utilise cette accroche
305
pour envoyer des emails decrivant la remont�e ou pour r�aliser une
306
sauvegarde � chaud du d�p�t. Le d�p�t passe deux arguments � ce programme:
307
le chemin vers le d�p�t et le nouveau num�ros de r�vision qui a �t� cr��.
308
Le code de sortie du programme est ignor�.
310
Subversion inclut le script @file{tools/hook-scripts/commit-email.pl} qui
311
peut �tre utilis� pour envoyer les modifications appliqu�es par la
312
remont�e � un nombre quelconque d'adresse de courrier �lectronique.
313
Le script @file{tools/backup/hot-backup.py}, �galement inclut, permet de
314
faire des sauvegardes � chaud de votre d�p�t Subversion apr�s chaque
319
Notez que les accroches doient �tre ex�cutable part l'utilisateur qui
320
les lance (commun�ment l'utilisateur qui ex�cute httpd) et que ce m�me
321
utilisateur doit �tre capable d'acc�der au d�p�t.
323
Les accroches de pre-remont�e (@file{pre-commit}) et de post-remont�e
324
(@file{post-commit}) ont besoin de connaitre des choses a propos des
325
modifications qui vont �tre remont�es (ou qui viennent d'�tre remont�e).
326
La solution est un programme ind�pendant, @command{svnlook}
327
(@xref{Examiner un d�p�t}.) qui est install� au m�me endroit que le
328
binaire @command{svn}. Le script peut utiliser @command{svnlook} pour
329
examiner une transaction ou une r�vision d'arborescence. Il produit une
330
sortie qui est aussi visible par un humain que par un programme, ainsi les
331
scripts d'accroche peuvent facilement le parser. Notez que `svnlook'
332
travail en lecture-seule -- il ne peut que inspecter et ne peut pas
336
@c ------------------------------------------------------------------
337
@node Maintenance d un d�p�t
338
@section Maintenance d un d�p�t
340
@subsection Gestion de Berkeley DB
342
Actuellement, le d�p�ts de Subversion n'a qu'un moteur de base de donn�es:
343
Berkeley DB. Toute votre structure de syst�me de fichier et vos donn�es
344
sont dans un ensemble de tables dans @file{repos/db/}.
346
Berkeley DB est livr� avec des outils pour g�rer ces fichiers, et ont
347
leure propre et excellente documenations. (voir
348
@url{http://www.sleepycat.com}, ou lisez juste les pages man.) Nous ne
349
couvrirons pas tous ces outils ici; nous mentionnerons quelqu'une des
350
proc�dures les plus communes dont un administrateur de d�p�t pourrait
353
Premi�rement, rappelez vous que Berkeley DB a de v�ritables transactions.
354
toutes tentatives de modifications de la DB (Data-Base, Base de Donn�e)
355
est un premier loggu�. Au moindre probl�me, la DB peut retourner
356
d'elle-m�me en arri�re au pr�c�dent ``point de contr�le'' et recommencer
357
la transaction pour r�cup�rer les donn�es dans le m�me �tat.
359
Selon notre propre exp�rient, nous avons rencontr� des situations ou un
360
bug dans Subversion (qui produit un plantage) peut parfois avoir l'effet
361
de bord de laisser d'environnement de DB dans un �tat ``v�rouill�''. Les
362
tentatives suivantes de lecture ou �criture reste bloqu�es, en attente sur
365
Pour ``d�bloquer'' le d�p�t, utilisez @command{db_recover}:
368
$ db_recover -ve -h repos/db
369
db_recover: Finding last valid log LSN: file: 40 offset 4080873
370
db_recover: Checkpoint at: [40][4080333]
371
db_recover: Checkpoint LSN: [40][4080333]
372
db_recover: Previous checkpoint: [40][4079793]
373
db_recover: Checkpoint at: [40][4079793]
374
db_recover: Checkpoint LSN: [40][4079793]
375
db_recover: Previous checkpoint: [40][4078761]
376
db_recover: Recovery complete at Sun Jul 14 07:15:42 2002
377
db_recover: Maximum transaction id 80000000 Recovery checkpoint [40][4080333]
380
Premi�rement, assurez vous que vous ex�cutez cette commande avec le compte
381
de la base de donn�e et @emph{non} en tant que root. En ex�cutant
382
@command{db_recover} sous le compte root, cel� laissera des fichiers avec
383
le propri�taire root dans le r�pertoire db qui ne pourront �tre ouvert par
384
le compte non root qui g�re la base de donn�e et qui est typiquement le
385
compte du processus Apache.
387
Deuxi�mement, un administrateur de d�p�t peut avoir besoin de g�rer le
388
grossissement des fichiers log. A tout instant, l'environnement DB
389
utilise au moins un fichier log pour enregistrer la transactions; lorsque
390
le ficheir log actuel grossi jusqu'� 10 m�ga octet, un nouveau fichier log
391
est d�but�, et l'ancien reste.
393
Ainsi, apr�s une longue periode, vous constaterez un nombre important de
394
fichiers log. A ce moment l�, vous avez deux choix : si vous laissez
395
tous les fichiers log, vous avez la garantie que @command{db_recorer}
396
pourra toujours ``rejouer'' chaques transactions de la base de donn�e,
397
depuis la premi�re remont�e (ceci est la m�those s�re et un peu
398
parano�aque). L'autre m�thode, est de demander � Berkeley DB de vous dire
399
quels fichiers log ne sont plus activement utilis�s :
402
$ db_archive -a -h repos/db
408
Notre d�p�t de Subversion utilise une script d'accroche de post-remont�e
409
(@file{post-commit}), qui apr�s avoir r�alis� une sauvegarde � chaud du
410
d�p�t, supprime ces fichiers log exc�dentaire. Dans les sources de
411
Subversion, regardez @file{tools/backup/hot-backup.py}.
413
Ce script illustre �galement une m�thode s�re de faire une sauvegarde du
414
d�p�t alors qu'il reste en cours d'utilisation: copier tout le repertoire
415
du d�p�t, puis recopier les fichiers log list� par la commande
416
@samp{db_recorer -l}.
418
Pour utiliser un d�p�t de sauvegarde que vous venez de restaurer, assurez
419
vous d'ex�cuter la commande @samp{db_recover -ve} dans l'espace @file{db}
420
en premier. Ceci garanti que toutes transactions non-termin�es soient
421
compl�tement ``jou�es'' avant que le d�p�t ne soit utilis� � nouveau.
423
Enfin, not� que Berkeley DB a un syst�me de verrouillage complet; dans des
424
cas d'op�rations ext�mement intense de svn, nous avons constat� des
425
situations o� l'envirennement de DB n'a plus suffisament de verroux. Le
426
nombre maximum de verrou peut-�tre ajust� en changant les valeurs dans
427
le fichier @file{repos/db/DB_CONFIG}. Ne changez pas les valeurs par
428
d�faut sans savoir exactement ce que vous faites; Voyez s�r d'avoir lu
429
@uref{http://www.sleepycat.com/docs/ref/lock/max.html} en premier.
431
@subsection Utilisation de svnadmin
433
L'outil @command{svnadmin} a des sous-commandes qui sont sp�cifiquement
434
utiles � un administrateur de d�p�t. Faites attention lorsque vous
435
utilisez @command{svnadmin}! @command{svnadmin} contrairement �
436
@command{svnlook}, qui ne fonctionne qu'en lecture seule, peut modifier
439
La fonctionnalit� la plus utilis�e est probablement @samp{svadmin
440
setlog}. Une description de modification est une propri�t� unversionn�e
441
directement attach� � la r�vision; Il n'y a qu'une seule description de
442
modification par r�vision. Parfois l'utilisateur a remont� sa description
443
de modification et il a besoin de la remplacer.
446
$ echo "Here is the new, correct log message" > newlog.txt
447
$ svnadmin setlog myrepos 388 newlog.txt
450
Il y a un sympathique script CGI dans @file{tools/cgi/} qui permet �
451
certain (avec un mot de passe d'acc�s) de modifier les descriptions de
452
message via un navigateur web.
454
Un autre usage courant de @command{svnadmin} est d'inspecter et de
455
nettoyer de vieilles transactions abandonn�es. Les remont�es et les mises
456
� jour cr�ent toutes les deux des transactions d'arborescence, mais
457
occasionnellement un bug ou un plantage peut les laisser telles quelles.
458
En inspectant la date de la transaction, un administrateur peut decider la
462
$ svnadmin lstxns myrepos
465
$ svnadmin lstxns --long myrepos
467
Created: 2002-07-14T12:57:22.748388Z
469
$ svnadmin rmtxns myrepos 319 321
472
@c ### Hey guys, are going to continue to support @samp{svnadmin undeltify}??
474
Une autre sous-commande tr�s utilis�e est @samp{svnadmin undeltify}.
475
Rappelez vous que la derni�re version de chaque fichier est stock�e en
476
entier dans le d�p�t, et les r�visions pr�c�dentes des fichiers sont
477
stock�s comme diff�rences par rapport � la r�vision suivant la plus
478
proche. Lorsqu'un utilisateur tente un acc�s � une r�vision ant�rieur, le
479
d�p�t doit appliquer � rebours les diff�rences au plus r�cent des contenus
480
complet pour obtenir la version ant�rieur d�sir�e.
482
Si une r�vision d'arborescence particuli�re est tr�s populaire,
483
l'administrateur peut am�liorer le temps d'acc�s � cette arborescence en
484
``undeltifying'' (supprimer les diff�rences) tous les patches dans la
485
r�vision -- C'est-�-dire en convertissant chaque fichier en contenu
489
$ svnadmin undeltify myrepos 230 /project/tags/release-1.3
490
Undeltifying `/project/tags/release-1.3' in revision 230...done.
494
@c ------------------------------------------------------------------
495
@node Mettre un d�p�t sur le r�seau
496
@section Mettre un d�p�t sur le r�seau
498
Vous avez donc un d�p�t et vous voulez le rendre accessible pour tout le
501
Le serveur r�seau primaire de Subversion est httpd d'Apache parlant le
502
protocole WebDav/deltaV, qui est un ensemble d'extension � http. Pour plus
503
d'information sur DAV, voir @uref{http://www.webdav.org}.
505
Pour rendre votre d�p�t accessible depuis le r�seau, vous devez
508
avoir httpd 2.0 fonctionnant avec le module mod_dav
510
installer le greffon mod_dav_svn pour mod_dav, qui utilise la librairie
511
d'acc�s au d�p�t de Subversion
513
configurer votre fichier @file{httpd.conf} pour exporter le d�p�t
516
Vous pouvez accomplir les deux premiers en contruisant httpd et Subversion
517
depuis les sources ou en installant un paquetage binaire sur votre
518
syst�me. Le second appendice de ce document contient plus d'instruction
519
d�taill�es pour le faire. (@xref{Compilation et installation}.) Des
520
instructions sont �galement disponibles dans le fichier @file{INSTALL}
521
dans les sources de Subversion.
523
Dans cette section, nous nous concentrerons sur la configuration de votre
524
fichier @file{httpd.conf}.
526
Quelque part au d�but de votre fichier de configuration, d�finissez un
527
nouveau bloque @samp{Location}:
532
SVNPath /absolute/path/to/myrepos
536
Ceci rend le d�p�t @file{myrepos} disponible � l'URL
537
@url{http://hostname/repos}, sans aucune restriction d'acc�s :
541
Chaqu'un peut utiliser son client svn pour sortir une copie de travail, ou
542
de toute URL qui correspond � un sous-r�pertoire du d�p�t.
544
En pointant un navigateur web ordinaire � l'URL, toute personne peut
545
naviger int�rectivement dans la derni�re r�vision.
547
Tout le monte peut remonter des modifications au d�p�t.
550
Si vous voulez restreindre en lecture ou �criture l'acc�s � l'ensemble du
551
d�p�t, vous pouvez utiliser les facilit�s de contr�le d'acc�s d'Apache.
553
Premi�rement, cr�� un fichier vide qui contiendra les noms d'utilisateur
554
et leur mot de passe. Renseign� les noms et les mots de passe crypt�s dans
555
le fichier comme ci-dessous:
563
Vous pouvez g�n�rer les mots de passe crypt�s en utilisant une commande
564
@samp{crypt(3)} standard ou en utilisant l'outil @command{htpasswd}
565
pr�sent dans le r�pertoire @file{bin} d'Apache.
568
$ /usr/local/apache2/bin/htpasswd -n sussman
570
Re-type new password:
571
sussman:kUqncD/TBbdC6
574
Puis ajoutez ces quelques lignes dans votre block @samp{<Location>} qui
575
pointent sur le fichier des utilisateurs:
579
AuthName "Subversion repository"
580
AuthUserFile /path/to/users/file
583
Si vous voulez restreindre @emph{tout} acc�s au d�p�t, ajouter une ligne
590
Cette ligne fait qu'Apache exigent un utilisateur authentifi� pour toutes
591
les requ�tes http � votre d�p�t.
593
Pour restreindre les acc�s en �criture uniquement, vous devez exiger un
594
utilisateur authentifi� pour toutes les m�thodes de requ�te sauf celles
595
qui sont de type lecture seule:
598
<LimitExcept GET PROPFIND OPTIONS REPORT>
603
Ou, si vous voulez quelque chose de plus astucieux, vous pouvez cr�er deux
604
groupes d'utilisateurs s�par�s, un pour les utilisateurs en lecture, un
605
autre pour les utilisateurs en �criture:
608
AuthGroupFile /my/svn/group/file
610
<LimitExcept GET PROPFIND OPTIONS REPORT>
611
Require group svn_committers
614
<Limit GET PROPFIND OPTIONS REPORT>
615
Require group svn_committers
616
Require group svn_readers
620
Ce ne sont que de simples exemples. Pour un tutorial complet sur les
621
contr�le d'acc�s d'Apache, regarder
622
@uref{http://httpd.apache.org/docs-2.0/misc/tutorials.html}.
624
Autre remarque: pour que @samp{svn cp} marche (ce qui est actuellement
625
impl�ment� comme une requ�te DAV COPY), mod_dav doit �tre capable de
626
d�terminer le hostname du serveur. Un moyen standard est d'utiliser la
627
directive ServerName d'Apache pour fixer le hostname du serveur.
629
Ndt: si UseCanonicalName d'apache est sur off il n'est pas forc�ment
630
n�cessaire de renseigner ServerName. Je vous conseile d'essayer en
631
premier ``UseCanonicalName Off'' qui pose moins de probl�me lors des
632
redirections par Apache.
634
Editez votre @file{httpd.conf} pour inclure:
637
ServerName svn.myserver.org
640
Si vous utilisez le ``virtual hosting'' d'apache avec la directive
641
@samp{NameVirtualHost}, vous pourrez avoir besoin d'utiliser la directive
642
@samp{ServerAlias} pour sp�cifier des noms additionnels par lesquels votre
645
Si vous n'est pas familier avec une directive d'Apache, ou pas tr�s s�r
646
de ce qu'elle fait, n'h�sitez pas � consulter la documentation:
647
@uref{http://httpd.apache.org/docs-2.0/mod/directives.html}.
649
Vous pouvez tester votre d�p�t export� en lan�ant httpd:
652
$ /usr/local/apache2/bin/apachectl stop
653
$ /usr/local/apache2/bin/apachectl start
656
Contr�ler @file{/usr/local/apache2/logs/error_log} pour �tre s�re que sont
657
d�marrage est OK. Essayez une sortie via le r�seau de votre d�p�t:
660
$ svn co http://localhost/repos wc
663
La raison la plus commune pour que cel� ne marche pas est un probl�me de
664
permission de lecture/�criture des fichiers db du d�p�t. Assurez-vous que
665
l'utilisateur ``nobody'' (ou un autre UID utilis� par le processus httpd)
666
a les permissions de lecture et �criture aux fichiers Berkeley DB! C'est
667
le probl�me le plus courant.
669
Vous pouvez voire toute les ``plaintes'' de mod_dav_svn dans le fichier
670
d'erreur d'Apache, @file{/usr/local/apache2/logs/error_log} ou ailleur
671
en fonction de votre installation d'Apache. Pour plus d'information sur le
672
tra�age des probl�mes, regardez ``Debugging the server'' dans le fichier
676
@c ------------------------------------------------------------------
677
@node Migrer un d�p�t
678
@section Migrer un d�p�t
680
Parfois des situations sp�ciales arrivent o� vous devez d�placer tout
681
votre donn�e du syst�me de fichier d'un d�p�t vers un autre. Le sch�ma du
682
syst�me de fichier de la base de donn�es a chang� dans une nouvelle
683
version de Subversion, ou peut-�tre vous voulez utiliser un moteur de base
686
Quoiqu'il en soit, vos donn�es doivent �tre migr�es vers un nouveau
687
d�p�t. Pour le faire, vous avez les commandes @samp{svnadmin dump} et
688
@samp{svnadmin load}.
690
@samp{svnadmin dump} �crit un flux de vos donn�es de votre d�p�t vers
691
la sortie standard (stdout):
694
$ svnadmin dump myrepos > dumpfile
701
Ce flux d�crit toutes les r�visions dans votre d�p�t comme un liste de de
702
modifications � des noeuds. C'est principalement du texte lisible par un
703
humain; mais lorsqu'un contenu de fichier change, le contenu entier est
704
envoy� dans le flux. Si vous avez des fichiers binaires ou des propri�t�s
705
binaires dans votre d�p�t, ces parties du flux pourront �tre moins lisible
706
pour un humain. Plus loin, le flux complet sera appel� un dump.
708
Apr�s avoir extrait vos donn�es, vous pouvez d�placer le fichier vers un
709
syst�me diff�rent (ou quelque part ou l'environnement utilise une version
710
diff�rente de @command{svnadmin} et/ou @file{libsvn_fs.so}), et cr�er un
711
``nouveau'' style de d�p�t qui a un nouveau sch�ma ou moteur de base de
715
$ svnadmin create newrepos
718
La commande @samp{svnadmin load} est d'entreprendre de lire le dump
719
depuis l'entr�e standard (stdin) et de rejouer chaques remont�es:
722
$ svnadmin load newrepos < dumpfile
723
<<< Started new txn, based on original revision 1
724
* adding path : A ... done.
725
* adding path : A/B ... done.
727
------- Committed new rev 1 (loaded from original rev 1) >>>
729
<<< Started new txn, based on original revision 2
730
* editing path : A/mu ... done.
731
* editing path : A/D/G/rho ... done.
733
------- Committed new rev 2 (loaded from original rev 2) >>>
736
Voil�, vos r�visions ont �t� remont�es dans le nouveau d�p�t.
738
@subsection Stupide dump/load astuces
740
Les personne que aime ``copiner'' avec Unix peuvent essayer des choses comme
743
$ svnadmin create newrepos
744
$ svnadmin dump myrepos | svnadmin load newrepos
747
Il est aussi possible de cr�er une s�rie de petits fichiers dump et de les
748
charger en s�rie (Dans le cas o� un unique fichier dump est trop grop pour
749
rentrer sur le media de sauvegarde). Mais cel� demande un peu de boulot.
752
$ svnadmin dump myrepos 0 2000 > dumpfile1
753
$ svnadmin dump myrepos 2000 4000 > dumpfile2
756
Donc maintenant vous avez deux fichiers de dump. Le premier contient les
757
r�vision 0 � 2000, et le second contient les r�visions 2000 � 4000.
758
Pourquoi le recouvrement ?
760
Voici le pourquoi. La premi�re r�vision extraite par @samp{svnadmin
761
dump} est toujours compar�e � la r�vision 0 qui est juste le r�pertoire
762
racine @file{/} vide. Ceci signifie que la premi�re r�vision de tout dump
763
resemble toujours � une gigantesque liste de noeuds ``ajout�s''. Ce choix
764
a �t� fait pour que tout fichier comme @file{dumpfile2} puisse �tre
765
directement charg� dans un d�p�t vide.
767
Mais il y a un inconv�nient � cet avantage. Lorsque nous voulons charger
768
plusieurs fichiers de dump � la suite, Nous devons �tre s�r que chaques
769
fichiers se recouvrent par au moins une r�vision. Avant le chargement, la
770
premi�re r�vision d'un fichier comme @file{dumpfile2} doit �tre
771
@emph{supprim�}, ainsi le fichier commence par une description de la
772
r�vision 2001 comme une diff�rence d'arborescence par rapport � la
777
Ouvrire le @file{dumpfile2} dans un �diteur
779
ne @emph{pas} supprimer la ligne d'ent�te
780
@samp{SVN-fs-dump-format-version} au d�but du fichier.
782
@emph{supprimer} la premi�re r�vision, qui commence avec un enregistrement
783
@samp{Revision-number:}, et qui va jusqu'au prochain bloque
784
@samp{Revision-number:}.
787
Une fois que vos fichiers de dump ont �t� proprement ``ajust�s'', vous
788
pouvez les charger avec la s�quence:
791
$ svnadmin load newrepos < dumpfile1
792
$ svnadmin load newrepos < dumpfile2
795
@c ------------------------------------------------------------------
799
WebDAV est le protocole r�seau utilis� par Subversion. DAV (Distributed
800
Authoring and Versioning : publication et versionnement distribu�). Nous
801
discuterons ici de ce que cel� signifie pour vous, actuellement et dans le
804
WebDAV a �t� con�u pour faire du web un medium en lecture/�criture,
805
au-lieu d'un medium en lecture seule (comme c'est principalement le cas
806
actuellement). La principe de base est que les r�pertoires et les fichiers
807
peuvent �tre partag�s � travers le web en utilisant une extension
808
standardis�e d'HTTP. La RFC 2518 d�crit l'extension WebDAV d'HTTP, et est
809
disponible (avec beaucoup d'autres informations utiles) �
810
@uref{http://www.webdav.org/}.
812
Actuellement, un grand nombre de gestionnaire de fichier de syst�me
813
d'exploitation sont capable de ``monter'' un r�pertoire r�seau utilisant
814
WebDAV. Sur Win32, l'Explorateur Windows peut naviguer dans ce qu'il
815
app�le un ``Dossier Web'', comme avec d'autres r�pertoires partag�s. Mac
816
OS X a �galement cette capacit� comme le navigateur Nautilus de GNOME.
818
Cependant, la RFC 2518 n'impl�mente pas compl�tement l'aspet versionnement
819
de WebDAV. Un commit� s�par� a cr�� la RFC 3253, connue comme l'extension
820
@dfn{DeltaV} de WebDAV, et disponible � @uref{http://www.webdav.org/deltav/}.
821
Ces extensions ajoutent le concept de contr�le de version � HTTP et c'est
822
ce qu'utilise Subversion.
824
Il est important de comprendre que bien que Subversion utilise DeltaV pour
825
communiquer, le client Subversion n'est @emph{pas} un client � usage
826
g�n�ral de DeltaV. En fait, il attend des fonctionnalit�es personnalis�es
827
du serveur. De m�me, le serveur Subversion n'est pas un serveur � usage
828
g�n�ral de DeltaV. Il impl�mente un strict sous-ensemble des
829
sp�cifications de DeltaV. Un client WebDAV ou DeltaV pourait tr�s bien
830
communiquer avec, mais uniquement si ce client op�re � l'int�rieur de ce
831
faisceau �troit de fonctionnalit� que le serveur impl�mente. Les futures
832
versions de Subversion apporteront une int�rop�rabilit� plus compl�te de
835
Au moment de l'�criture de ce guide, la plupart des navigateurs DAV et des
836
clients ne supporte pas encore DeltaV; ceci signifie qu'un d�p�t
837
Subversion peut uniquement �tre consult� ou mont� uniquement comme une
838
ressource en lecture-seule. (une requ�te ``PUT'' HTTP est valide
839
lorsqu'elle est envoy�e � un serveur uniquement WebDAV, mais un serveur
840
DeltaV tel que mod_dav_svn ne le permet pas. Le client doit utiliser des
841
m�thodes sp�ciales de contr�le de version pour �crire sur le serveur.)
842
Et, de l'autre c�t�, un client Subversion ne peut pas sortir une copie de
843
travail d'un serveur WebDAV g�n�rique; il attend un sous-ensemble
844
sp�cifique de fonctionnalit�s DeltaV.
846
Pour une description d�taill�e de l'impl�mentation WebDAV de Subversion, voir
847
@uref{http://svn.collab.net/repos/svn-repos/trunk/www/webdav-usage.html}.