% $Id$
\documentclass[blends,slideColor,colorBG,pdf,ps2pdf]{prosper}
\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
\usepackage{multicol}

\title{Darcs}
\subtitle{Des dépots et des patch}
\author{Olivier Thauvin}
\email{olivier.thauvin@aerov.jussieu.fr}
\institution{
  \includegraphics*[height=0.3\textheight]{darcs}
}

\NoFrenchBabelItemize

\begin{document}
    \maketitle

    \part{Introduction}

    \begin{slide}{Plan}
    \begin{itemize}
      \item Darcs
    \end{itemize}
    \end{slide}

    \part{Présentation}

    \begin{slide}{darcs}
    \begin{itemize}
    \item http://darcs.net/
    \item code sous GPL
    \item Ecrit en haskell (http://www.haskell.org)
        \begin{itemize}
            \item langage fonctionel pur
            \item langage compilé
        \end{itemize}
    \item code sous darcs
    \end{itemize}
    \end{slide}

    \begin{slide}{Concept}
    \begin{itemize}
        \item VCS complètement décentralisé
        \begin{itemize}
            \item copie de travail = dépôt
            \item chaque dépôt est une branche
            \item techniquement, pas de dépôt central
        \end{itemize}
        \item le contenu est la résultante d'une série de patchs
        \begin{itemize}
            \item pas d'ordre strict dans les patchs
            \item dépendences entre patch
            \item échange des patchs en les dépôts
        \end{itemize}
        \item un patch est un groupe de modification
    \end{itemize}
    \end{slide}

    \begin{slide}{structure d'un dépôt}
    Un seul répertoire \verb+_darcs+ à la racine

    \begin{itemize}
        \item \verb+current/+: l'arbre de référence (pristine tree)
        %%\item \verb+inventories/+: FIXME
        \item \verb+inventory+: la liste des patchs
        \item \verb+patches/+: les patches
        \item \verb+prefs/+: les préférences utilisateur
    \end{itemize}
    \end{slide}

    \begin{slide}{cas: travail en solitaire}
    On veut juste avoir un historique des fichiers:
    \bigskip
    \begin{figure}[htb]
    \includegraphics*[width=0.8\textwidth]{depots_solo}
    \end{figure}
    \end{slide}

    \begin{slide}{cas: dépôt de référence}
    Le dépôt de référence:
    \begin{itemize}
        \item décidé comme tel
        \item peut-être accessible en lecture en anonyme
        \item personne ne s'en sert comme copie de travail
    \end{itemize}
    \bigskip
    \begin{figure}[htb]
    \includegraphics*[width=0.8\textwidth]{depots}
    \end{figure}
    \end{slide}
    
    \begin{slide}{cas: plusieurs copies}
    \begin{itemize}
        \item depuis plusieurs machines
        \item on veut juste une synchronisation
    \end{itemize}
    \bigskip
    \begin{figure}[htb]
    \includegraphics*[width=0.8\textwidth]{depots_p2p}
    \end{figure}
    \end{slide}

    \begin{slide}{cas: la vraie vie}
    \begin{figure}[htb]
    \includegraphics*[width=0.8\textwidth]{depots_multi}
    \end{figure}
    \end{slide}

    \part{Utilisation}

    \begin{slide}{Création d'un dépôt}
    Nouveau dépôt:

    \verb+darcs initialize+

    \bigskip
    Depuis un dépôt existant

    \verb+darcs get+
    \end{slide}

    \begin{slide}{Ajout/Suppression de fichier}
    \begin{itemize}
        \item \verb+darcs add+
        \item \verb+darcs remove+
    \end{itemize}
    \bigskip
    Ces opérations sont des patchs\\
    \bigskip
    Dans la pratique cela donne deux changements:
    \begin{enumerate}
        \item ajout/suppression du fichier
        \item ajout/suppression du contenu
    \end{enumerate}
    \end{slide}
\end{document}
