\documentclass[ignorenonframetext]{beamer}
%\documentclass[class=amsart]{beamer}
%% Beamer Declarations
\mode<article>{
	\usepackage{beamerbasearticle}
	\usepackage{fullpage}
	\usepackage{pgf}
	\usepackage{hyperref}
}
\mode<presentation>{
%	\usepackage[bars]{beamerthemetree}
	\usetheme{default}
	\useinnertheme{default}
	\useoutertheme{infolines}
	%\usecolortheme{beetle}
	\usecolortheme{rose}
	\usecolortheme{dolphin}
%	\setbeamercolor{example text}{fg=green}
%	\beamertemplatetransparentcovereddynamic
%	\beamertemplateballitem
}
%% LaTeX Packages
%\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade}
\usepackage{graphicx}
%\usepackage{longtable}
\usepackage{calc}
\usepackage{amsmath,amssymb}
\usepackage[english]{babel}
\usepackage{setspace}
%\usepackage{dev}

%% LaTeX Definitions
%\newcounter{countup}
\newcommand{\figureheight}{\textheight-4\baselineskip}
\DeclareMathOperator{\bbF}{{\mathbb F}}
\DeclareMathOperator{\Id}{{\mathrm Id}}
\DeclareMathOperator{\Trace}{{\mathrm Trace}}

% Document information
\date{14th March 2008}
\title{Version Control}
\author[Kapil Paranjape]{Kapil Hari Paranjape}
\institute[IMSc]{The Institute of Mathematical Sciences}
\subject{Computer Usage Seminar}

\begin{document}
\onehalfspacing
%@modernhindi
\frame{\maketitle}

\section{Introduction}
\begin{frame}{Pre-Version Control}
``Version Control'' is about organising programs and documents.
How does one organise one's documents and programs before one learns
version control but \emph{after} one has learnt to use some basic
commands.
\begin{enumerate}
	\pause\item The first step is to organise things into folders.
	\pause\item The second step is to create different files to do
	      different things.
	\pause\item The third step is to test the result of the work done.
	\pause\item The fourth step is to properly save and export/send
	      the result.
	\pause\item The final step is to clean-up the work so that anyone
	      returning to look at it can figure out how the material
	      is organised.
\end{enumerate}
\alert{We often skip or truncate some of these steps!}
We will not discuss those cases (which deserve our \emph{pity} rather
than \emph{annoyance}!) where even the steps on this slide are not
followed.
\end{frame}

\begin{frame}{What is missing?}
The above approach is more than adequate for a large number of use
cases. However, as one begins to collect a large body of work we
discover some gaps:
\begin{enumerate}
	\pause\item There are a large number of different folders.
	\pause\item We often have files which we are not sure whether to
	keep or not.
	\pause\item The testing worked at the time it was done but we can't
	verify those tests now.
	\pause\item In cleaning up we delete (by mistake!) files which are
	important.
	\pause\item We do not cleanup and after a while the folder is full
	of files with cryptic similar sounding names and we are not
	really sure which is the one that got the correct results!
	\pause\item In an effort to keep all the relevant
	documentation in the file we keep all kinds of comments in
	the file which are not for the ``public version''.
	\pause\item It turns out the the work needs to be continued
	and developed further.
\end{enumerate}
\alert{\dots and so on!}
\end{frame}

\begin{frame}[fragile]{What is the ideal?}
In an ideal setup, \emph{after} we have finished the work we should
have a folder containing files (and possibly sub-folders).
\begin{enumerate}
	\pause\item Each file/sub-folder has a recognisable name, or we have a
	\verb|README| file which documents what each of these is
	about.
	\pause\item Each file/sub-folder is actually necessary for
	generating the program or document in final form. The files that
	can be automatically generated are handled by a
	\verb|makefile|
	or following instructions given in \verb|INSTALL|.
	\pause\item We have clear history of how the files have
	been changed and why.
	\pause\item Older ``tricks'' hidden in earlier versions of
	files can be recovered.
\end{enumerate}
\alert{\dots and so on!}
\end{frame}
\end{document}

