diff options
author | Primal Pappachan | 2011-09-30 11:18:48 +0530 |
---|---|---|
committer | Primal Pappachan | 2011-09-30 11:18:48 +0530 |
commit | 3b305a30adffac865f3a0400e8eb9000c6dc2cc8 (patch) | |
tree | abc422227e4bf8c6649902b5d1cac0aac4ec5362 /Version_Control/vcs2 | |
parent | 0e3bdae00007a43ef0a56723e1b6f139efc0943d (diff) | |
download | sdes-stscripts-3b305a30adffac865f3a0400e8eb9000c6dc2cc8.tar.gz sdes-stscripts-3b305a30adffac865f3a0400e8eb9000c6dc2cc8.tar.bz2 sdes-stscripts-3b305a30adffac865f3a0400e8eb9000c6dc2cc8.zip |
Partitioned into 3 parts and moved into seperate folders
Diffstat (limited to 'Version_Control/vcs2')
-rw-r--r-- | Version_Control/vcs2/vcslide2.tex | 307 |
1 files changed, 307 insertions, 0 deletions
diff --git a/Version_Control/vcs2/vcslide2.tex b/Version_Control/vcs2/vcslide2.tex new file mode 100644 index 0000000..12bdd7b --- /dev/null +++ b/Version_Control/vcs2/vcslide2.tex @@ -0,0 +1,307 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 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} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 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.png}\\ +\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 Make changes to a repository and commit them + \item + \end{itemize} +\end{frame} + +\begin{frame} +\frametitle{Pre-requisite} +\label{sec-3} + + +Spoken tutorial on - +\begin{itemize} +\item +\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 +\item +\item +\item +\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} + |