[7] | 1 | % $Id$ |
---|
| 2 | \documentclass[blends,slideColor,colorBG,pdf,ps2pdf]{prosper} |
---|
| 3 | \usepackage[frenchb]{babel} |
---|
| 4 | \usepackage[T1]{fontenc} |
---|
| 5 | \usepackage{multicol} |
---|
| 6 | |
---|
| 7 | \title{Subversion} |
---|
| 8 | \subtitle{parce que cvs sucks} |
---|
| 9 | \author{Olivier Thauvin} |
---|
| 10 | \email{olivier.thauvin@aerov.jussieu.fr} |
---|
| 11 | %%\institution{ |
---|
| 12 | %% \includegraphics*[height=0.3\textheight]{gnutux.eps} |
---|
| 13 | %%} |
---|
| 14 | |
---|
| 15 | \NoFrenchBabelItemize |
---|
| 16 | |
---|
| 17 | \begin{document} |
---|
[9] | 18 | \maketitle |
---|
[7] | 19 | |
---|
[9] | 20 | \part{Introduction} |
---|
[7] | 21 | |
---|
[9] | 22 | \begin{slide}{Plan} |
---|
[7] | 23 | \begin{itemize} |
---|
[56] | 24 | |
---|
| 25 | \item{RCS et CVS}\\ |
---|
| 26 | Rappel |
---|
| 27 | \item{Subversion} |
---|
[9] | 28 | \begin{itemize} |
---|
[56] | 29 | \item Administration |
---|
| 30 | \item Commandes de base |
---|
[9] | 31 | \end{itemize} |
---|
[56] | 32 | \item{Autour de subversion}\\ |
---|
| 33 | Trac, svk, \ldots |
---|
[7] | 34 | \end{itemize} |
---|
[9] | 35 | \end{slide} |
---|
[7] | 36 | |
---|
[9] | 37 | \begin{slide}{Généralités sur les VCS} |
---|
[64] | 38 | Pourquoi utiliser un gestionnaire de versionnement ? |
---|
[9] | 39 | \begin{itemize} |
---|
| 40 | \item Archiver les différentes versions |
---|
| 41 | \item Fournir n'importe quelle ancienne version |
---|
[51] | 42 | \item Gérer le stockage concurrent |
---|
[9] | 43 | \begin{itemize} |
---|
| 44 | \item travail à plusieurs |
---|
[56] | 45 | \item travail depuis plusieurs machines |
---|
[9] | 46 | \end{itemize} |
---|
| 47 | \end{itemize} |
---|
| 48 | \end{slide} |
---|
| 49 | |
---|
| 50 | \part{RCS et CVS} |
---|
| 51 | \begin{slide}{RCS} |
---|
[51] | 52 | Révision Control System (1991) |
---|
[11] | 53 | \begin{itemize} |
---|
| 54 | \item Projet GNU sous GPL |
---|
| 55 | \item Dépôt décentralisé |
---|
| 56 | \item Ne gère que des fichiers |
---|
[66] | 57 | \item Se présente comme une suite de programmes\\ |
---|
[11] | 58 | {\small rcs ci co rcsdiff rlog rcsmerge rcsclean rcsfreeze} |
---|
| 59 | \end{itemize} |
---|
[9] | 60 | \end{slide} |
---|
| 61 | |
---|
| 62 | \begin{slide}{CVS} |
---|
[12] | 63 | Concurrent Versions System |
---|
[10] | 64 | \begin{itemize} |
---|
| 65 | \item Basé sur RCS |
---|
[51] | 66 | \item Vieux\\ |
---|
[10] | 67 | {\small donc connu, courant et bien implanté} |
---|
[33] | 68 | \item Dépôt centralisé |
---|
[10] | 69 | \item Code monobloc |
---|
| 70 | \end{itemize} |
---|
[64] | 71 | \end{slide} |
---|
| 72 | |
---|
[67] | 73 | \begin{slide}{CVS: points faibles:} |
---|
[10] | 74 | \begin{itemize} |
---|
| 75 | \item Utilisation de \verb+$CVSROOT+ peu clair |
---|
[67] | 76 | \item update ne crée pas les nouveaux répertoires\\ |
---|
[10] | 77 | {\small utilisation de -d} |
---|
[51] | 78 | \item Étends toujours les mots clefs |
---|
[10] | 79 | \item Pas de diff sur les nouveaux fichiers |
---|
| 80 | \item Gestion des branches acrobatique |
---|
| 81 | \end{itemize} |
---|
[9] | 82 | \end{slide} |
---|
| 83 | |
---|
| 84 | \part{Subversion} |
---|
[13] | 85 | |
---|
| 86 | \begin{slide}{Présentation} |
---|
| 87 | \begin{itemize} |
---|
| 88 | \item CVS++, se veut un remplaçant de CVS |
---|
| 89 | \item Historique: |
---|
| 90 | \begin{itemize} |
---|
[51] | 91 | \item Février 2000: Début du développement par CollabNet |
---|
[13] | 92 | \item 31 Août 2001: subversion est sous subversion |
---|
| 93 | \item 23 Février 2004: version 1.0.0 |
---|
| 94 | \end{itemize} |
---|
| 95 | \item est libre\\ |
---|
[67] | 96 | "Redistribution and use in source and binary forms, with or without |
---|
| 97 | modification, are permitted (\ldots)" |
---|
[13] | 98 | \end{itemize} |
---|
| 99 | \end{slide} |
---|
| 100 | |
---|
| 101 | \begin{slide}{CVS vs SVN} |
---|
| 102 | \begin{itemize} |
---|
| 103 | \item versionnement des répertoires |
---|
[16] | 104 | \item numéros de révision unique au dépôt |
---|
[13] | 105 | \item vrai historique\\ |
---|
[19] | 106 | {\small svn mv, svn cp} |
---|
[67] | 107 | \item commits atomiques\\ |
---|
[13] | 108 | {\small tout ou rien} |
---|
| 109 | \item metadonnées versionnées |
---|
[67] | 110 | \item différentes méthodes d'accès aux dépôts\\ |
---|
[13] | 111 | {\small local, ssh, http, svnserver} |
---|
| 112 | \item gestion des branches revue\\ |
---|
| 113 | {\small comprendre, plus de branches ! :)} |
---|
| 114 | \item fonctionne avec des librairies |
---|
| 115 | \end{itemize} |
---|
| 116 | \end{slide} |
---|
[14] | 117 | |
---|
[18] | 118 | \begin{slide}{fonctionnement} |
---|
| 119 | \begin{tabular}{lc} |
---|
| 120 | La première fois:& |
---|
[38] | 121 | \includegraphics*[height=0.5\textheight]{workco}\\ |
---|
[23] | 122 | \hline |
---|
[18] | 123 | Après:& |
---|
[38] | 124 | \includegraphics*[height=0.5\textheight]{workupdate} |
---|
[18] | 125 | \end{tabular} |
---|
| 126 | \end{slide} |
---|
| 127 | |
---|
[14] | 128 | \begin{slide}{Administration} |
---|
[15] | 129 | \begin{itemize} |
---|
| 130 | \item elle doit se faire sur la machine elle même |
---|
[69] | 131 | \item système de fichiers local |
---|
[15] | 132 | \end{itemize} |
---|
| 133 | \bigskip |
---|
[69] | 134 | Création du dépôt: |
---|
[14] | 135 | \begin{verbatim} |
---|
[15] | 136 | $ svnadmin create /tmp/repos |
---|
[14] | 137 | \end{verbatim} |
---|
[52] | 138 | Sauvegarde du dépôt: |
---|
[15] | 139 | \begin{verbatim} |
---|
| 140 | $ svnadmin dump /tmp/repos > dump |
---|
| 141 | \end{verbatim} |
---|
[14] | 142 | \end{slide} |
---|
[18] | 143 | |
---|
[52] | 144 | \begin{slide}{Accès au dépôt} |
---|
[18] | 145 | Tout est url: |
---|
[19] | 146 | \begin{tabular}{ll} |
---|
| 147 | local&\verb+file:///chemin/+\\ |
---|
| 148 | http(s)&\verb+http://host/chemin+\\ |
---|
| 149 | ssh&\verb$svn+ssh://user@host/chemin$\\ |
---|
| 150 | svnserv&\verb+svn://user@host/chemin+ |
---|
| 151 | \end{tabular} |
---|
[18] | 152 | \bigskip |
---|
[52] | 153 | Pas de différence entre base du dépôt et chemin dans le dépôt: |
---|
[19] | 154 | |
---|
[35] | 155 | \small\verb+file:///chemin/depot/sousrep/fichier+ |
---|
[18] | 156 | \end{slide} |
---|
| 157 | |
---|
[19] | 158 | \begin{slide}{svn, commandes de base} |
---|
| 159 | \textbf{svn} \textit{options} commande |
---|
| 160 | \bigskip |
---|
| 161 | \begin{small} |
---|
| 162 | \begin{tabular}{lll} |
---|
| 163 | checkout&co&créer une copie de travail\\ |
---|
[67] | 164 | update&up&mettre à jour une copie de travail\\ |
---|
| 165 | commit&&envoyer les modifications dans le dépôt\\ |
---|
[19] | 166 | add&&prendre en charge un nouveau fichier\\ |
---|
| 167 | \end{tabular} |
---|
| 168 | \end{small} |
---|
| 169 | \end{slide} |
---|
| 170 | |
---|
| 171 | \begin{slide}{svn, autres commandes} |
---|
| 172 | \textbf{svn} \textit{options} commande |
---|
| 173 | \bigskip |
---|
| 174 | \begin{small} |
---|
| 175 | \begin{tabular}{lll} |
---|
| 176 | diff&&obtenir un \textit{diff}\\ |
---|
| 177 | rm&&effacer un fichier\\ |
---|
| 178 | revert&&annuler les changements non commités\\ |
---|
[67] | 179 | merge&&intégrer des changements à partir d'un diff\\ |
---|
| 180 | blame&&indiquer la révision des modifications (annotate)\\ |
---|
[19] | 181 | \end{tabular} |
---|
| 182 | \end{small} |
---|
| 183 | \end{slide} |
---|
| 184 | |
---|
[26] | 185 | \begin{slide}{Créer une copie de travail} |
---|
| 186 | Utilisation de \textit{checkout} |
---|
[19] | 187 | \begin{scriptsize} |
---|
| 188 | \begin{verbatim} |
---|
| 189 | $ svn co http://virgo/svn/[...]/subversion/ subversion/ |
---|
| 190 | A subversion/workco.fig |
---|
| 191 | A subversion/workupdate.fig |
---|
| 192 | A subversion/Makefile |
---|
| 193 | A subversion/subversion.tex |
---|
| 194 | Révision 18 extraite. |
---|
| 195 | $ cd subversion/ |
---|
| 196 | \end{verbatim} |
---|
| 197 | \end{scriptsize} |
---|
[26] | 198 | \bigskip |
---|
[67] | 199 | Subversion mémorise l'url du dépôt. |
---|
[18] | 200 | \end{slide} |
---|
[19] | 201 | |
---|
[67] | 202 | \begin{slide}{mettre à jour} |
---|
[26] | 203 | \textit{svn update} |
---|
[19] | 204 | \begin{itemize} |
---|
| 205 | \item est récursif (voir -N) |
---|
[67] | 206 | \item crée les nouveaux fichiers |
---|
[52] | 207 | \item efface les anciens fichiers |
---|
| 208 | \item donne un statut aux fichiers |
---|
[19] | 209 | \end{itemize} |
---|
| 210 | |
---|
| 211 | \begin{footnotesize} |
---|
| 212 | \begin{verbatim} |
---|
| 213 | $ svn update |
---|
| 214 | U subversion.tex |
---|
| 215 | Actualisé à la révision 18. |
---|
| 216 | $ svn update -r 17 subversion.tex |
---|
| 217 | U subversion.tex |
---|
| 218 | Actualisé à la révision 17. |
---|
| 219 | \end{verbatim} |
---|
| 220 | \end{footnotesize} |
---|
| 221 | \end{slide} |
---|
| 222 | |
---|
[27] | 223 | \begin{slide}{soumettre les modifications} |
---|
| 224 | \textit{svn commit} |
---|
[20] | 225 | \begin{itemize} |
---|
| 226 | \item est récursif (voir -N) |
---|
[67] | 227 | \item seuls les fichiers précédemment ajoutés sont commités |
---|
[20] | 228 | \item seuls les fichiers modifiés sont commités |
---|
| 229 | \item log: utiliser -m ou placer \verb+$EDITOR+ |
---|
| 230 | \end{itemize} |
---|
| 231 | |
---|
[21] | 232 | \begin{footnotesize} |
---|
| 233 | \begin{verbatim} |
---|
| 234 | $ svn commit -m "- add commit slide" |
---|
| 235 | Envoi subversion/subversion.tex |
---|
| 236 | Transmission des données . |
---|
| 237 | Révision 20 propagée. |
---|
| 238 | \end{verbatim} |
---|
| 239 | \end{footnotesize} |
---|
[20] | 240 | |
---|
| 241 | \end{slide} |
---|
| 242 | |
---|
[29] | 243 | \begin{slide}{ajouter / enlever des fichiers} |
---|
| 244 | \textit{svn add} |
---|
[21] | 245 | \begin{itemize} |
---|
| 246 | \item est récursif (voir -N) |
---|
[67] | 247 | \item est local (nécessite un commit) |
---|
[21] | 248 | \end{itemize} |
---|
[29] | 249 | \bigskip |
---|
| 250 | \textit{svn remove} |
---|
| 251 | \begin{itemize} |
---|
| 252 | \item efface aussi le fichier local |
---|
| 253 | \item est récursif (voir -N) |
---|
| 254 | \end{itemize} |
---|
[21] | 255 | |
---|
| 256 | % TODO ajouter exemple |
---|
| 257 | \end{slide} |
---|
| 258 | |
---|
[34] | 259 | \begin{slide}{Comparer} |
---|
| 260 | \textit{svn diff} |
---|
| 261 | produit un \textit{diff} entre |
---|
| 262 | \begin{itemize} |
---|
| 263 | \item le fichier local et la révision courante |
---|
| 264 | \item le fichier local et une révision arbitraire |
---|
[67] | 265 | \item deux révisions arbitraires |
---|
| 266 | \item le chemin courant et un autre chemin |
---|
[34] | 267 | \end{itemize} |
---|
[35] | 268 | \bigskip |
---|
| 269 | \textit{svn status} |
---|
[69] | 270 | donne l'état de tous les fichiers |
---|
[35] | 271 | \begin{footnotesize} |
---|
| 272 | \begin{verbatim} |
---|
| 273 | $ svn status |
---|
| 274 | ? not_in_repos |
---|
| 275 | M SPECS/postgresql.spec |
---|
| 276 | \end{verbatim} |
---|
| 277 | \end{footnotesize} |
---|
[34] | 278 | \end{slide} |
---|
[35] | 279 | |
---|
| 280 | \begin{slide}{svn diff: exemple} |
---|
[36] | 281 | \begin{tiny} |
---|
[35] | 282 | \begin{verbatim} |
---|
| 283 | Index: SPECS/postgresql.spec |
---|
| 284 | =================================================================== |
---|
| 285 | --- SPECS/postgresql.spec (révision 28) |
---|
| 286 | +++ SPECS/postgresql.spec (copie de travail) |
---|
| 287 | @@ -17,7 +17,7 @@ |
---|
| 288 | %define current_major_version 8.1 |
---|
| 289 | %define current_minor_version 1 |
---|
[34] | 290 | |
---|
[35] | 291 | -%define release %mkrel 3 |
---|
| 292 | +%define release %mkrel 4 |
---|
| 293 | |
---|
| 294 | %define libname %mklibname pq %{major} |
---|
| 295 | %define libecpg %mklibname ecpg %{major_ecpg} |
---|
| 296 | \end{verbatim} |
---|
[36] | 297 | \end{tiny} |
---|
[35] | 298 | |
---|
| 299 | \end{slide} |
---|
[46] | 300 | |
---|
[37] | 301 | \begin{slide}{voir l'historique} |
---|
| 302 | \textit{svn log} |
---|
| 303 | affiche les... logs |
---|
| 304 | \begin{tiny} |
---|
| 305 | \begin{verbatim} |
---|
| 306 | $ svn log SPECS/postgresql.spec |
---|
| 307 | ------------------------------------------------------------------------ |
---|
| 308 | r28 | nanardon | 2006-01-02 11:07:34 +0100 (lun, 02 jan 2006) | 1 line |
---|
| 309 | |
---|
| 310 | - remove jdbc |
---|
| 311 | ------------------------------------------------------------------------ |
---|
| 312 | r27 | nanardon | 2006-01-02 10:29:35 +0100 (lun, 02 jan 2006) | 1 line |
---|
| 313 | |
---|
| 314 | - postgresql-8.1.1-3mdk |
---|
| 315 | ------------------------------------------------------------------------ |
---|
| 316 | r2 | nanardon | 2005-12-26 03:28:50 +0100 (lun, 26 déc 2005) | 1 line |
---|
| 317 | |
---|
| 318 | Add postgresql |
---|
| 319 | ------------------------------------------------------------------------ |
---|
| 320 | \end{verbatim} |
---|
| 321 | \end{tiny} |
---|
| 322 | \end{slide} |
---|
| 323 | |
---|
[46] | 324 | \begin{slide}{rechercher d'où vient le code} |
---|
| 325 | \textit{svn blame} |
---|
| 326 | affiche l'origine des lignes d'un fichier (révision, auteur et la ligne): |
---|
| 327 | \begin{tiny} |
---|
| 328 | \begin{verbatim} |
---|
| 329 | 7 nanardon \begin{document} |
---|
| 330 | 9 nanardon \maketitle |
---|
| 331 | 7 nanardon |
---|
| 332 | 9 nanardon \part{Introduction} |
---|
| 333 | 7 nanardon |
---|
| 334 | 9 nanardon \begin{slide}{Plan} |
---|
| 335 | 7 nanardon \begin{itemize} |
---|
| 336 | 9 nanardon \item Généralités sur les VCS |
---|
| 337 | 9 nanardon \item RCS et CVS |
---|
| 338 | 9 nanardon \item Subversion |
---|
| 339 | 9 nanardon \begin{itemize} |
---|
| 340 | 13 nanardon \item Présentation |
---|
| 341 | \end{verbatim} |
---|
| 342 | \end{tiny} |
---|
| 343 | \end{slide} |
---|
| 344 | |
---|
[47] | 345 | \begin{slide}{les "keywords"} |
---|
| 346 | Ils ajoutent des informations de subversion dans le code source |
---|
| 347 | \begin{itemize} |
---|
[67] | 348 | \item ne sont pas activés par défaut |
---|
| 349 | \item sont remplacés par \textit{export, checkout, update, commit} |
---|
[47] | 350 | \end{itemize} |
---|
| 351 | \bigskip |
---|
[49] | 352 | Pour activer leur expansion:\\ |
---|
| 353 | \textit{svn propset svn:keywords Id fichier...} |
---|
| 354 | |
---|
| 355 | \bigskip |
---|
[47] | 356 | Exemple: |
---|
[49] | 357 | \bigskip |
---|
| 358 | \begin{tiny} |
---|
[47] | 359 | \begin{itemize} |
---|
[49] | 360 | \item Id: \verb+$Id$+ |
---|
| 361 | \item Author: \verb+$Author$+ |
---|
| 362 | \item Revision: \verb+$Revision$+ |
---|
[47] | 363 | \end{itemize} |
---|
[49] | 364 | \end{tiny} |
---|
[47] | 365 | \end{slide} |
---|
| 366 | |
---|
[39] | 367 | \begin{slide}{Gérer les conflits} |
---|
| 368 | \begin{figure}[htb] |
---|
| 369 | \includegraphics*[height=0.3\textheight]{conflict} |
---|
| 370 | \end{figure} |
---|
| 371 | Si 2 commits sur le même fichier |
---|
| 372 | |
---|
| 373 | \begin{itemize} |
---|
| 374 | \item fusion automatique |
---|
| 375 | \item conflit: |
---|
| 376 | \begin{itemize} |
---|
| 377 | \item \textit{svn resolved} |
---|
| 378 | \item corriger le code |
---|
| 379 | \item commiter |
---|
| 380 | \end{itemize} |
---|
| 381 | \end{itemize} |
---|
| 382 | \end{slide} |
---|
| 383 | |
---|
[40] | 384 | \begin{slide}{Annuler un changement} |
---|
| 385 | \textit{svn merge} intègre les changements \verb+de:à+ dans |
---|
| 386 | la copie de travail. |
---|
| 387 | \bigskip |
---|
| 388 | \begin{itemize} |
---|
| 389 | \item les changements peuvent venir d'un autre chemin (branches) |
---|
| 390 | \item n'agit que sur la copie locale (il faut commiter) |
---|
| 391 | \end{itemize} |
---|
| 392 | |
---|
| 393 | \bigskip |
---|
| 394 | \begin{figure}[htb] |
---|
| 395 | \includegraphics*[width=0.9\textwidth]{merge} |
---|
| 396 | \end{figure} |
---|
| 397 | \end{slide} |
---|
| 398 | |
---|
[42] | 399 | \begin{slide}{Les tags, les branches} |
---|
[70] | 400 | Les branches et les tags sont des copies de fichiers: |
---|
[42] | 401 | \begin{itemize} |
---|
| 402 | \item avec \textit{svn copy} |
---|
[52] | 403 | \item les données ne sont pas dupliquées dans le dépôt |
---|
[42] | 404 | \item l'historique est conservé |
---|
| 405 | \end{itemize} |
---|
| 406 | \bigskip |
---|
| 407 | \begin{figure}[htb] |
---|
| 408 | \includegraphics*[width=0.9\textwidth]{branches} |
---|
| 409 | \end{figure} |
---|
| 410 | \end{slide} |
---|
| 411 | |
---|
[34] | 412 | \part{Autour de subversion} |
---|
| 413 | |
---|
[37] | 414 | \begin{slide}{viewcvs} |
---|
| 415 | \begin{figure}[htb] |
---|
[38] | 416 | \includegraphics[width=90mm]{viewcvs} |
---|
[37] | 417 | \end{figure} |
---|
| 418 | \end{slide} |
---|
[41] | 419 | |
---|
| 420 | \begin{slide}{trac} |
---|
| 421 | \begin{figure}[htb] |
---|
| 422 | \includegraphics[width=90mm]{trac} |
---|
| 423 | \end{figure} |
---|
| 424 | \end{slide} |
---|
[37] | 425 | |
---|
[45] | 426 | \begin{slide}{trac, quelques mots} |
---|
[67] | 427 | Outil global de suivit de projet: |
---|
[45] | 428 | \begin{itemize} |
---|
[52] | 429 | \item écrit en python |
---|
[67] | 430 | \item base de données SQL (sqlite, postgres depuis la 0.9.2) |
---|
[45] | 431 | \item cgi, mod\_python ou démon |
---|
| 432 | \end{itemize} |
---|
| 433 | \bigskip |
---|
| 434 | Trac apporte |
---|
| 435 | \begin{itemize} |
---|
| 436 | \item un wiki |
---|
| 437 | \item un suivi des bugs et des fonctionnalités demandées |
---|
[64] | 438 | \item un navigateur de dépôt subversion |
---|
[45] | 439 | \item suivi des révisions vis à vis des bugs |
---|
| 440 | \end{itemize} |
---|
| 441 | \end{slide} |
---|
| 442 | |
---|
[50] | 443 | \begin{slide}{svk} |
---|
[54] | 444 | Apporte: |
---|
| 445 | \begin{itemize} |
---|
[67] | 446 | \item une gestion décentralisée |
---|
[54] | 447 | \item travail hors connexion |
---|
| 448 | \end{itemize} |
---|
| 449 | \bigskip |
---|
| 450 | \begin{itemize} |
---|
| 451 | \item écrit en perl |
---|
[67] | 452 | \item écrit pour subversion |
---|
[65] | 453 | \item basé sur/utilise subversion |
---|
[54] | 454 | \item gère également CVS |
---|
| 455 | \end{itemize} |
---|
[55] | 456 | \bigskip |
---|
| 457 | SVK a malheureusement des limitations (nfs, double dépôt). |
---|
[50] | 458 | \end{slide} |
---|
| 459 | |
---|
| 460 | \begin{slide}{cvs2svn} |
---|
[52] | 461 | Converti un dépôt cvs en dépôt subversion |
---|
[50] | 462 | \begin{scriptsize}(comme son nom ne l'indique pas)\end{scriptsize} |
---|
| 463 | |
---|
| 464 | \bigskip |
---|
| 465 | Il fonctionne globalement bien mais\ldots |
---|
| 466 | \begin{itemize} |
---|
| 467 | \item faire attention aux "keywords" |
---|
| 468 | \item faire attention aux EOL pour les binaires |
---|
| 469 | \item ne fonctionne pas toujours |
---|
| 470 | \end{itemize} |
---|
| 471 | \end{slide} |
---|
[53] | 472 | |
---|
| 473 | \part{Conclusion} |
---|
[50] | 474 | |
---|
[53] | 475 | \begin{slide}{Résumé} |
---|
| 476 | Points forts: |
---|
| 477 | \begin{itemize} |
---|
[70] | 478 | \item simple à comprendre et à mettre en \oe uvre |
---|
[53] | 479 | \item pas de gros changement par rapport à CVS |
---|
| 480 | \item efficace |
---|
| 481 | \end{itemize} |
---|
| 482 | |
---|
| 483 | Mais: |
---|
| 484 | \begin{itemize} |
---|
[65] | 485 | \item reste un VCS centralisé |
---|
[53] | 486 | \item reste sur une base purement incrémentale |
---|
| 487 | \end{itemize} |
---|
| 488 | \end{slide} |
---|
| 489 | |
---|
| 490 | \begin{slide}{Fin} |
---|
| 491 | \begin{huge} |
---|
| 492 | Questions ? |
---|
| 493 | \end{huge} |
---|
| 494 | \bigskip |
---|
| 495 | |
---|
[70] | 496 | De toutes façons y'a plein de documentations |
---|
[53] | 497 | sur le net: \verb+http://subversion.tigris.org/+. |
---|
[65] | 498 | |
---|
| 499 | \bigskip |
---|
| 500 | \bigskip |
---|
| 501 | \footnotesize{Merci à misc :)} |
---|
[53] | 502 | \end{slide} |
---|
[7] | 503 | \end{document} |
---|