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}