source: trunk/darcs/darcs.tex @ 76

Last change on this file since 76 was 76, checked in by nanardon, 18 years ago
  • add slides about query
  • Property svn:keywords set to Id
File size: 8.3 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    \end{itemize}
145    \bigskip
146    Ces opérations sont des patchs\\
147    \bigskip
148    Dans la pratique cela donne deux changements:
149    \begin{enumerate}
150        \item ajout/suppression du fichier
151        \item ajout/suppression du contenu
152    \end{enumerate}
153    \end{slide}
154
155    \begin{slide}{enregistrer}
156    \verb+darcs record+
157   
158    \bigskip
159    \begin{itemize}
160        \item chaque modification peut-être accéptée ou laissée
161        \item est purement local
162    \end{itemize}
163   
164    \bigskip
165    Choses à savoir:
166    \begin{itemize}
167        \item Les modifications ont une hiérarchie
168    \end{itemize}
169    \end{slide}
170
171    \begin{slide}{record: exemple}
172    \begin{tiny}
173    \begin{verbatim}
174$ darcs add prog.hs
175$ darcs record
176addfile ./prog.hs
177Shall I record this patch? (1/?) [ynWsfqadjkc], or ? for help: y
178hunk ./prog.hs 1
179+#!/usr/bin/runhaskell
180+
181[...]
182+    putStrLn "Hello World"
183+
184Shall I record this patch? (2/?) [ynWsfqadjkc], or ? for help: y
185What is the patch name? add prog.hs
186Do you want to add a long comment? [yn] n
187Finished recording patch 'add prog.hs'
188    \end{verbatim}
189    \end{tiny}
190    \end{slide}
191
192    \begin{slide}{Lister les changements}
193    \verb+darcs changes+
194    \begin{itemize}
195        \item listes les patchs dans du dépôt
196        \item peut afficher un sommaire, ou le patch complet
197    \end{itemize}
198
199    \bigskip
200    \verb+darcs diff+
201    Produit un diff entre la copie de travail et le dépôt.
202
203    \bigskip
204    \verb+darcs annotate+
205    Produit une sortie avec pour chaque ligne le patch d'origine.
206
207    \bigskip
208    \verb+darcs query+ \textit{commande}
209    \begin{itemize}
210        \item{manifest} liste les fichiers sous darcs
211        \item d'autres commandes dans le futur
212    \end{itemize}
213
214   \end{slide}
215
216    \begin{slide}{darcs changes: exemple}
217darcs changes
218\begin{tiny}
219\begin{verbatim}
220Sat Feb 11 15:43:38 CET 2006  Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>
221  * read config in /etc
222
223Sat Feb 11 14:50:25 CET 2006  Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>
224  * allow to change project passwd
225\end{verbatim}
226\end{tiny}
227darcs changes \verb+--+summary
228\begin{tiny}
229\begin{verbatim}
230Sat Feb 11 15:43:38 CET 2006  Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>
231  * read config in /etc
232
233    M ./www/index.php +1
234
235Sat Feb 11 14:50:25 CET 2006  Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>
236  * allow to change project passwd
237
238    M ./templates/showproject.tpl +18
239    M ./www/index.php +7
240\end{verbatim}
241\end{tiny}
242    \end{slide}
243
244    \begin{slide}{darcs diff: exemple}
245darcs diff
246\begin{tiny}
247\begin{verbatim}
248diff -rN old-tools/forge-addproject new-tools/forge-addproject
24911c11
250<     list($opt, $args) = getopt(array('d:' => 'd', 'u:' => 'u'));
251---
252>     list($opt, $args) = GetOptions(array('d:' => 'd', 'u:' => 'u'));
253\end{verbatim}
254\end{tiny}
255    \end{slide}
256
257    \begin{slide}{darcs annotate: exemple}
258\begin{tiny}
259\begin{verbatim}
260# File forgeq created by [add forgeq (query) script
261# Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>**20060205022127]  as ./forgeq
262# Following line added by [add forgeq (query) script
263# Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>**20060205022127]
264 #!/usr/bin/php
265# Following line added by [add forgeq (query) script
266# Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>**20060205022127]
267 <?php
268# Following line added by [query user-group-projet
269# Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>**20060206025410]
270
271# Following line added by [find path to modules
272# Olivier Thauvin <olivier.thauvin@aerov.jussieu.fr>**20060208035122]
273     include realpath(dirname(__FILE__)) . '/modules/commandline.inc';
274[...]
275\end{verbatim}
276\end{tiny}
277    \end{slide} 
278    \part{Propagation des patchs}
279
280    \begin{slide}{Communiquer son travail}
281   
282    \begin{itemize}
283        \item \verb+darcs push+
284        \begin{itemize}
285            \item envois les patchs du dépôt vers un autre dépots
286            \item nécessite un droit d'écriture sur la destination
287            (ssh, dépôt local)
288        \end{itemize}
289        \item \verb+darcs send+
290        \begin{itemize}
291            \item envois un plusieurs patch par mail
292            \item support de gnupg
293            \item le patch peut être extrait dans un fichier "\verb+-o+"
294        \end{itemize}
295    \end{itemize}
296    \end{slide}
297
298    \begin{slide}{Récupérer le travail des autres}
299   
300    \begin{itemize}
301        \item \verb+darcs pull+
302        \begin{itemize}
303            \item récupère les patchs d'un dépôt et les applique localement
304        \end{itemize}
305
306        \item \verb+darcs apply+
307        \begin{itemize}
308            \item applique un patch créer par \verb+darcs send+
309        \end{itemize}
310    \end{itemize}
311    \end{slide}
312
313
314   
315\end{document}
Note: See TracBrowser for help on using the repository browser.