From 79c271f236ae5b9d0636a1220d2f11ff13c6f4d6 Mon Sep 17 00:00:00 2001
From: Primal Pappachan
Date: Fri, 27 Jan 2012 18:56:27 +0530
Subject: 3rd part - Intial script and slides

---
 Version_Control/vcs3/vcslide3.tex | 320 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 320 insertions(+)
 create mode 100644 Version_Control/vcs3/vcslide3.tex

(limited to 'Version_Control/vcs3/vcslide3.tex')

diff --git a/Version_Control/vcs3/vcslide3.tex b/Version_Control/vcs3/vcslide3.tex
new file mode 100644
index 0000000..9073747
--- /dev/null
+++ b/Version_Control/vcs3/vcslide3.tex
@@ -0,0 +1,320 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Version Control Systems
+%
+% Author: FOSSEE 
+% Copyright (c) 2009, FOSSEE, IIT Bombay
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[12pt,compress]{beamer}
+
+\mode<presentation>
+{
+  \usetheme{Warsaw}
+  \useoutertheme{infolines}
+  \setbeamercovered{transparent}
+}
+
+\usepackage[english]{babel}
+\usepackage[latin1]{inputenc}
+%\usepackage{times}
+\usepackage[T1]{fontenc}
+
+% Taken from Fernando's slides.
+\usepackage{ae,aecompl}
+\usepackage{mathpazo,courier,euler}
+\usepackage[scaled=.95]{helvet}
+
+\definecolor{darkgreen}{rgb}{0,0.5,0}
+
+\usepackage{listings}
+\lstset{language=bash,
+    basicstyle=\ttfamily\bfseries,
+    commentstyle=\color{red}\itshape,
+  stringstyle=\color{darkgreen},
+  showstringspaces=false,
+  keywordstyle=\color{blue}\bfseries}
+
+\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\tiny \thetime\ m}}
+
+\newcommand{\typ}[1]{\lstinline{#1}}
+
+\newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}}  }
+
+\setbeamercolor{emphbar}{bg=blue!20, fg=black}
+\newcommand{\emphbar}[1]
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DOCUMENT STARTS
+\begin{document}
+
+\begin{frame}
+
+\begin{center}
+\vspace{12pt}
+\textcolor{blue}{\huge Version Control with hg}
+\end{center}
+\vspace{18pt}
+\begin{center}
+\vspace{10pt}
+\includegraphics[scale=0.95]{../images/fossee-logo.png}\\
+\vspace{5pt}
+\scriptsize Developed by FOSSEE Team, IIT-Bombay. \\ 
+\scriptsize Funded by National Mission on Education through ICT\\
+\scriptsize  MHRD,Govt. of India\\
+\includegraphics[scale=0.30]{../images/iitb-logo.jpg}\\
+\end{center}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Objectives}
+\label{sec-2}
+  At the end of this session, you will be able to:
+  \begin{itemize}
+  \item Learn how to view and revert changes made to files in a repository.
+  \item Learn how to share repositories and deal with simultaneous conflicting changes.
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Pre-requisite}
+\textbf{Version Control Using Hg}
+	\begin{itemize}
+	\item Part 1
+	\item Part 2
+	\end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Operational overhead?}
+  \begin{itemize}
+  \item But why do we \typ{commit}?
+  \item Isn't all this just adding to operational costs?
+  \item Isn't all this a waste of time?
+  \end{itemize}
+  \begin{center}
+    \emphbar{No! You shall see the benefits, soon!}    
+  \end{center}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Revert Changes}
+  \begin{itemize}
+  \item Undo all changes; the editor can only do so much.
+  \item \typ{hg revert --all}
+  \item \typ{hg revert filename}
+  \item Present file, with changes --- \typ{filename.orig}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Viewing Changes}
+  \begin{itemize}
+  \item \typ{hg diff} --- all changes since last commit
+  \end{itemize}
+  \begin{block}{}
+    \begin{lstlisting}
+      - this line was deleted
+      + this line was added
+    \end{lstlisting}
+  \end{block}
+\end{frame}
+
+
+\begin{frame}[fragile]
+  \frametitle{Revision numbering}
+  \begin{itemize}
+  \item \typ{changeset:   n:cbf6e2a375b4}
+  \item \typ{n} is the revision number
+  \item The revision number is local to a repository
+  \item \typ{cbf6e2a375b4} is the unique identifier
+  \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Using revision numbers}
+  \begin{itemize}
+  \item \typ{-r n} can be passed as arguments to commands to specify
+    the revision number
+  \item For instance, \typ{hg diff -r1 -r2}
+  \item \typ{m:n} specifies a range of revision numbers
+  \item For instance, \typ{hg log -r0:2}
+  \end{itemize}
+\end{frame}
+
+\section{Collaborating with Mercurial}
+\begin{frame}[fragile]
+  \frametitle{Cloning Repositories}
+  \begin{itemize}
+  \item \typ{hg clone SOURCE [DEST]}
+  \item All \typ{hg} repositories are self-contained
+  \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Sharing Repositories}
+  \begin{itemize}
+  \item \typ{hg serve}
+  \item Can be cloned with \typ{hg clone http://my-ip-address:8000}
+  \item We share a central repository; work on our local copies. 
+  \item Set write permissions in \typ{.hg/hgrc}
+  \end{itemize}
+  \begin{lstlisting}
+    [web]
+    push_ssl=False
+    allow_push=*
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Sharing Changes}
+  \begin{itemize}
+  \item Use \typ{hg push} to push your \typ{commits}
+    (\typ{changesets}) to the central repository
+  \end{itemize}
+\end{frame}
+
+
+\begin{frame}
+  \frametitle{Pulling Changes}
+  \begin{itemize}
+  \item \typ{hg incoming} shows new \typ{changesets} in the server 
+  \item To get these \typ{changesets}, we use \typ{hg pull}
+  \item These changes do not affect our working directory
+  \item \typ{hg parent} shows the parents of the working directory
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Pulling Changes \ldots}
+  \begin{itemize}
+  \item \typ{hg update} will update the working directory 
+    \begin{itemize}
+    \item Updates to the \typ{tip} if no revision is specified
+    \item \typ{tip} is the most recently added changeset 
+    \item Can specify revision number to update to
+    \end{itemize}
+  \item \typ{hg tip} shows the \typ{tip} of the repository
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Simultaneous Changes}
+  \begin{itemize}
+  \item The logs of both repositories will be different
+  \item The repositories have diverged
+  \item \typ{hg push} fails, in such a scenario
+  \item \alert{Never, Never, Never, Ever} use \typ{hg push -f}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Merging}
+  \begin{itemize}
+  \item Pull and merge, when \typ{abort: push creates new remote
+    heads!}
+  \item \typ{hg merge} will merge the two diverged heads
+  \item \typ{commit} after you have \typ{merged}!
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Simultaneous Changes \ldots}
+  \begin{itemize}
+  \item \typ{outgoing} shows the \typ{changesets} that will be pushed
+  \item \typ{hg push} works!
+  \item Look at the `Change graph'!
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Simultaneous Conflicting Changes}
+  \begin{itemize}
+  \item What if the changes conflict? -- overlapping edits
+  \item \typ{hg push} fails; \typ{hg pull}; \typ{hg merge}
+  \item You now get a diff view with 3 panes 
+    \begin{itemize}
+    \item First --- current file
+    \item Second --- \typ{changesets} that you pulled
+    \item Third --- file before you made your changes
+    \end{itemize}
+  \item Resolve conflict and save
+  \item \typ{hg commit}; \typ{hg push}
+  \item Look at the `Change graph'!
+  \end{itemize}
+\end{frame}
+
+\section{Conclusion}
+
+\begin{frame}
+  \frametitle{\alert{Advice}: Work-flow}
+  General work-flow
+  \begin{itemize}
+  \item \typ{pull}; \typ{update}
+  \item Make changes
+  \item \typ{commit}
+  \item If changes on repo, \typ{pull} and \typ{merge}
+  \item \typ{push}
+  \end{itemize}
+  \emphbar{Commit Early, Commit Often}
+\end{frame}
+
+\begin{frame}
+\frametitle{Summary}
+\label{sec-18}
+
+In this tutorial, we have learnt to,
+
+\begin{itemize}
+\item Undo changes to the repository using hg revert,
+\item View changes done to the repository using hg diff
+\item Use revision numbers as arguments to different hg commands
+\item Clone repositories, using hg clone,
+\item Serve our repositories via http using hg serve,
+\item push changes to a repository using hg push,
+\item check the changesets in a repository after last pull, using hg incoming,
+\item pull changes from a repository using hg pull ,
+\item update the working directory, using hg update,
+\item merge two heads, using hg merge,
+\item and resolve conflicts using hg resolve.
+\end{itemize}
+\end{frame}
+\begin{frame}[fragile]
+\frametitle{Evaluation}
+\label{sec-19}
+
+
+\begin{enumerate}
+\item 
+\item 
+\item 
+\end{enumerate}
+\end{frame}
+\begin{frame}
+\frametitle{Solutions}
+\label{sec-20}
+
+
+\begin{enumerate}
+\item 
+\vspace{15pt}
+\item 
+\end{enumerate}
+\end{frame}
+\begin{frame}
+
+
+\begin{block}{}
+  \begin{center}
+  \textcolor{blue}{\Large THANK YOU!} 
+  \end{center}
+  \end{block}
+\begin{block}{}
+  \begin{center}
+    For more Information, visit our website\\
+    \url{http://fossee.in/}
+  \end{center}  
+  \end{block}
+\end{frame}
+
+\end{document}
+
-- 
cgit 

