Mercurial > lilug > scm
view slideshow.tex @ 25:a0bbcf7a43b3 default
Update
author | Josef "Jeff" Sipek <jeffpc@optonline.net> |
---|---|
date | Thu, 16 Mar 2006 18:55:21 -0500 |
parents | abefaee0b256 |
children |
line wrap: on
line source
\documentclass[pdf,contemporain,slideColor,colorBG,accumulate,nototal]{prosper} %\usepackage{macros-cp} \title{Source Code Management /\\ Version Control Systems} \subtitle{Even more information than last time} \author{Josef ``Jeff'' Sipek} \institution{} \slideCaption{Version Control Systems} % Pre-presentation setup (TODO): % - make sure SVN password isn't cached % - init OfficeBocce DB % TODO: % - pros for centralized/distributed scm \begin{document} \maketitle % What is it? \overlays{1}{ \begin{slide}{What's SCM/VCS?} \begin{itemize} \item Source Code Management \item Version Control Systems \end{itemize} \end{slide}} % What can it do? \overlays{3}{ \begin{slide}{What can it do?} \begin{itemstep} % DEMO: svn log \item Keep revision history % I may say files with code, but I really mean any file - it doesn't have to be code \item Revert to any revision % DEMO: svn annotate \item Track down who changed particular line of code \end{itemstep} \end{slide}} % How does it work? - typical workflow \overlays{2}{ \begin{slide}{How does it work?} \begin{tabular}{rc} \begin{minipage}{4cm} \begin{center} \includegraphics{client-server-layout.ps} \end{center} \end{minipage} & \begin{minipage}{6cm} \begin{itemstep} \item Repository % You have a repository, it stores all the data and metadata \item Client % which checks out the source; the repository contains the history and should not be touched directly \end{itemstep} \end{minipage} \end{tabular} \end{slide}} \overlays{4}{ \begin{slide}{Workflow Example} \begin{center} \vspace{1cm} \onlySlide*{1}{\includegraphics{client-server.ps}} % - server, client \onlySlide*{2}{\includegraphics{client-server-checkout.ps}} % - client checks out a copy \onlySlide*{3}{\includegraphics{client-server-modified.ps}} % - client modifies code \onlySlide*{4}{\includegraphics{client-server-commit.ps}} % - client commits changes to server \end{center} \end{slide}} % DEMO: subversion checkout, modify, commit - oops! Access Denied, display log (no change :-( ) \overlays{5}{ \begin{slide}{Issues} \begin{itemstep} \item Works great for ``closed'' projects \item Non-commiters are \emph{second class citizens} % DEMO: generate diff & email the maintainer \item Promotes use of patches - bad! % why bother with SCM when you force people to use patches?! \item Minimal disconnected operation % SVN does support _some_ disconnected operation; commit, etc. must be connected *STRESS* \item Single point of failure % the server's disk dies - very bad \end{itemstep} \end{slide}} \overlays{2}{ \begin{slide}{What now?} \begin{tabular}{rc} \begin{minipage}{4cm} \begin{center} \onlySlide*{1}{\includegraphics{client-server-layout.ps}} % client-server model \fromSlide*{2}{\includegraphics{distributed-layout.ps}} % distributed \end{center} \end{minipage} & \begin{minipage}{6cm} \onlySlide*{1}{ \begin{itemize} \item Repository \item Client \end{itemize}} \fromSlide*{2}{ \begin{itemize} \item Repository + client \end{itemize}} \end{minipage} \end{tabular} \end{slide}} \overlays{9}{ \begin{slide}{Workflow Example} \begin{center} \vspace{1cm} \onlySlide*{1}{\includegraphics{distributed.ps}} % - server, client \onlySlide*{2}{\includegraphics{distributed-clone.ps}} % - client clones the repo \onlySlide*{3}{\includegraphics{distributed-modified.ps}} % - client modifies code \onlySlide*{4}{\includegraphics{distributed-commit.ps}} % - client commits changes % DEMO: mercurial clone, modify, commit - oooh it works!, show log (history!) % DEMO: go to parent repo and show history (no change!) \onlySlide*{5}{\includegraphics{distributed-push.ps}} % client pushes to parent repo % DEMO: push the changes to the parent \onlySlide*{6}{\includegraphics{distributed-afterpush.ps}} % - so we have 2 independent repos \onlySlide*{7}{\includegraphics{distributed-commit.ps}} % - let's go back... \onlySlide*{8}{\includegraphics{distributed-clone2.ps}} % - we have a choice! \onlySlide*{9}{\includegraphics{distributed-clone3.ps}} % - say we don't like repo D \end{center} \end{slide}} \overlays{2}{ \begin{slide}{Issues} \begin{itemstep} \item Slightly more complicated to understand \item More disk usage % but there is distributed redundancy - disk failure % FIXME: more issues \end{itemstep} \end{slide}} \overlays{1}{ \begin{slide}{Centralized Systems} \begin{itemize} \item RCS \item CVS \item Subversion (aka. SVN) \item Perforce \item Clearcase \item SourceSafe (by Microsoft) \end{itemize} \end{slide}} \overlays{1}{ \begin{slide}{Distributed Systems} \begin{itemize} \item Bazaar-NG \item Cogito/git \item Darcs \item GNU Arch \item Mercurial \item Monotone \item SVK \end{itemize} \end{slide}} \overlays{1}{ \begin{slide}{Q\&A} \vspace{1in} \begin{center} Questions? \end{center} \end{slide}} % wasteful? I think not % At the time XFree86 4.3.0 was released, there were *FOUR HUNDRED SIXTY-SEVEN* % branches and tags. This means that checking out the root of the repository % will cause *ONE HUNDRED SIXTY-THREE GIGABYTES* of data to be transferred off % of my server and onto your hard disk % http://necrotic.deadbeast.net/xsf/XFree86/HACKING.txt \end{document}