1
@node D�buter avec Subversion
2
@chapter D�buter avec Subversion
4
Bien d�buter avec Subversion.
7
* Introduction:: Historique et fonctionnalit�s.
8
* Architecture:: Organisation de Subversion.
9
* Installation:: Obtenir Subversion.
10
* Concepts:: Concepts et premi�re utilisation.
14
@c ------------------------------------------------------------------
18
@subsection Contr�le de version
20
Subversion est logiciel libre (open-source) de @dfn{contr�le de version}.
22
C'est-�-dire que Subversion g�re les fichiers dans le temps. Les fichiers
23
sont d�pos�s dans un @dfn{d�p�t} central. Le d�p�t peut-�tre vu comme un
24
serveur de fichier classique, si ce n'est qu'il conserve tous les
25
modifications r�alis�es � vos fichiers. Ceci vous permet de r�cuperer
26
d'anciennes versions de vos fichiers, ou de consulter l'historique des
27
modifications de vos fichiers.
29
Certaines syst�mes de contr�le de version sont aussi des syst�mes
30
@dfn{gestion de configuration}. Ces syst�mes sont sp�cifiquement con�us
31
pour g�rer des arborescences de code source, et ont des fonctionnalit�s
32
qui sont sp�cifiques au d�veloppement de logiciel (comme la compr�hension
33
de language de programmation). Subversion ne fait pas parti de ces types
34
de syst�mes; Subversion est un syst�me g�n�ral qui peut-�tre utilis� pour
35
g�rer @emph{tout} type d'ensemble de fichiers. (Il reste n�anmoins
36
parfaitement adapd� pour gerer du code source.)
39
@subsection Historique
41
Subversion se veut �tre le successeur de CVS (@uref{http://www.cvshome.org}).
43
Lors de l'�criture de Subversion, CVS �tait le standard des syst�mes de
44
contr�le de version libre utilis� par la communaut� open-source. C'est un
45
excellent produit, s�rieux et avec une grande r�putation de faibilit�.
46
Il a �t� con�u pour �tre parfaitement adapt� au d�veloppement
47
open-source. Cependant, il a aussi quelques d�fauts qui sont
48
difficilement corrigables.
50
Les concepteurs originels de Subversion se sont concentr�s sur quelques
51
objectifs simples: ils ont d�cid� que Subversion sera un rempla�ant
52
fonctionnel de CVS. Subversion fera tout ce que CVS fait -- ceci en
53
conservant le m�me model de d�veloppement et en corrigant les d�fauts
54
les plus �vidents. Les utilisateurs actuels de CVS sont la la cible
55
pr�vil�gi�e de Subversion. Tout utilisateur de CVS doit �tre capable
56
d'utiliser Subversion apr�s un petit effort.
58
CollabNet (@uref{http://www.collab.net}) a fourni les moyens initiaux
59
n�cessaires en 2000 pour d�buter le travail de d�veloppement. Cette
60
initiative est devenue un important projet open-source pouss� par la
61
communaut� des d�veloppeurs de logiciel libre.
65
Ce livre est destin� aux personnes ayant d�j� utilis� un syst�me de
66
contr�le de version et pas forc�ment Subversion ou CVS. Il consid�re que
67
le lecteur a un minimum de culture informatique et de connaissance
68
d'utilisation d'Unix en ligne de commande.
70
Les personnes connaissant CVS peuvent sauter certaines sections de
71
l'introduction qui d�crive le mod�le de versionnement concurrent de
72
Subversion. Il existe �galement un guide rapide pour les utilisateurs de
73
CVS dans l'appendice (@xref{SVN pour les utilisateurs de CVS}.).
75
@subsection Fonctionnalit�s
77
Quelles fonctionnalit�s de Subverion le rend meilleur que CVS? Voici une
78
petit liste qui vous mettra en app�tit:
83
@b{Versionnement des r�pertoires} Le d�p�t de Subversion n'utilise pas les
84
fichiers RCS contrairement � CVS; au-lieu de cel�, il impl�mente un
85
syst�me de fichier versionn� ``virtuel'' qui trace les arborescences dans le
86
temps. Les fichiers @emph{et} les r�pertoires sont versionn�s. Ainsi, on
87
trouve de r�els commands ``move'' (d�placer) et ``copy'' (copier) du cot�
91
@b{Requ�te de changement atomique} Une requ�te de changement du d�p�t
92
(central) est totalement r�alis�e ou pas du tout. Elle n'est jamais
93
partiellement r�alis�e.
96
@b{Interface r�seau �volu�e} Le serveur r�seau de Subversion est Apache,
97
le client et le serveur communiquent ensemble en utilisant le protocole
98
WebDav. (voir @ref{Architecture})
101
@b{Acc�s r�seau optimis�} Un algorithme de detection de diff�rences
102
binaire est utilis� pour stocker et transmettre les �carts dans les deux
103
sens, que ce soit un fichier texte ou de type binaire.
106
@b{M�ta-donn�e} Chaque fichier ou r�pertoire a un invisible tableau qui
107
lui est attach�. Vous pouvez stocker n'importe quelles paire cl�e/valeur
108
que vous voulez: propri�taire, permissions, ic�ne, type mime, notes
109
personnel, etc. Cette fonctionnalit� donn�e � l'utilisateur est � usage
110
g�n�rale. Les propri�t�s sont versionn�es dans le temps exactement comme
111
le contenu des fichiers.
114
@b{Capacit� d'adaptation} Subversion ne traine pas de ``boulet''
115
historiques; c'est principalement un ensemble de librairies C partag�es
116
avec des interfaces bien con�ues. Ceci rend Subversion facilement
117
maintenable et utilisable par d'autres programmes ou languages.
121
@c ------------------------------------------------------------------
123
@section Architecture
126
Subversion a une conception modulaire; il est bas� sur un ensemble de
127
librairie C. Chaque librairie a un objectif pr�cis et une interface bien
130
Si vous n'est pas interess� par les rouages internes de Subversion, saut�
131
cette partie et all� � @ref{Installation} et @ref{Concepts}.
133
Voici un diagramme des diff�rentes couches de Subversion. Le flux du
134
programme d�bute en haut du diagramme (� l'initiative du l'utilisateur)
135
et continue vers le bas.
137
@c ### Insert Fitz's nicer TIFF graphic here? Perhaps use that
138
@c graphic for dvi or html output, but use the ASCII diagram for info
139
@c output? We'll need texinfo conditionals for that.
143
+---------------------+
144
| ligne de commande |
145
| interface graphique |
147
+----------+---------------------+---------+ <=== Interface client
152
+-------+---------+ +--------------+--+----------+ <=== Interface r�seau
153
| Copie de travail| | Acc�s distant| | Acc�s |
154
| lib de gestion | | du d�p�t | | local |
155
+-----------------+ +--------------+ | du d�p�t |
171
+----------+-------------+--------------+----------+ <=== Interface du syst�me de fichier
173
| Syst�me de fichier de Subversion |
175
+--------------------------------------------------+
181
@subsection Syst�me de fichier
183
Le syst�me de fichier de Subversion n'est pas un syst�me de fichier au
184
niveau noyau qu'une personne peut installer sur un syst�me d'exploitation
185
(comme Linux ext2 fs). Au-lieu de cel�, il d�signe le concept de d�p�t de
186
Subversion. Le d�p�t s'appuit sur une base de donn�es -- actuellement
187
Berkeley DB -- qui est un ensemble de fichiers .db . Cependant, une seule
188
librairie acc�de � ces fichiers et exporte une API (interface) C qui
189
simule un syst�me de fichier -- plus sp�cifiquement un syst�me de
192
Ceci signifie qu'�crire un programme qui acc�de au d�p�t est comme �crire
193
un programme qui utilise une autre API de syst�me de fichier: vous pouvez
194
ouvrir en lecture ou �criture des fichiers et des r�pertoires de la m�me
197
L'utilisation d'un moteur de base de donn�es fournie d'autres
198
fonctionnalit�s appr�ciables dont Subversion a besoin: int�grit� des
199
donn�es, �criture atomique, restauration dans un �tat coh�rent, et
203
@subsection Interface r�seau
205
Subversion est tout entier marqu� par Apache. En son coeur, le client
206
Subversion utilise la librairie d'ex�cution portable d'Apache (Apache
207
Portable Runtime : APR). Ceci permet au client Subversion de se compiler
208
et s'ex�cuter partout o� le verseur httpd d'Apache le fait --
209
actuellement, la liste inclue la plupart des Unix, Win32, BeOS, OS/2,
210
Mac OS X, et peut-�tre Netware.
212
Cependant, Subversion ne d�pend pas que de APR -- le ``serveur''
213
Subversion est httpd d'Apache lui-m�me. httpd d'Apache est �prouv� depuis
214
longtemps, c'est un serveur open-source extensible qui est pr�t pour des
215
utilisations s�rieuses. Il peut supporter de fortes charges r�seau,
216
fonctionne sur de nombreuses plateformes, et est accessible via des
217
pares-feu / proxy (firewalls). Il peut utiliser de nombreux diff�rents
218
protocoles d'authentification et supporte ``network pipelining and
219
caching'' (comment traduit �� ?). En utilisant Apache comme serveur,
220
Subversion profite de tous ces caract�ristiques pour un co�t nul.
222
WebDAV est le protocole r�seau utilis� par Subversion. DAV (Distributed
223
Authoring and Versioning : publication et versionnement distribu�)
224
m�riterait un livre entier � lui seul (voir
225
@uref{http://www.webdav.org/}) --
226
pour r�sumer, c'est une extension du protocole HTTP qui permet de
227
lire/ecrire et le versionnement de fichiers via le web. Le project
228
Subversion esp�re une am�lioration du support de ce protocol: tous les
229
derniers gestionnaires de fichier de win32, MacOS, et GNOME support d�j�
230
ce protocole. Interop�rabilit� deviendra enfin petit � petit une r�alit�.
231
(Cette partie est plust�t mal traduite !).
233
Pour les utilisateurs qui souhaitent seulement acc�der � un d�p�t
234
Subversion sur leur disque local, le client peut aussi le faire; le r�seau
235
n'est pas n�cessaire. La couche RA (``Repository Access'' qui permet
236
d'acc�der au d�p�t) est une API abstraite impl�ment�e par la librairie RA
237
de DAV (acc�s r�seau) et d'acc�s local. C'est le b�n�fice d'�crire un
238
syst�me de gestion de version orient� ``librairie'': envie d'�crire un
239
nouveau protocole r�seau pour Subversion? Il suffit d'�critre une nouvelle
240
librairie qui impl�ment l'API RA.
242
@subsection Librairies clientes
244
Du c�t� client, la librairie charg�e de la ``copie de travail'' de
245
Subversion g�re des informations administratives dans le sous-r�pertoire
246
sp�cial .svn dont l'objectif est similaire au r�pertoire d'administration
247
de CVS qu'on trouve dans la copie de travail de CVS.
249
Un coup d'oeil � l'int�rieur d'un r�pertoire .svn typique en montre un
250
peu plus cependant. Le fichier ``entries'' contient de l'XML qui d�crit
251
l'�tat actuel du r�pertoire de copie de travail (et qui sert
252
essentiellement � la m�me chose que les fichiers Entries, Root de CVS,
253
``and Repository files combined'' (comme traduire ?) ). Mais d'autres
254
�lements (et que l'on ne trouve pas dans CVS) fournissent un lieu de
255
stockage pour les propri�t�s versionn�es (les m�ta-donn�es cit�s dans
256
``Fonctionnalit�s'' au-dessus) et un cache priv� de la version du d�p�t
257
(C'est-�-dire sans les modifications locales � la copie de travail). Ce
258
dernier point permet de connaitre les modifications locales -- et de les
259
annuler -- @emph{sans} demander d'acc�s r�seau. Les donn�es
260
d'authentification sont �galement stock�es dans .svn/, au-lieu d'un seule
261
fichier du type .cvspass.
263
La librarie ``client'' de Subversion a la plus large responsabilit�; sa
264
t�che est de combiner les fonctionnalit�s de la librairie g�rant la copie
265
de travail avec la librarie d'acc�s au d�p�t, et ainsi de fournir une API
266
de haut-niveau pour toute application qui veux r�aliser des actions
267
g�n�rales de control de r�vision. @footnote{Par exemple: la routine C
268
'svn_client_checkout()' prend une URL en param�tre. Il passe cette URL
269
� la librairie d'acc�s au d�p�t et lance une session authentifi�e avec
270
le d�p�t. Puis il demande au d�p�t une certaine arborescence, et envoie
271
cette arborescence � la librairie qui g�re la copie de travail, qui
272
ensuite �crit une copie de travail compl�te sur le disque (r�pertoires
273
.svn et l'arborescence).}
275
La librairie cliente est con�ue pour �tre utilis�e par n'importe quelle
276
application. Alors que les codes source de Subversion inclut un client en
277
ligne de command standard, il doit �tre tr�s facile d'�crire des clients
278
graphiques au-dessus de la librairie cliente.
281
@c ------------------------------------------------------------------
283
@section Installation
285
### Somebody please write this. It should describe how to fetch various
286
binary packages of Subversion for different platforms. Maybe this
287
will flesh out once RPMs, .debs, and BSD ports are widely available
288
from standard locations?
290
Pour construire Subversion depuis le code source,
291
@xref{Compilation et installation}.
294
@c ------------------------------------------------------------------
299
Si vous �tes actuellement un utilisateur de CVS, alors la premi�re
300
section, @ref{Comment d�velopper avec Subversion}, doit vous �tre
301
famili�re. Vous devriez juste le parcourir rapidement, il n'y a rien de
302
sp�cial dans la d�finition de ``R�vision'' dans la seconde sous-section. A
303
certain endroit, vous devriez probablement lire aussi l'appendice qui
304
d�crit les diff�rences fondamentales entre CVS et SVN
305
(@xref{SVN pour les utilisateurs de CVS}.).
309
* Comment d�velopper avec Subversion::
310
* Utilisation de Subversion::
313
@node Comment d�velopper avec Subversion
314
@subsection Comment d�velopper avec Subversion
317
* R�pertoire de travail et d�p�t::
318
* Transactions et num�ro de r�vision::
319
* Etat du r�pertoire de travail par rapport au d�p�t::
320
* Subversion ne verrouille pas les fichiers::
323
@node R�pertoire de travail et d�p�t
324
@subsubsection R�pertoire de travail et d�p�t
326
Imaginons que vous utilisez Subverion pour g�rer un project de logiciel.
327
Il y a deux choses avec lesquelles vous allez �tre en int�raction: votre
328
r�pertoire de travail et le d�p�t.
330
Votre @dfn{r�pertoire de travail} est une arborescence de r�pertoire
331
ordinaire sur votre syst�me et contenant les sources de votre projet.
332
Vous pouvez �diter ces fichiers et compiler votre programme comme
333
d'habitude. Votre r�pertoire de travail est votre propre espace priv�
334
de travail: Subversion ne change jamais les fichiers dans votre
335
r�pertoire de travail, ou ne publie les modifications que vous y avez
336
fait, sans que vous ne lui demandiez explicitement de le faire.
338
Apr�s avoir fait quelques modifications � des fichiers dans votre
339
r�pertoire de travail et v�rifi� que tout fonctionne correctement,
340
Subversion fournie des commandes pour publier vos modifications aupr�s des
341
autres personnes travaillant avec vous sur votre projet. Si les autres
342
publient leurs propres modifications, Subversion fournie des commandes
343
pour incorporer leurs modifications dans votre r�pertoire de travail.
345
Un r�pertoire de travail ``Subversion'' a des fichiers suppl�mentaires
346
cr�� et maintenu par Subversion, pour l'aider � r�aliser ses commandes.
347
En particulier, ces fichiers aident Subversion � reconnaitre quel fichier
348
contient des modifications non publi�es et quels fichiers ne sont plus �
349
jour par rapport au travail des autres.
351
Alors que votre r�pertoire de travail vous est uniquement d�di�, le
352
@dfn{d�p�t} est le lieu publique commun que vous partagez avec ceux
353
travaillant sur le projet. Pour publier vos modifications, vous utilisez
354
Subversion pour les mettre dans le d�p�t. (La signification exacte de
355
cel� sera fournie plus loin.) Une fois que vos modifications sont dans
356
le d�p�t, les autres peuvent demander � Subversion d'incorporer vos
357
modifications dans leurs r�pertoires de travail. Dans un environnement
358
coop�ratif comme celui-ci, chaque utilisateur a son propre r�pertoire
359
de travail (et peut-�tre plus d'un), et toutes les modifications dans
360
les r�pertoires de travail seront report�es � un unique d�p�t, partag�
361
par tous les utilisateurs.
363
Un d�p�t Subversion conserve une unique arborescence de r�pertoire, et
364
enregistre l'historique des modifications de cette arborescence. le
365
d�p�t converse suffisament d'information pour recr�er tout �tat
366
ant�rieurs de l'arborescence, et donner les relations entre fichiers dans
367
l'arborescence --- quel fichier est d�riv� quel autre fichier.
369
Un d�p�t Subversion peut converser le code source de plusieurs projets;
370
habituellement, chaque projet est un sous-r�pertoire dans l'arborescence.
371
Dans cette configuration, un r�pertoire de travail correspond g�n�ralement
372
� un sous-r�pertoire particulier du d�p�t.
374
Par exemple, supposons que vous avez une d�p�t organis� comme �� :
377
/trunk/paint/Makefile
385
En d'autres mots, le r�pertoire racine du d�p�t a un unique
386
sous-r�pertoire appel� @file{trunk}, qui lui-m�me contient deux
387
sous-r�pertoires: @file{paint} et @file{write}.
389
Pour obtenir votre r�pertoire de travail, vous devez @dfn{descendre}
390
quelques sous-arborescences du d�p�t. Si vous descendez
391
@file{/trunk/write} du d�p�t, vous obtenez une r�pertoire de travail comme
401
Ce r�pertoire de travail est une copie du r�pertoire @file{/trunk/write}
402
du d�p�t, avec une entr�e suppl�mentaire --- @file{.svn} --- qui contient
403
les informations n�cessaires � Subversion comme mentionn� plus haut.
405
Supposons que vous modifiez @file{search.c}. Comme le r�pertoire
406
@file{.svn} conserve la date de derni�re modification du fichier et son
407
contenu d'origine, Subversion peut d�terniminer que vous avez modifier le
408
fichier. Cependant, Subversion ne rend pas vos modifications publiques,
409
tant que vous ne lui avez pas demand� explicitement.
411
Pour publier vos modifications, vous pouvez utiliser la commande
412
@samp{commit} de Subversion:
418
.svn/ Makefile document.c search.c
419
$ svn commit search.c
423
Maintenant que vos modifications de @file{search.c} sont remont�es au
424
d�p�t; si un autre utilisateur descend une copie de travail de
425
@file{/trunk/write}, il vera votre texte.
427
Supposont que vous avez un collaborateur, Felix, qui a descendu un
428
r�pertoire de travail de @file{/trunk/write} en m�me temps que vous.
429
Lorsque vos avez remont� vos modification de @file{search.c}, la copie
430
de travail de F�lix est rest�e inchang�e; Subversion ne modifie un
431
r�pertoire de travail qu'� la demande de l'utilisateur.
434
``check out'' a �t� traduit par ``descendre'' ce qui est satisfesant.
435
``commit'' a �t� pris dans le sens ``check in'' et traduit par
436
``remonter''. Ceci est moins satisfesant. ``commit'' est plust�t le sens
437
``soumettre une requ�te de modification''. Cette requ�te peut aboutir ou
438
non. Par exemple, ``your changes have been committed to the repository''
439
peut se traduire par ``vos modifications ont �t� accept�ss et appliqu�es
440
au d�p�t''. Je l'ai r�duit � ``vos modifications ont �t� remont�es au
441
d�p�t''. Heureusement, l'expression ``check in'' est souvent utilis�e �
442
la place de ``commit''. Malheureusement, le terme ``remont�'' s'applique
443
tr�s mal aux parties techniques.
445
Pour mettre � jour son r�pertoire de travail, Felix peut utiliser la
446
commande @samp{update} de Subversion. Cel� incorporera vos modifications
447
dans son r�pertoire de travail, ainsi que tout ce qui a �t� remont�
448
jusqu'� sa demande de mise � jour:
454
.svn/ Makefile document.c search.c
460
Le sortie de la commande de @samp{svn update} indique que Subversion �
461
mise � jour le contenu de @file{search.c}. Notons que Felix n'a pas besoin
462
de sp�cifier quels fichiers doivent �tre mise � jour; Subversion utilise
463
les informations dans le r�pertoire @file{.svn} ainsi que des informations
464
dans le d�p�t pour d�terminer quels fichiers doivent d'�tre mise �
467
Nous expliquerons plus loin ce qui se passe lorsque vous et Felix avez
468
fait des modifications au m�me fichier.
471
@node Transactions et num�ro de r�vision
472
@subsubsection Transactions et num�ro de r�vision
474
Une op�ration @samp{commit} (remont�e) de Subversion peut publier des
475
modifications de plusieurs fichiers et r�pertoires dans une unique et
476
atomique transaction. Dans votre r�pertoire de travail, vous pouvez
477
modifier le contenu des fichiers, cr�er, supprimer, renommer, copier des
478
fichiers et des r�pertoires, puis remonter l'ensemble complet des
479
modifications comme un tout.
481
Dans le d�p�t, chaque remont�e est trait�e comme une transaction atomique:
482
soit tous les modifications remont�es sont prise en compte, soit aucunes
483
d'elles n'est prise en compte. Subversion essaie de maintenir cette
484
atomicit� m�me en cas de plantage de programme, de crash syst�me, de
485
probl�mes de r�seau, et d'autres actions de l'utilisateur. Nous app�lerons
486
une ``remont�e'' une @dfn{transaction} quand nous voudrons appuier cette
487
aspect d'indivisibilit�.
489
Chaque fois que le d�p�t accepte une transaction, ceci cr�e un nouvel �tat
490
de l'arborescence, appel� une @dfn{r�vision}. A chaque r�sivion est
491
assign� un unique nombre entier, plus grand de un que le num�ro de la
492
r�vision pr�cedante. La num�ro de r�vision initiale apr�s la cr�ation d'un
493
d�p�t est z�ro, et le d�p�t est un r�pertoire racine vide.
495
Contrairement � beaucoup d'autres syst�mes, les num�ros de r�vision de
496
Subversion s'applique � une arborescence compl�te et non individuellement
497
� chaque fichier. Chaque num�ro de r�vision correspond � une arborescence
500
Il est important de noter que les r�pertoires de travail ne correspondent
501
pas toujours � un unique num�ro de r�vision du d�p�t; ils peuvent contenir
502
des fichiers de plusieurs diff�rentes r�visions. Par exemple, supposons
503
que vous avez descendu un r�pertoire de travail du d�p�t dont la plus
504
r�cente r�vision est 4:
512
A ce moment, le r�pertoire de travail correspond exactement � la r�vision
513
4 du d�p�t. Cependant, supposons que vous faites une modification �
514
@file{search.c}, et remontez cette modification. En consid�rant qu'il n'y
515
a pas eu d'autre remont�e, votre remont�e a cr�� la r�vision 5 sur le
516
d�p�t, et votre r�pertoire de travail ressemble maintenant � �� :
524
Supposons que maintenant Felix remonte une modification au fichier
525
@file{document.c}, cr�ant ainsi la r�vision 6. Si vous utilisez
526
@samp{svn update} pour mettre � jour votre r�pertoire de travail, alors
527
il doit ressembler � ceci :
535
Les modifications de Felix � @file{document.c} apparaissent dans le
536
fichier de votre copie de travail, le contenu de @file{Makefile} est
537
identique dans les r�visions 4, 5 et 6, mais Subversion marquera votre
538
copie de travail avec la r�vision 6 pour indiquer qu'il correspond aussi �
539
la r�vision 6 de l'arborescence du d�p�t. Donc, apr�s avoir fait une mise
540
� jour de votre r�pertoire de travail depuis sa racine, votre r�pertoire
541
de travail correspondra exactement � une r�vision du d�p�t.
544
@node Etat du r�pertoire de travail par rapport au d�p�t
545
@subsubsection Etat du r�pertoire de travail par rapport au d�p�t
547
Pour chaque fichier du r�pertoire de travail, Subversion enregistre deux
548
informations essentielles.
552
Quelle r�vision de quel fichier du d�p�t votre copie de travail est bas�e
553
dessus (on dit aussi la @dfn{r�vision de travail} du fichier, et
555
un enregistrement de la date de la derni�re mise � jour de la copie
559
En founissant ces informations lors d'�change avec le d�p�t, Subversion
560
peut dire dans lequel des quatres �tats suivants est le fichier :
564
@b{Inchang� et actuel}. Le fichier est inchang� dans le r�pertoire de
565
travail et aucune modification sur ce fichier n'a �t� remont�e au d�p�t
566
depuis �� r�vision de base.
568
@b{Localement modifi� et actuel}. Le fichier a �t� modifi� dans le
569
r�pertoire de travail et aucune modification sur ce fichier n'a �t�
570
remont�e au d�p�t depuis sa r�vision de base. Il y a des modifications
571
locales qui n'ont pas �t� remont�es au d�p�t.
573
@b{Inchang� et d�pass�}. Le fichier n'a pas �t� modifier dans le
574
r�pertoire de travail, mais il a �t� modifi� dans le d�p�t. Le fichier
575
doit �ventuellement �tre mise � jour pour le rendre actuel avec la
578
@b{Localement modifi� et d�pass�}. Le fichier a �t� modifi� dans le
579
r�pertoire de travail et dans le d�p�t. Le fichier doit �tre mise �
580
jour; Subversion tentera de fusionner les modifications publiques avec
581
les modifications locales. S'il ne peut faire la fusion automatiquement
582
de fa�on convaincante, Subversion laisse � l'utilisateur la t�che de
583
r�soudre les conflits.
586
La commande @samp{status} de subversion montre l'�tat de tout les �l�ments
587
dans votre copie de travail. @xref{Cycle de Travail Classique}, en
588
particulier la sous-section ``Examiner vos modifications''.
590
@node Subversion ne verrouille pas les fichiers
591
@subsubsection Subversion ne verrouille pas les fichiers
593
Subversion ne pr�vient pas de la modification en m�me temps du m�me
594
fichier par deux (ou plus) utilisateurs. Par exemple, si vous et Felix
595
avez descendu une copie de travail de @file{/trunk/write}, Subversion vous
596
autorise tous les deux � modifier @file{write/search.c} dans vos
597
r�pertoires de travail. Ensuite, la s�quence suivante d'�v�nements a
601
Supposons que F�lix essaie de remonter ses modifications de
602
@file{search.c} en premier. Sa remont�e r�ussie et son texte apparait dans
603
la derni�re r�vision du d�p�t.
605
Lorsque que vous essayer de remonter vos modifications de @file{search.c},
606
Subversion refuse votre remont�e et vous dit que vous devez mettre �
607
jour @file{search.c} avant de le remonter.
609
Lorsque vous mettez � jour @file{search.c}, Subversion essaie de fusionner
610
les modifications de Felix pr�sentent dans le d�p�t avec vos modifications
611
locales. Par d�faut, Subversion fait la fusion comme s'il appliquait un
612
patch: si vos modifications locales ne recouvrent pas textuellement celles
613
de Felix, alors tout va pour le mieux; sinon, Subversion vous laisse la
614
t�che de r�soudre les recouvrements de modifications. Quoiqu'il en soit,
615
Subversion pr�serve soigneusement une copie de l'original.
617
Une fois que vous avez v�rifi� que les modifications de Felix et vos
618
modifications peuvent-�tre fusionn�es correctement, vous pouvez remonter
619
une nouvelle r�vision de @file{search.c} qui maintenant contient les
620
modifications de tout le monde.
623
Certains syst�mes de contr�le de version fournissent des ``verrouillage'',
624
qui pr�viennent contre la modification d'un fichier si une personne
625
travail d�j� avec. Selon notre exp�rience, fusionner est pr�f�rable au
630
Les modifications ne sont g�n�ralement pas en conflit, donc le
631
comportement de Subversion est le bon par d�faut, alors que le
632
verrouillage peut emp�cher un travail l�gitime.
634
Le verrouillage peut pr�venir des conflits pour un fichier, mais non de
635
conflits entre fichiers (par exemple, entre un fichier d'ent�te C et
636
d'autres fichiers qui l'inclut), donc cel� ne resoud pas r�ellement le
637
probl�me; et finalement,
639
les gens oublient souvent qu'ils ont des verrouillages en cours, ceci
640
pouvant devenir une cause de d�lais inutiles et de frictions.
643
Bien s�r, le processus de fusion doit �tre sous le contr�le de
644
l'utilisateur. Les patchs orient� texte, line par line, ne sont pas
645
appropri�s pour des fichiers au format strict, comme les images ou les
646
ex�cutables. Subversion tente de vous avertir lorsque le fichier est dans
647
un format binaire ou est d'un type mime diff�rent de ``text/*''. Pour ces
648
fichiers au format strict, Subversion vous demandera lequel des deux
649
contenus originaux prendre (le contenu du d�p�t ou celui de votre copie de
650
travail). Voir @xref{Cycle de Travail Classique}, et plus
651
particuliairement la sous-section ``Fusionner les modifications des
656
@c ------------------------------------
658
@node Utilisation de Subversion
659
@subsection Utilisation de Subversion
661
La section pr�c�dente vous a donn� les grandes lignes du d�veloppement
662
avec Subversion. Nous avons maintenant les connaissances n�cessaires pour
663
``jouer'' avec Subversion avec des exemples que vous pouvez directement
669
* Cr�er quelques copies de travail::
673
@subsubsection Cr�er un D�p�t
676
Le client Subversion � l'interface abstraite pour acc�der � un d�p�t.
677
Deux impl�mentations d' ``acc�s de d�p�t'' (``Repository Access'' (RA) )
678
existe actuellement comme librairie. Vous pouvez voir quelle m�thode est
679
disponible sur votre client Subversion :
684
compiled Jan 3 2003, 16:43:58
686
Copyright (C) 2000-2004 CollabNet.
687
Subversion is open source software, see @uref{http://subversion.tigris.org/}
689
The following repository access (RA) modules are available:
691
* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
692
- handles 'http' schema
693
* ra_local : Module for accessing a repository on local disk.
694
- handles 'file' schema
697
Si vous ne voyer pas ra_local, cel� signifie probablement que
698
``Berkeley DB'' (ou qu'un moteur de base donn�e appropri�) n'a pas �t�
699
trouv� lors de la compilation de votre client. Pour utiliser les exemples
700
qui suivent, l'acc�s de d�p�t ra_local doit �tre disponible.
702
Commen�ons par cr�er un nouveau d�p�t vide en utilisant l'outil
706
$ svnadmin create myrepos
709
Consid�rons que vous avez un r�pertoire @file{someproject} qui contient
710
les fichiers que vous voulez placer sous un contr�leur de version.
719
Une fois que le d�p�t, vous pouvez dans un premier temps y importer vos
720
donn�es en utilisant la m�thode d'acc�s ra_local (invoqu� en utilisant une
721
URL ``file:'') et la commande @samp{import} du client Subversion.
724
$ svn import file:///usr/local/svn/repos1 someproject myproj
726
Committed revision 1.
729
L'exemple ci-dessus cr�e un nouveau r�pertoire @file{myproj} � la racine
730
du syst�me de fichier du d�p�t et y copie tous le contenu de
733
@node Cr�er quelques copies de travail
734
@subsubsection Cr�er quelques copies de travail
736
Maintenant sortons une ``copie de travail'' de votre projet. Pour se
737
faire, nous sp�cifions une URL vers le r�pertoire du d�p�t que nous
738
voulons. Le param�tre apr�s l'URL nous permet de sp�cifier le nom du
739
r�pertoire de la copie de travail.
742
$ svn co file:///usr/local/svn/repos1/myproj wc
750
Maintenant nous avons une copie de travail dans un r�pertoire local nomm�
751
@file{wc} et qui repr�sente l'emplacement @file{/myproj} du d�p�t (en
752
supposant que la racine du d�p�t est @url{file:///usr/local/svn/repos}.)
754
Pour le plaisir de l'exemple, dupliquons la copie de travail et faisons
755
comme si cette copie appartenait � quelqu'un d'autre:
761
A present, faisons quelques modifications � notre copie de travail
766
$ echo "new text" >> bar # modification du contenu de bar
767
$ svn propset color green foo # Ajout d'une propri�t� � foo
768
$ svn rm baz # programmons le r�pertoire baz � la suppression
770
$ svn add newfile # programmons l'ajout de newfile
773
Cel� nous fait beucoup de modifications ! Si vous nous quittez et �tes de
774
retour le lendemain, comment pouvons nous connaitre les modifications
775
d�j� faites ? Simple. la commande @samp{status} nous montre tout des
776
``modifications locales'' de notre copie de travail.
779
$ svn status # Montre ce qui est localement modifi�
788
D'apr�s la sortie de @command{svn status}, trois �l�ments sont programm�s
789
(ou marqu�s) pour �tre supprim�s ((D)elete) du d�p�t, un �l�ment est
790
programm� pour �tre (A)jout� au d�p�t et deux �l�ments ont leurs contenus
791
(M)odifi�. Pour plus de d�tail, relisez ce qui conserne @command{svn
792
status} au chapitre 2.
794
Maintenant nous d�cidons de remonter nos changements, cr�ant ainsi la
795
r�vision 2 dans le d�p�t.
798
$ svn commit -m "fixed bug #233"
804
Committed revision 2.
807
L'argument -m est un moyen de sp�cifier une @dfn{description des
808
modifications}: c'est une description sp�cifique de notre ensemble de
809
modifications envoy� au d�p�t. La description des modifications est
810
maintenant li�e � la r�vision 2. Un futur utilisateur pourra lire les
811
descriptions des modifications du d�p�t et comprendre ce que font les
812
modifications de la r�vision 2.
814
Finalement, Supposons que vous �tes maintenant Felix, ou un autre
815
collaborateur. Si vous allez � @file{wc2}, l'autre copie de travail que
816
vous avez cr��, ce rep�toire de travail a besoin d'une commande
817
@samp{svn update} pour recevoir les modifications de la r�vision 2 :
820
$ cd ../wc2 # Changement vers la sauvegarde de la copie de travail
821
$ svn update # r�cup�ration de modification du d�p�t
828
La sortie de la commande @samp{svn update} indique � Felix que baz a �t�
829
supprim� ((D)eleted) de sa copie de travail, que newfile a �t� (A)jout� �
830
sa copie de travail, et que bar et foo ont eu leur contenu mise � jour
833
Si pour diverses raisons @file{bar} a des modifications locales faites par
834
Felix, alors les modifications du server (le d�p�t) doivent �tre
835
fusionn�es dans @file{bar}:
836
C'est-�-dire que @file{bar} doit maintenant avoir toutes les
837
modifications. Quand les modifications du serveur sont fusionn�es dans le
838
fichier local modifi�, deux sc�narios sont possibles :
843
La fusion se passe confortablement. C'est-�-dire que les deux ensembles
844
de modifications ne se recouvrent pas. Dans ce cas, @samp{svn update}
845
affiche un @samp{G} (``mer(G)ed'').
847
les ensembles de modifications se recouvrent et un @samp{C} pour (C)onflit
848
est affich�. Voir la section ??? pour des informations sur comment
849
r�aliser une r�solution de conflit.