source: presentations/trunk/Subversion/subversion.html

Last change on this file was 265, checked in by garnier, 17 years ago

preparation avant remodelage repository

File size: 23.7 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />
2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="fr">
3
4<head profile="http://purl.org/net/uriprofile/">
5 <title>JI'06:Subversion</title>
6
7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
8 <meta http-equiv="Content-Language" content="fr" />
9 <meta http-equiv="Content-Style-Type" content="text/css" />
10 <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
12 <meta name="author" content="Antoine P&eacute;rus &lt;perus@lal.in2p3.fr&gt;" />
13 <meta name="description" content="Pr&eacute;sentation de Subversion aux JI06 de Lyon" />
14 <meta name="keywords" content="XHTML, CSS, HTML, (X)HTML" />
15
16 <link rel="stylesheet" href="../../tags/Tools/v2/Slidy/slidy-toc.css" type="text/css" media="screen, projection, print" />
17 <link rel="stylesheet" href="../../tags/Tools/v2/css/screen.css" type="text/css" media="screen, projection, tv, print" />
18
19 <script src="../../tags/Tools/v2/Slidy/slidy.js" type="text/javascript"></script>
20 <script src="../../tags/Tools/v2/Slidy/slidy-toc.js" type="text/javascript"></script>
21</head>
22
23<body style="font-size: 18pt;">
24
25<!-- Introduction [Start] -->
26
27<div style="border-style: none; display: block; visibility: visible; position: absolute;" class="slide" id="cover">
28
29 <div class="callout">
30 <p id="title">
31 <a href="http://subversion.tigris.org">
32 <img src="Images/subversion_logo.gif" width="70%" height="8%" />
33 </a>
34 </p>
35 </div>
36 <p id="subtitle">Un outil pour le d&#233;veloppement collaboratif</p>
37 <p id="author"><a href="mailto:perus@lal.in2p3.fr">Antoine P&eacute;rus</a>
38 <br /><a href="mailto:garnier@lal.in2p3.fr">Laurent Garnier</a>
39 </p>
40 <p id="date">20 Septembre 2006<br /></p>
41 <p id="event"><a href="http://ji.in2p3.fr/">Journ&eacute;es Informatique IN2P3-DAPNIA</a>, Lyon</p>
42
43</div>
44
45<!-- Introduction [Start] -->
46
47<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide" id="logo">
48
49 <div class="callout">
50 <h1>Sommaire</h1>
51
52 <ul class="outline">
53 <li>La gestion de version
54 <ul>
55 <li>comme outil de d&eacute;veloppement collaboratif</li>
56 <li>les diff&egrave;rents mod&egrave;les</li>
57 <li>CVS versus Subversion</li>
58 </ul>
59 </li>
60 <li>Passer de CVS &agrave; Subversion
61 <ul>
62 <li>quelques points qui diff&egrave;rent ou peuvent perturber
63 l'utilisateur habitu&eacute; &agrave; CVS
64 </li>
65 </ul>
66 </li>
67 <li>Quelques "bonnes pratiques"
68 <ul>
69 <li>&agrave; propos des <em>commits</em></li>
70 <li>&agrave; propos des branches</li>
71 <li>&agrave; propos des <em>locks</em></li>
72 <li>basculer d'une branche &agrave; l'autre</li>
73 </ul>
74 </li>
75 <li>Conclusion</li>
76 <li>R&eacute;f&eacute;rences</li>
77 </ul>
78 </div>
79
80 <div class="footnote">
81 <p class="incremental">
82 Je ne parlerai que de l'utilisation du c&ocirc;t&eacute; client.
83 </p>
84 <p class="incremental">Plut&ocirc;t qu'une pr&eacute;sentation de Subversion, il s'agit de quelques
85 remarques d'utilisation essentiellement bas&eacute;e sur notre
86 exp&eacute;rience.</p>
87 <p class="incremental">Et pas davantage ...</p>
88 </div>
89
90
91</div>
92
93<!-- Diapo -->
94<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide themes" >
95
96 <h1 class="hidden">Transition: VCS</h1>
97 <h2>
98 <span>Transition:<br /></span>
99 <abbr title="La gestion de version">La gestion de version ...</abbr>
100 </h2>
101
102</div>
103
104
105<!-- Diapo -->
106<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
107
108 <h1>La gestion de version</h1>
109
110 <ul class="incremental">
111 <li class="non-incremental">VCS : <em>Version Control System</em>
112 <p align="center"><br />un des principaux outils de travail collaboratif<br /></p>
113 </li>
114 <li>Pour qui ?
115 <ul>
116 <li>les d&eacute;veloppeurs</li>
117 <li>webmestres : gestion d'un site Web</li>
118 <li>administrateurs : gestion des fichiers de configuration</li>
119 <li>gestion d'une documentation, d'un support de cours</li>
120 </ul>
121 </li>
122 <li>Pour quoi ?
123 <ul>
124 <li>historique de toutes les op&eacute;rations</li>
125 <li>d&eacute;veloppement concurrent avec gestion des conflits</li>
126 <li>travail en parall&egrave;le sur plusieurs branches<br
127 /><br /></li>
128 </ul>
129 </li>
130 <li>
131 En fait, indispensable m&ecirc;me pour un utilisateur isol&eacute; !
132 </li>
133 </ul>
134
135</div>
136
137
138<!-- Diapo -->
139<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
140
141 <h1>Les syst&egrave;mes de gestion de version</h1>
142
143 <ul class="incremental">
144 <li>Le mod&egrave;le centralis&eacute;
145 <ul>
146 <li>
147 caract&eacute;ris&eacute; par un d&eacute;p&ocirc;t
148 (<em>repository</em>) privil&eacute;gi&eacute;
149 </li>
150 <li>CVS, Subversion (Svn)</li>
151 <li>politique stricte d'acc&egrave;s au d&eacute;p&ocirc;t<br
152 /><br /></li>
153 </ul>
154 </li>
155 <li>Le mod&egrave;le d&eacute;centralis&eacute; ou
156 r&eacute;parti
157 <ul>
158 <li>sans d&eacute;p&ocirc;t de r&eacute;f&eacute;rence ou privil&eacute;gi&eacute;</li>
159 <li>Arch, Darcs</li>
160 <li>chaque d&eacute;veloppeur peut avoir son
161 d&eacute;p&ocirc;t. <br />Outre un
162 <em>commit</em> dans son d&eacute;p&ocirc;t
163 personnel, il lui faudra &eacute;ventuellement synchroniser 2
164 d&eacute;p&ocirc;ts ou <em>commiter</em> &eacute;galement dans
165 un autre d&eacute;p&ocirc;t de centralisation, de publication par exemple.</li>
166 <li>VCS de l'&egrave;re <em>laptop</em> dans le train ...</li>
167 </ul>
168 </li>
169 </ul>
170
171</div>
172
173
174<!-- Diapo -->
175<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
176
177 <h1>Quelques limitations de CVS ...</h1>
178
179 <ul class="outline">
180 <li>pas de commit atomique
181 <ul>
182 <li>l'unit&eacute; de travail de CVS est le fichier.<br />
183 Si on <em>commite</em> 2 fichiers, on n'a pas la garantie d'un
184 enregistrement complet.<br />
185 CVS g&egrave;re en effet l'historique
186 par fichier et non par diff&eacute;rence entre
187 r&eacute;visions (<em>patch</em>)
188 </li>
189 </ul>
190 </li>
191 <li>pas de renommage des fichiers
192 <ul>
193 <li>Un changement de nom fait perdre l'historique</li>
194 </ul>
195 </li>
196 <li>pas de gestion des m&eacute;ta-donn&eacute;es
197 <ul>
198 <li>les propri&eacute;t&eacute;s attach&eacute;es aux
199 documents, comme les permissions, le type du document,
200 etc. ne sont pas versionn&eacute;es</li>
201 </ul>
202 </li>
203 <li>l'utilisation des branches, ou travaux en parall&egrave;le,
204 est difficile
205 <ul>
206 <li>au point qu'on les &eacute;vite ...</li>
207 </ul>
208 </li>
209 <li>les r&eacute;pertoires ne sont pas versionn&eacute;s</li>
210 <li>tr&egrave;s contraint par le r&eacute;seau
211 <ul>
212 <li>La plupart des op&eacute;rations n&eacute;cessite d'&ecirc;tre connect&eacute; au d&eacute;p&ocirc;t</li>
213 </ul>
214 </li>
215 </ul>
216 </li>
217
218</div>
219
220
221<!-- Diapo -->
222<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
223
224 <h1>Qu'apporte Subversion ?</h1>
225
226 <p>C'est la r&eacute;impl&eacute;mentation compl&egrave;te de CVS,
227 suivant le m&ecirc;me mod&egrave;le &eacute;prouv&eacute;, mais
228 corrigeant l'essentiel de ces d&eacute;fauts</p>
229
230 <ul class="incremental">
231 <li>les <em>commits</em> sont atomiques</li>
232 <li>r&eacute;pertoires et m&eacute;ta-donn&eacute;es sont versionn&eacute;s</li>
233 <li><em>svn status</em>, <em>svn diff</em> et <em>svn revert</em> sont des op&eacute;rations d&eacute;connect&eacute;es</li>
234 <li>une gestion extr&egrave;mement simple et efficace des &eacute;tiquettes et des branches</li>
235 <li><em>commit</em> par <em>changeSet</em>, ou <em>revision</em>, et non par fichier s&eacute;par&eacute;ment</li>
236 </ul>
237
238</div>
239
240
241<!-- Diapo -->
242<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
243
244 <h1>Subversion</h1>
245
246 <ul class="incremental">
247 <li class="non-incremental">
248 <p>Explicitement d&eacute;velopp&eacute; comme le successeur de
249 CVS<br /></p>
250 <p>Si on remplace dans la commande <em>cvs</em> par <em>svn</em>, un
251 utilisateur de CVS sera op&eacute;rationnel tr&egrave;s
252 rapidement. </p>
253 </li>
254 <li>Cependant, si le mod&egrave;le est similaire et les interfaces
255 tr&egrave;s proches, il y a quelques diff&eacute;rences importantes :
256 <ul class="incremental">
257 <li>Svn corrige un certain nombre d'insuffisances de CVS</li>
258 <li>Svn impl&eacute;mente diff&eacute;remment quelques notions
259 importantes :
260 <ul>
261 <li>&eacute;tiquette (tag),</li>
262 <li>branche,</li>
263 <li> ...</li>
264 </ul>
265 </li>
266 <li>Enfin, il y a quelques mauvaises habitudes induites par les
267 limitations de CVS et dont il vaut mieux se d&eacute;barrasser</li>
268 </ul>
269 </li>
270 </ul>
271
272</div>
273
274
275<!-- Diapo -->
276<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
277
278 <h1>Subversion : le mod&egrave;le</h1>
279
280 <div class="incremental" style="margin-left: 4em; position: relative;">
281 <img src="Images/modele1.png" alt="depot" style="position: static; vertical-align: bottom;" />
282 <img src="Images/modele2.png" alt="copies" style="position: absolute; left: 0pt; top: 0pt;" />
283 <img src="Images/modele3.png" alt="commit" style="position: absolute; left: 0pt; top: 0pt;" />
284 </div>
285
286</div>
287
288
289<!-- Diapo -->
290<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide themes" >
291
292 <h1 class="hidden">Transition: de CVS &agrave; Svn</h1>
293 <h2>
294 <span>Transition:<br /></span>
295 <abbr title="Passer de CVS &agrave; Svn">De CVS &agrave; Svn ...</abbr>
296 </h2>
297
298</div>
299
300
301<!-- Diapo -->
302<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
303
304 <h1>L'aide en ligne</h1>
305
306 <pre>$> svn help</pre>
307 <pre class="output">
308usage: svn &lt;subcommand&gt; [options] [args]
309Subversion command-line client, version 1.4.0.
310Type 'svn help &lt;subcommand&gt;' for help on a specific subcommand.
311Type 'svn --version' to see the program version and RA modules
312 or 'svn --version --quiet' to see just the version number.
313
314Most subcommands take file and/or directory arguments, recursing
315on the directories. If no arguments are supplied to such a
316command, it recurses on the current directory (inclusive) by default.
317...</pre>
318 <pre>$> svn help merge</pre>
319 <pre class="output">
320merge: Applique les diff&eacute;rences entre deux sources &agrave; une copie de travail.
321usage : 1. merge URL1[@N] URL2[@M] [CHEMIN]
322 2. merge CHEMIN1@N CHEMIN2@M [CHEMIN]
323 3. merge [-c M|-r N:M] SOURCE[@REV] [CHEMIN]
324
325 1. Les URLs des deux r&eacute;f&eacute;rences sont pr&eacute;cis&eacute;es.
326 Les r&eacute;visions peuvent aussi &ecirc;tre pr&eacute;cis&eacute;es, si elles ne le
327 sont pas, la r&eacute;vision utilis&eacute;e est HEAD.
328
329 2. Les URLs sont d&eacute;duites des chemins dans la copie de travail.
330 Les r&eacute;visions doivent &ecirc;tre pr&eacute;cis&eacute;es.
331...</pre>
332</div>
333
334
335<!-- Diapo -->
336<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
337
338 <h1>Utiliser <em>svn status</em> pour faire le point</h1>
339
340 <p>Sous Svn, contrairement &agrave; CVS, la commande <em>status</em>
341 indique clairement ce qui a &eacute;t&eacute; modifi&eacute;
342 localement, et sans avoir besoin d'&ecirc;tre connect&eacute;.</p>
343
344 <div class="incremental">
345 <pre>
346 $> svn status
347 D BoardDao.php
348 A FebDao.php
349 M FebView.php
350 </pre>
351 <div>
352 <p>Et pour savoir si la copie locale est &agrave; jour :
353 <pre>
354 $> svn status --show-updates
355 D 182 BoardDao.php
356 * 182 FebController.php
357 A + 182 FebDao.php
358 M 182 FebView.php
359 Status against revision: 185
360 </pre>
361 </div>
362 </div>
363
364</div>
365
366
367<!-- Diapo -->
368<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
369
370 <h1>On peut <em>(r&eacute;)organiser</em> son espace comme on le veut</h1>
371
372 <p>La structuration du d&eacute;p&ocirc;t, son organisation est
373 libre et peut s'adapter compl&egrave;tement &agrave; son
374 mod&egrave;le de d&eacute;veloppement, qui peut &eacute;voluer.</p>
375
376 <p>&Agrave; tout moment, il est possible de changer l'organisation,
377 de d&eacute;placer, renommer, supprimer r&eacute;pertoires ou fichiers
378 simplement et sans perdre l'historique.</p>
379
380 <div class="incremental">
381 <pre>
382 $> svn mv oldName.cxx newName.cxx
383 A newName.cxx
384 D oldName.cxx
385 </pre>
386 <pre>
387 $> svn mv http://svn.lal.in2p3.fr/FEB/trunc/lib/oldName.cxx \
388 http://svn.lal.in2p3.fr/FEB/trunc/lib/newName.cxx \
389 -m "Renommage selon la nouvelle convention"
390 </pre>
391 </div>
392
393</div>
394
395
396<!-- Diapo -->
397<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
398
399 <h1>On est libre d'organiser selon son mod&egrave;le de d&eacute;veloppement</h1>
400
401 <p>Les noms d&eacute;finissant les r&eacute;pertoires de
402 <em>Tags</em> et de <em>Branches</em> sont purement
403 conventionnels.</p>
404
405 <p>Un r&eacute;pertoire de <em>Tags</em> ne l'est que parce qu'on d&eacute;cide
406 de plus modifier ce qu'on y met ...</p>
407
408 <div class="incremental">
409 <pre>
410 svn mkdir URL/projA/trunk
411 /tags
412 /branches
413 </pre>
414 <pre>
415 svn mkdir URL/trunk/projB
416 /projC
417 /tags/projB
418 /tags/projC
419 /branches/projB
420 /branches/projC
421 </pre>
422 </div>
423
424</div>
425
426
427<!-- Diapo -->
428<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
429
430 <h1>Les &eacute;tiquettes et les branches</h1>
431
432 <p>Probablement une des plus grandes diff&eacute;rences avec CVS</p>
433
434 <ul class="incremental">
435 <li>Svn g&egrave;re les donn&eacute;es sous forme de
436 hi&eacute;rarchies de fichiers (<em>comme un filesystem</em>) :
437 </li>
438 <li>
439 <ul class="non-incremental">
440 <li>r&eacute;f&eacute;rentiel, versions tagg&eacute;es ou branches</li>
441 <li>pas de diff&eacute;rence entre les hi&eacute;rarchies</li>
442 </ul>
443 </li>
444 <li>Dans Svn tout se fait comme une <em>copie</em> :
445 <ul>
446 <li>R&eacute;f&eacute;rencement de la <strong>version V0.8</strong>
447 <pre>
448$> svn copy -m "Version V0.8" \
449 http://svn.lal.in2p3.fr/FEB/trunk \
450 http://svn.lal.in2p3.fr/FEB/tags/V0.8 </pre>
451 </li>
452 <li>R&eacute;f&eacute;rencement de la <strong>release V0.8.1</strong>
453 <pre>
454$> svn copy -m "Release V0.8.1" \
455 http://svn.lal.in2p3.fr/FEB/trunk \
456 http://svn.lal.in2p3.fr/FEB/branches/V0.8.1
457 </pre>
458 </li>
459 </ul>
460 </li>
461 </ul>
462
463</div>
464
465
466<!-- Diapo -->
467<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
468
469 <h1>Log (1)</h1>
470
471 <p>La commande <em>log</em> de Svn est beaucoup plus utile que sa
472 version CVS</p>
473
474 <div class="incremental">
475 <pre>
476$> svn log -r475 -v
477------------------------------------------------------------------------
478r475 | aperus | 2006-06-21 23:25:29 +0200 (Wed, 21 Jun 2006) | 1 line
479Chemins modifi&eacute;s :
480 M /FEB/trunc/lib/DataTestStatGraph.php
481 M /FEB/trunc/lib/DataTestView.php
482 M /FEB/trunc/lib/FebView.php
483 M /FEB/trunc/lib/FebWidgets.php
484 M /FEB/trunc/lib/StatView.php
485 M /FEB/trunc/lib/StatWidgets.php
486
487Ticket #124 - Diverses corrections et am&eacute;liorations
488 </pre>
489 <pre>
490$> svn log -rHEAD:1 --limit 5 FebView.php
491 </pre>
492 </div>
493
494</div>
495
496<!-- Diapo -->
497<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
498
499 <h1>Log (2)</h1>
500
501 <ul class="incremental">
502 <li class="non-incremental">
503 <p>Si l'on demande un <em>svn log</em> tout de suite apr&egrave;s
504 avoir commit&eacute; des modifications, le dernier message de
505 <em>log</em> ne sera pas visible.</p>
506
507 <p>En effet, <em>commiter</em> ne met pas &agrave; jour
508 automatiquement ni son espace de travail, ni aucun autres
509 fichiers. Il faut d'abord mettre &agrave; jour avec <em>svn
510 update</em>.</p>
511 </li>
512 <li>Utile :
513 <pre>
514$> svn log --xml
515 </pre>
516 <p>produit une sortie en <strong>xml</strong>
517 qui peut ensuite &ecirc;tre utilis&eacute;e avec la feuille de style
518 <em>XSLT</em> qui va bien ...</p>
519 <pre class="output">
520&lt;?xml version="1.0"?&gt;
521&lt;log&gt;
522&lt;logentry
523 revision="475"&gt;
524&lt;date&gt;2006-06-21T21:25:29.198907Z&lt;/date&gt;
525&lt;paths&gt;
526&lt;path
527 action="M"&gt;/FEB/trunc/lib/StatWidgets.php&lt;/path&gt;
528 ...
529 </pre>
530 </li>
531 </ul>
532
533</div>
534
535
536<!-- Diapo -->
537<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
538
539 <h1>Donner la liste des fichiers &agrave; ne pas versionner</h1>
540
541 <p>On donne &agrave; Svn la liste des fichiers &agrave; ignorer en
542 d&eacute;finissant la <em>property</em> <strong>svn::ignore</strong>
543 sur les r&eacute;pertoires souhait&eacute;s</p>
544
545 <ul class="incremental">
546 <li>&agrave; partir d'une liste de fichiers (par exemple
547 .cvsignore) :
548 <pre>$&gt; svn propset -R svn:ignore . -F .cvsignore</pre>
549 </li>
550 <li>en &eacute;ditant en ligne la <em>property</em> :
551 <pre>$&gt; svn propset -R svn:ignore "*.png" .</pre>
552 </li>
553 <li>ou bien en &eacute;ditant directement la <em>property</em> :
554 <pre>$&gt; setenv SVN_EDITOR vi
555 $> svn propedit svn:ignore .
556 </pre>
557 </li>
558 <li>Attention ! Les <em>properties</em> sont versionn&eacute;es :
559 <pre>$&gt; svn commit -m "Ignoring ignorable files"</pre>
560 </li>
561 </ul>
562
563</div>
564
565
566<!-- Diapo -->
567<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide themes" >
568
569 <h1 class="hidden">Transition: bonnes pratiques</h1>
570 <h2>
571 <span>Transition:<br /></span>
572 <abbr title="Bonnes pratiques">Quelques bonnes pratiques ...</abbr>
573 </h2>
574
575</div>
576
577
578<!-- Diapo -->
579<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
580
581 <h1>&Agrave; propos des <em>commits</em></h1>
582
583 <p>Commiter de mani&egrave;re &agrave; faciliter le <em>code
584 review</em> :</p>
585
586 <ul class="incremental">
587 <li><em>commiter</em> souvent</li>
588 <li><em>commiter</em> chaque fonctionnalit&eacute;, chaque
589 correction individuelle
590 <ul>
591 <li>
592 <em>bug fix</em> - <em>commit</em> - <em>bug fix</em> -
593 <em>commit</em> - <em>bug fix</em> - <em>commit</em> - <em>bug
594 fix</em> - <em>commit</em> ...
595 </li>
596 </ul>
597 <li>d&eacute;finir des conventions pour les messages de
598 <em>Log</em>
599 <ul>
600 <li>par ex., les <em>commit</em> dans une branche sont pr&eacute;fix&eacute;s par le nom de la branche
601 </li>
602 </ul>
603 </li>
604 <li>les messages de <em>Log</em> doivent donner la raison de la modification
605 et non la d&eacute;crire
606 </li>
607 </ul>
608
609</div>
610
611
612<!-- Diapo -->
613<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
614
615 <h1>&Agrave; propos des branches</h1>
616
617 <p>C'est simple : ne pas h&eacute;siter &agrave; les utiliser !</p>
618
619 <ul class="incremental">
620 <li>Oublier ses inhibitions du temps de CVS !</li>
621 <li>D&eacute;finir des branches sp&eacute;cialis&eacute;es :
622 <ul>
623 <li>branches de dur&eacute;e br&egrave;ve (pour corriger un bug)</li>
624 <li>branches pour tester de nouvelles fonctionnalit&eacute;s</li>
625 <li>branches de dur&eacute;e longue pour les <em>releases</em></li>
626 </ul>
627 </li>
628 <li>Fusionner r&eacute;guli&egrave;rement avec le tronc</li>
629 <li>Supprimer les branches mortes</li>
630 <li>Pour autant, &eacute;viter les branches dans des branches ...</li>
631 </ul>
632
633</div>
634
635
636<!-- Diapo -->
637<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
638
639 <h1>&Agrave; propos des <em>locks</em></h1>
640
641 <p>Les conflits sont normalement rares dans une &eacute;quipe dont
642 le partage des t&acirc;ches est correctement g&eacute;r&eacute;.</p>
643
644 <p>Il peut cependant &ecirc;tre int&eacute;ressant de bloquer
645 temporairement l'acc&egrave;s &agrave; des fichiers binaires, dont
646 le fusionnement est impossible.</p>
647
648 <ul class="incremental">
649 <li>Le bloquage :<pre>svn lock</pre></li>
650 <li>le <em>commit</em> retire tous les verrous</li>
651 <li>le d&eacute;bloquage est utilisable par tous : <pre>svn unlock</pre></li>
652 <li>la m&eacute;ta-data <em>svn:needs-lock</em> permet d'imposer le <em>lock/unlock</em> pour modifier le fichier</li>
653 </ul>
654
655</div>
656
657
658<!-- Diapo -->
659<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
660
661 <h1>Basculer d'une branche &agrave; l'autre</h1>
662
663 <p>Simple et efficace :</p>
664
665 <div class="incremental">
666 <pre>% svn info</pre>
667 <pre class="output">Chemin : .
668URL : http://127.0.0.1:8800/Svn/FEB/trunk/lib
669Racine du d&eacute;p&ocirc;t : http://127.0.0.1:8800/Svn/FEB
670UUID du d&eacute;p&ocirc;t : 9eb0db8a-82ed-0310-b8d5-a3f12c954f74
671R&eacute;vision : 487
672Type de noeud : r&eacute;pertoire
673T&acirc;che programm&eacute;e : normale
674R&eacute;vision de la derni&egrave;re modification : 487
675Date de la derni&egrave;re modification: 2006-07-14 09:28:24 +0200 (Fri, 14 Jul 2006)</pre>
676 <pre>$> svn switch http://127.0.0.1:8800/Svn/FEB/branches/lib-extend-QuickForm </pre>
677 <pre class="output">Chemin : .
678URL : http://127.0.0.1:8800/Svn/FEB/branches/lib-extend-QuickForm
679Racine du d&eacute;p&ocirc;t : http://127.0.0.1:8800/Svn/FEB
680UUID du d&eacute;p&ocirc;t : 9eb0db8a-82ed-0310-b8d5-a3f12c954f74
681R&eacute;vision : 422
682Type de noeud : r&eacute;pertoire
683T&acirc;che programm&eacute;e : normale
684R&eacute;vision de la derni&egrave;re modification : 487
685Date de la derni&egrave;re modification: 2006-06-04 19:15:54 +0200 (Sun, 4 Jun 2006)</pre>
686 </div>
687
688</div>
689
690
691<!-- Diapo -->
692<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
693
694 <h1>Conclusions</h1>
695
696 <ul>
697 <li>L'utilisation d'un VCS est indispensable ...</li>
698 <li>Subversion est le successeur naturel de CVS</li>
699 <li>La migration de CVS &agrave; Svn est <em>simple</em> et tr&egrave;s largement pratiqu&eacute;e</li>
700 <li>Prochaine &eacute;tape : un VCS d&eacute;centralis&eacute; ?</li>
701 </ul>
702
703</div>
704
705
706<!-- Diapo -->
707<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
708
709 <h1>R&eacute;f&eacute;rences</h1>
710
711 <ul>
712 <li>Le site Subversion : &lt;http://subversion.tigris.org&gt;</li>
713 <li>Le livre officiel : <em>Version Control with Subversion</em>
714 &lt;http://svnbook.red-bean.com/&gt;</li>
715 <li>La pr&eacute;sentation de Florient Guilleux, au TutoJRes de
716 juin 2006 &lt;http://www.jres.org/wiki/tuto/tuto1&gt;</li>
717 <li>La pr&eacute;sentation de St&eacute;phane Bortzmeyer, sur les VCS, au JRES 2005 &lt;http://2005.jres.org/programme.html&gt;</li>
718 </ul>
719
720</div>
721
722
723 <!-- Thank You [Start] -->
724<!-- Diapo -->
725<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide" id="thanks">
726
727 <p>Questions ?</p>
728
729</div>
730
731<!-- [End] -->
732
733
734
735<!-- Diapo -->
736<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
737
738 <h1>R&eacute;surrection d'un fichier</h1>
739
740 <p>Retrouver dans la derni&egrave;re version de son espace de travail un
741 fichier supprim&eacute; du d&eacute;p&ocirc;t; le plus simple est de
742 faire une copie &agrave; partir d'une r&eacute;vision
743 ant&eacute;rieure &agrave; la suppression.</p>
744
745 <p>Utiliser <em>svn log -v</em> pour trouver la r&eacute;vision qui a supprim&eacute; le fichier.</p>
746
747 <div class="incremental">
748 <pre>
749$ svn copy --revision 381
750 http://svn.lal.in2p3.fr/FEB/trunk/lib/FEBWidgets.php ./FEBWidgets.php
751 </pre>
752 </div>
753
754</div>
755
756
757
758
759</body>
760</html>
Note: See TracBrowser for help on using the repository browser.