source: trunk/darcs/darcs.tex @ 77

Last change on this file since 77 was 77, checked in by nanardon, 18 years ago
  • revenir en arrière
  • Property svn:keywords set to Id
File size: 8.8 KB
Line 
1% $Id$
2\documentclass[blends,slideColor,colorBG,pdf,ps2pdf]{prosper}
3\usepackage[frenchb]{babel}
4\usepackage[T1]{fontenc}
5\usepackage{multicol}
6
7\title{Darcs}
8\subtitle{Des dépots et des patch}
9\author{Olivier Thauvin}
10\email{olivier.thauvin@aerov.jussieu.fr}
11\institution{
12  \includegraphics*[height=0.3\textheight]{darcs}
13}
14
15\NoFrenchBabelItemize
16
17\begin{document}
18    \maketitle
19
20    \part{Introduction}
21
22    \begin{slide}{Plan}
23    \begin{itemize}
24      \item Darcs
25    \end{itemize}
26    \end{slide}
27
28    \part{Présentation}
29
30    \begin{slide}{darcs}
31    \begin{itemize}
32    \item \url{http://darcs.net/}
33    \item code sous GPL
34    \item Ecrit en haskell (http://www.haskell.org)
35        \begin{itemize}
36            \item langage fonctionel pur
37            \item langage compilé
38        \end{itemize}
39    \item code sous darcs
40    \end{itemize}
41    \end{slide}
42
43    \begin{slide}{Concept}
44    \begin{itemize}
45        \item VCS complètement décentralisé
46        \begin{itemize}
47            \item copie de travail = dépôt
48            \item chaque dépôt est une branche
49            \item techniquement, pas de dépôt central
50        \end{itemize}
51        \item le contenu est la résultante d'une série de patchs
52        \begin{itemize}
53            \item pas d'ordre strict dans les patchs
54            \item dépendences entre patch
55            \item échange des patchs entre les dépôts
56        \end{itemize}
57        \item un patch est un groupe de modifications
58    \end{itemize}
59    \end{slide}
60
61    \begin{slide}{structure d'un dépôt}
62    Un seul répertoire \verb+_darcs+ à la racine
63
64    \begin{itemize}
65        \item \verb+current/+: l'arbre de référence (pristine tree)
66        %%\item \verb+inventories/+: FIXME
67        \item \verb+inventory+: la liste des patchs
68        \item \verb+patches/+: les patchs
69        \item \verb+prefs/+: les préférences utilisateur
70    \end{itemize}
71    \end{slide}
72
73    \begin{slide}{Les patchs}
74    un patch:
75    \begin{itemize}
76        \item un id unique généré par darcs
77        \item un nom, identifiant
78        \item une description (optionnelle)
79        \item le nom (mail) de l'auteur
80        \item une signature gpg (optionelle)
81        \item une date
82        \item une série de modifications (le patch lui même)
83    \end{itemize}
84    \end{slide}
85
86    \begin{slide}{cas: travail en solitaire}
87    On veut juste avoir un historique des fichiers:
88    \bigskip
89    \begin{figure}[htb]
90    \includegraphics*[width=0.8\textwidth]{depots_solo}
91    \end{figure}
92    \end{slide}
93
94    \begin{slide}{cas: dépôt de référence}
95    Le dépôt de référence:
96    \begin{itemize}
97        \item décidé comme tel
98        \item peut-être accessible en lecture en anonyme
99        \item personne ne s'en sert comme copie de travail
100    \end{itemize}
101    \bigskip
102    \begin{figure}[htb]
103    \includegraphics*[width=0.8\textwidth]{depots}
104    \end{figure}
105    \end{slide}
106   
107    \begin{slide}{cas: plusieurs copies}
108    \begin{itemize}
109        \item depuis plusieurs machines
110        \item on veut juste une synchronisation
111    \end{itemize}
112    \bigskip
113    \begin{figure}[htb]
114    \includegraphics*[width=0.8\textwidth]{depots_p2p}
115    \end{figure}
116    \end{slide}
117
118    \begin{slide}{cas: la vraie vie}
119    \begin{figure}[htb]
120    \includegraphics*[width=0.8\textwidth]{depots_multi}
121    \end{figure}
122    \end{slide}
123
124    \part{Avant de commencer}
125
126    \begin{slide}{Création d'un dépôt}
127    Nouveau dépôt:
128
129    \verb+darcs initialize+
130
131    \bigskip
132    Depuis un dépôt existant
133
134    \verb+darcs get+\\
135    \verb+darcs put+
136    \end{slide}
137   
138    \part{Utilisation locale}
139
140    \begin{slide}{Ajout/Suppression de fichier}
141    \begin{itemize}
142        \item \verb+darcs add+
143        \item \verb+darcs remove+
144                \item \verb+darcs mv+
145    \end{itemize}
146    \bigskip
147    Ces opérations sont des patchs\\
148    \bigskip
149    Dans la pratique cela donne deux changements:
150    \begin{enumerate}
151        \item ajout/suppression du fichier
152        \item ajout/suppression du contenu
153    \end{enumerate}
154    \end{slide}
155
156    \begin{slide}{enregistrer}
157    \verb+darcs record+
158   
159    \bigskip
160    \begin{itemize}
161        \item chaque modification peut-être accéptée ou laissée
162        \item est purement local
163    \end{itemize}
164   
165    \bigskip
166    Choses à savoir:
167    \begin{itemize}
168        \item Les modifications ont une hiérarchie
169    \end{itemize}
170    \end{slide}
171
172    \begin{slide}{record: exemple}
173    \begin{tiny}
174    \begin{verbatim}
175$ darcs add prog.hs
176$ darcs record
177addfile ./prog.hs
178Shall I record this patch? (1/?) [ynWsfqadjkc], or ? for help: y
179hunk ./prog.hs 1
180+#!/usr/bin/runhaskell
181+
182[...]
183+    putStrLn "Hello World"
184+
185Shall I record this patch? (2/?) [ynWsfqadjkc], or ? for help: y
186What is the patch name? add prog.hs
187Do you want to add a long comment? [yn] n
188Finished recording patch 'add prog.hs'
189    \end{verbatim}
190    \end{tiny}
191    \end{slide}
192
193    \begin{slide}{Lister les changements}
194    \verb+darcs changes+
195    \begin{itemize}
196        \item listes les patchs dans du dépôt
197        \item peut afficher un sommaire, ou le patch complet
198    \end{itemize}
199
200    \bigskip
201    \verb+darcs diff+
202    Produit un diff entre la copie de travail et le dépôt.
203
204    \bigskip
205    \verb+darcs annotate+
206    Produit une sortie avec pour chaque ligne le patch d'origine.
207
208    \bigskip
209    \verb+darcs query+ \textit{commande}
210    \begin{itemize}
211        \item{manifest} liste les fichiers sous darcs
212        \item d'autres commandes dans le futur
213    \end{itemize}
214
215   \end{slide}
216
217    \begin{slide}{darcs changes: exemple}
218darcs changes
219\begin{tiny}
220\begin{verbatim}
221Sat Feb 11 15:43:38 CET 2006  Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>
222  * read config in /etc
223
224Sat Feb 11 14:50:25 CET 2006  Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>
225  * allow to change project passwd
226\end{verbatim}
227\end{tiny}
228darcs changes \verb+--+summary
229\begin{tiny}
230\begin{verbatim}
231Sat Feb 11 15:43:38 CET 2006  Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>
232  * read config in /etc
233
234    M ./www/index.php +1
235
236Sat Feb 11 14:50:25 CET 2006  Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>
237  * allow to change project passwd
238
239    M ./templates/showproject.tpl +18
240    M ./www/index.php +7
241\end{verbatim}
242\end{tiny}
243    \end{slide}
244
245    \begin{slide}{darcs diff: exemple}
246darcs diff
247\begin{tiny}
248\begin{verbatim}
249diff -rN old-tools/forge-addproject new-tools/forge-addproject
25011c11
251<     list($opt, $args) = getopt(array('d:' => 'd', 'u:' => 'u'));
252---
253>     list($opt, $args) = GetOptions(array('d:' => 'd', 'u:' => 'u'));
254\end{verbatim}
255\end{tiny}
256    \end{slide}
257
258    \begin{slide}{darcs annotate: exemple}
259\begin{tiny}
260\begin{verbatim}
261# File forgeq created by [add forgeq (query) script
262# Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>**20060205022127]  as ./forgeq
263# Following line added by [add forgeq (query) script
264# Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>**20060205022127]
265 #!/usr/bin/php
266# Following line added by [add forgeq (query) script
267# Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>**20060205022127]
268 <?php
269# Following line added by [query user-group-projet
270# Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>**20060206025410]
271
272# Following line added by [find path to modules
273# Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>**20060208035122]
274     include realpath(dirname(__FILE__)) . '/modules/commandline.inc';
275[...]
276\end{verbatim}
277\end{tiny}
278    \end{slide}
279
280        \begin{slide}{Revenir en arrière}
281        \begin{itemize}
282                \item \verb+rollback+
283
284                Créer un patch inverse d'un autre patch (annule un patch)
285
286                \item \verb+unrecord+
287
288                Efface un ou plusieurs patch(s), comme si le patch n'était pas enregistré
289
290                \item \verb+unpull+
291
292                Efface un ou plusieurs patch(s) et les modifications, comme si les
293                modifications n'avaient jamais existées
294
295        \end{itemize}
296
297        \bigskip
298        Seul \verb+rollback+ est utilisable lorsque le patch a été diffusé.
299        \end{slide}
300 
301    \part{Propagation des patchs}
302
303    \begin{slide}{Communiquer son travail}
304   
305    \begin{itemize}
306        \item \verb+darcs push+
307        \begin{itemize}
308            \item envois les patchs du dépôt vers un autre dépots
309            \item nécessite un droit d'écriture sur la destination
310            (ssh, dépôt local)
311        \end{itemize}
312        \item \verb+darcs send+
313        \begin{itemize}
314            \item envois un plusieurs patch par mail
315            \item support de gnupg
316            \item le patch peut être extrait dans un fichier "\verb+-o+"
317        \end{itemize}
318    \end{itemize}
319    \end{slide}
320
321    \begin{slide}{Récupérer le travail des autres}
322   
323    \begin{itemize}
324        \item \verb+darcs pull+
325        \begin{itemize}
326            \item récupère les patchs d'un dépôt et les applique localement
327        \end{itemize}
328
329        \item \verb+darcs apply+
330        \begin{itemize}
331            \item applique un patch créer par \verb+darcs send+
332        \end{itemize}
333    \end{itemize}
334    \end{slide}
335
336
337   
338\end{document}
Note: See TracBrowser for help on using the repository browser.