~svn/ubuntu/raring/subversion/ppa

« back to all changes in this revision

Viewing changes to doc/translations/french/getting_started.texi

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-12-05 01:26:14 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20051205012614-qom4xfypgtsqc2xq
Tags: 1.2.3dfsg1-3ubuntu1
Merge with the final Debian release of 1.2.3dfsg1-3, bringing in
fixes to the clean target, better documentation of the libdb4.3
upgrade and build fixes to work with swig1.3_1.3.27.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
@node D�buter avec Subversion
 
2
@chapter D�buter avec Subversion
 
3
 
 
4
Bien d�buter avec Subversion.
 
5
 
 
6
@menu
 
7
* Introduction::                Historique et fonctionnalit�s.
 
8
* Architecture::                Organisation de Subversion.
 
9
* Installation::                Obtenir Subversion.
 
10
* Concepts::                    Concepts et premi�re utilisation.
 
11
@end menu
 
12
 
 
13
 
 
14
@c ------------------------------------------------------------------
 
15
@node Introduction
 
16
@section Introduction
 
17
 
 
18
@subsection Contr�le de version
 
19
 
 
20
Subversion est logiciel libre (open-source) de @dfn{contr�le de version}.
 
21
 
 
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. 
 
28
 
 
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.)
 
37
 
 
38
 
 
39
@subsection Historique
 
40
 
 
41
Subversion se veut �tre le successeur de CVS (@uref{http://www.cvshome.org}).
 
42
 
 
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.
 
49
 
 
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.
 
57
 
 
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.
 
62
 
 
63
@subsection Audience
 
64
 
 
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.
 
69
 
 
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}.).
 
74
 
 
75
@subsection Fonctionnalit�s
 
76
 
 
77
Quelles fonctionnalit�s de Subverion le rend meilleur que CVS? Voici une
 
78
petit liste qui vous mettra en app�tit:
 
79
 
 
80
@itemize @bullet
 
81
 
 
82
@item 
 
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�
 
88
client.
 
89
 
 
90
@item 
 
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.
 
94
 
 
95
@item 
 
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})
 
99
 
 
100
@item
 
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.
 
104
 
 
105
@item
 
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.
 
112
 
 
113
@item
 
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.
 
118
@end itemize
 
119
 
 
120
 
 
121
@c ------------------------------------------------------------------
 
122
@node Architecture
 
123
@section Architecture
 
124
 
 
125
 
 
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
 
128
con�ue.
 
129
 
 
130
Si vous n'est pas interess� par les rouages internes de Subversion, saut�
 
131
cette partie et all� � @ref{Installation} et @ref{Concepts}.
 
132
 
 
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.
 
136
 
 
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.
 
140
 
 
141
@example
 
142
@group
 
143
                    +---------------------+
 
144
                    | ligne de commande   |
 
145
                    | interface graphique |
 
146
                    | programme client    |
 
147
         +----------+---------------------+---------+ <=== Interface client
 
148
         |              Librairie client            |
 
149
         |                                          |
 
150
         |         +---+                            |
 
151
         |         |   |                            |
 
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 |
 
156
                       |     neon     |  |          |
 
157
                       +--------------+  |          |
 
158
                          ^              |          |
 
159
                         /               |          |
 
160
                   DAV  /                |          |
 
161
                       /                 |          |
 
162
                      v                  |          |
 
163
              +---------+                |          |
 
164
              |         |                |          |
 
165
              | Apache  |                |          |
 
166
              |         |                |          |
 
167
              +---------+                |          |
 
168
              | mod_DAV |                |          |
 
169
            +-------------+              |          |
 
170
            | mod_DAV_SVN |              |          |
 
171
 +----------+-------------+--------------+----------+ <=== Interface du syst�me de fichier
 
172
 |                                                  |
 
173
 |           Syst�me de fichier de Subversion       |
 
174
 |                                                  |
 
175
 +--------------------------------------------------+
 
176
 
 
177
@end group
 
178
@end example
 
179
 
 
180
 
 
181
@subsection Syst�me de fichier
 
182
 
 
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
 
190
fichier versionn�. 
 
191
 
 
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
 
195
fa�on.
 
196
 
 
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
 
200
sauvegarde � chaud.
 
201
 
 
202
 
 
203
@subsection Interface r�seau
 
204
 
 
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.
 
211
 
 
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.
 
221
 
 
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 !).
 
232
 
 
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.
 
241
 
 
242
@subsection Librairies clientes
 
243
 
 
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.
 
248
 
 
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.
 
262
 
 
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).}
 
274
 
 
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.
 
279
 
 
280
 
 
281
@c ------------------------------------------------------------------
 
282
@node Installation
 
283
@section Installation
 
284
 
 
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?
 
289
 
 
290
Pour construire Subversion depuis le code source,
 
291
@xref{Compilation et installation}.
 
292
 
 
293
 
 
294
@c ------------------------------------------------------------------
 
295
@node Concepts
 
296
@section Concepts
 
297
 
 
298
 
 
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}.).
 
306
 
 
307
 
 
308
@menu
 
309
* Comment d�velopper avec Subversion::
 
310
* Utilisation de Subversion::
 
311
@end menu
 
312
 
 
313
@node Comment d�velopper avec Subversion
 
314
@subsection Comment d�velopper avec Subversion
 
315
 
 
316
@menu
 
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::
 
321
@end menu
 
322
 
 
323
@node R�pertoire de travail et d�p�t
 
324
@subsubsection R�pertoire de travail et d�p�t
 
325
 
 
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.
 
329
 
 
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.
 
337
 
 
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.
 
344
 
 
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.
 
350
 
 
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.
 
362
 
 
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.
 
368
 
 
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.
 
373
 
 
374
Par exemple, supposons que vous avez une d�p�t organis� comme �� :
 
375
 
 
376
@example
 
377
/trunk/paint/Makefile
 
378
             canvas.c
 
379
             brush.c
 
380
       write/Makefile
 
381
             document.c
 
382
             search.c
 
383
@end example
 
384
 
 
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}.
 
388
 
 
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
 
392
celui l� :
 
393
 
 
394
@example
 
395
write/Makefile
 
396
      document.c
 
397
      search.c
 
398
      .svn/
 
399
@end example
 
400
 
 
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.
 
404
 
 
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.
 
410
 
 
411
Pour publier vos modifications, vous pouvez utiliser la commande
 
412
@samp{commit} de Subversion:
 
413
 
 
414
@example
 
415
$ pwd
 
416
/home/jimb/write
 
417
$ ls -a
 
418
.svn/    Makefile   document.c    search.c
 
419
$ svn commit search.c
 
420
$
 
421
@end example
 
422
 
 
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.
 
426
 
 
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.
 
432
 
 
433
[Note du traducteur]
 
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.
 
444
 
 
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:
 
449
 
 
450
@example
 
451
$ pwd
 
452
/home/felix/write
 
453
$ ls -a
 
454
.svn/    Makefile    document.c    search.c
 
455
$ svn update
 
456
U search.c
 
457
$
 
458
@end example
 
459
 
 
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 �
 
465
jour.
 
466
 
 
467
Nous expliquerons plus loin ce qui se passe lorsque vous et Felix avez
 
468
fait des modifications au m�me fichier.
 
469
 
 
470
 
 
471
@node Transactions et num�ro de r�vision
 
472
@subsubsection Transactions et num�ro de r�vision
 
473
 
 
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.
 
480
 
 
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�.
 
488
 
 
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.
 
494
 
 
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
 
498
enti�re.
 
499
 
 
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:
 
505
 
 
506
@example
 
507
write/Makefile:4
 
508
      document.c:4
 
509
      search.c:4
 
510
@end example
 
511
 
 
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 � �� :
 
517
 
 
518
@example
 
519
write/Makefile:4
 
520
      document.c:4
 
521
      search.c:5
 
522
@end example
 
523
 
 
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 :
 
528
 
 
529
@example
 
530
write/Makefile:6
 
531
      document.c:6
 
532
      search.c:6
 
533
@end example
 
534
 
 
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.
 
542
 
 
543
 
 
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
 
546
 
 
547
Pour chaque fichier du r�pertoire de travail, Subversion enregistre deux
 
548
informations essentielles.
 
549
 
 
550
@itemize @bullet
 
551
@item
 
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
 
554
@item
 
555
un enregistrement de la date de la derni�re mise � jour de la copie
 
556
locale par le d�p�t.
 
557
@end itemize
 
558
 
 
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 :
 
561
 
 
562
@itemize @bullet
 
563
@item
 
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.
 
567
@item
 
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.
 
572
@item
 
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
 
576
r�vision publique.
 
577
@item
 
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.
 
584
@end itemize
 
585
 
 
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''.
 
589
 
 
590
@node Subversion ne verrouille pas les fichiers
 
591
@subsubsection Subversion ne verrouille pas les fichiers
 
592
 
 
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
 
598
lieu:
 
599
@itemize @bullet
 
600
@item
 
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.
 
604
@item
 
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.
 
608
@item
 
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.
 
616
@item
 
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.
 
621
@end itemize
 
622
 
 
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
 
626
verrouillage :
 
627
 
 
628
@itemize @bullet
 
629
@item
 
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.
 
633
@item
 
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,
 
638
@item
 
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.
 
641
@end itemize
 
642
 
 
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
 
652
autres''.  
 
653
 
 
654
 
 
655
 
 
656
@c ------------------------------------
 
657
 
 
658
@node Utilisation de Subversion
 
659
@subsection Utilisation de Subversion
 
660
 
 
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
 
664
appliquer.
 
665
 
 
666
 
 
667
@menu
 
668
* Cr�er un D�p�t::
 
669
* Cr�er quelques copies de travail::
 
670
@end menu
 
671
 
 
672
@node Cr�er un D�p�t
 
673
@subsubsection Cr�er un D�p�t
 
674
 
 
675
 
 
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 :
 
680
 
 
681
@example
 
682
$ svn --version
 
683
svn, version 0.16.0
 
684
   compiled Jan  3 2003, 16:43:58
 
685
 
 
686
Copyright (C) 2000-2004 CollabNet.
 
687
Subversion is open source software, see @uref{http://subversion.tigris.org/}
 
688
 
 
689
The following repository access (RA) modules are available:
 
690
 
 
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
 
695
@end example
 
696
 
 
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.
 
701
 
 
702
Commen�ons par cr�er un nouveau d�p�t vide en utilisant l'outil
 
703
@command{svnadmin}:
 
704
 
 
705
@example
 
706
$ svnadmin create myrepos
 
707
@end example
 
708
 
 
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.
 
711
@example
 
712
someproject/foo
 
713
            bar
 
714
            baz/
 
715
            baz/gloo
 
716
            baz/bloo
 
717
@end example
 
718
 
 
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.
 
722
 
 
723
@example
 
724
$ svn import file:///usr/local/svn/repos1 someproject myproj    
 
725
@dots{}
 
726
Committed revision 1.
 
727
@end example
 
728
 
 
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
 
731
@file{someproject} .
 
732
 
 
733
@node Cr�er quelques copies de travail
 
734
@subsubsection Cr�er quelques copies de travail
 
735
 
 
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.
 
740
 
 
741
@example
 
742
$ svn co file:///usr/local/svn/repos1/myproj wc
 
743
A  wc/foo
 
744
A  wc/bar
 
745
A  wc/baz
 
746
A  wc/baz/gloo
 
747
A  wc/baz/bloo
 
748
@end example
 
749
 
 
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}.)
 
753
 
 
754
Pour le plaisir de l'exemple, dupliquons la copie de travail et faisons
 
755
comme si cette copie appartenait � quelqu'un d'autre:
 
756
 
 
757
@example
 
758
$ cp -R wc wc2
 
759
@end example
 
760
 
 
761
A present, faisons quelques modifications � notre copie de travail
 
762
originale:
 
763
 
 
764
@example
 
765
$ cd wc
 
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
 
769
$ touch newfile
 
770
$ svn add newfile              # programmons l'ajout de newfile
 
771
@end example
 
772
 
 
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.
 
777
 
 
778
@example
 
779
$ svn status                   # Montre ce qui est localement modifi�
 
780
M   ./bar
 
781
_M  ./foo
 
782
A   ./newfile
 
783
D   ./baz
 
784
D   ./baz/gloo
 
785
D   ./baz/bloo
 
786
@end example
 
787
 
 
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.
 
793
 
 
794
Maintenant nous d�cidons de remonter nos changements, cr�ant ainsi la
 
795
r�vision 2 dans le d�p�t.
 
796
 
 
797
@example
 
798
$ svn commit -m "fixed bug #233"
 
799
Sending    bar
 
800
Sending    foo
 
801
Adding     newfile
 
802
Deleting   baz
 
803
Transmitting data...
 
804
Committed revision 2.
 
805
@end example
 
806
 
 
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.
 
813
 
 
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 :
 
818
 
 
819
@example
 
820
   $ cd ../wc2    # Changement vers la sauvegarde de la copie de travail
 
821
   $ svn update   # r�cup�ration de modification du d�p�t
 
822
   U   ./bar
 
823
   _U  ./foo
 
824
   A   ./newfile
 
825
   D   ./baz
 
826
@end example
 
827
 
 
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
 
831
((U)pdated).
 
832
 
 
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 :
 
839
 
 
840
 
 
841
@itemize @bullet
 
842
@item
 
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'').
 
846
@item
 
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.
 
850
@end itemize