hgbook

annotate en/intro.tex @ 217:369858a4d63c

Start to flesh out chapter 1.
author Bryan O'Sullivan <bos@serpentine.com>
date Thu May 10 13:24:25 2007 -0700 (2007-05-10)
parents 914babdc99c8
children 75fd236d736b
rev   line source
bos@16 1 \chapter{Introduction}
bos@16 2 \label{chap:intro}
bos@16 3
bos@217 4 \section{About revision control}
bos@155 5
bos@217 6 Revision control is the management of multiple versions of a piece of
bos@217 7 information. In its simplest form, it's a process that many people
bos@217 8 perform by hand: every time you modify a file, save it under a new
bos@217 9 name that contains a number, each one higher than the number of the
bos@217 10 preceding version.
bos@217 11
bos@217 12 Manually managing multiple versions of even a single file is an
bos@217 13 error-prone task, though, so software tools to help automate this
bos@217 14 process have long been available. The earliest automated revision
bos@217 15 control tools were intended to help a single user to manage revisions
bos@217 16 to a single file. Over the past several decades, the scope of
bos@217 17 revision control tools has expanded greatly; they now manage multiple
bos@217 18 files, and help multiple people to work together. The best modern
bos@217 19 revision control tools will have no problem coping with thousands of
bos@217 20 people working together on a single project, which might consist of
bos@217 21 hundreds of thousands of files.
bos@217 22
bos@217 23 \subsection{Why use revision control?}
bos@217 24
bos@217 25 There are a number of reasons why you or your team might want to use
bos@217 26 an automated revision control tool for a project.
bos@217 27 \begin{itemize}
bos@217 28 \item The software gives you a unified way of working with your
bos@217 29 project's files, and a single place to look in.
bos@217 30 \item When you're working with other people, it will make it easier
bos@217 31 for you to collaborate. When people more or less simultaneously
bos@217 32 make potentially incompatible changes, the software will help you to
bos@217 33 identify and resolve those conflicts.
bos@217 34 \item It will track the history of your project. For every change,
bos@217 35 you'll have a log of \emph{who} made it; \emph{why} they made it;
bos@217 36 \emph{when} they made it; and \emph{what} the change was.
bos@217 37 \item It can help you to recover from mistakes. If you make a change
bos@217 38 that later turns out to be in error, you can revert to an earlier
bos@217 39 version of one or more files. In fact, a \emph{really} good
bos@217 40 revision control tool will even help you to efficiently figure out
bos@217 41 exactly when a problem was introduced (see
bos@217 42 section~\ref{sec:undo:bisect} for details).
bos@217 43 \item It will help you to work simultaneously on multiple versions of
bos@217 44 your project.
bos@217 45 \end{itemize}
bos@217 46
bos@217 47 \subsection{The many names of revision control}
bos@217 48
bos@217 49 Revision control is a diverse field, so much so that it doesn't
bos@217 50 actually have a single name or acronym. Here are a few of the more
bos@217 51 common names and acronyms you'll encounter:
bos@217 52 \begin{itemize}
bos@217 53 \item Configuration management (CM)
bos@217 54 \item Revision control (RCS)
bos@217 55 \item Software configuration management (SCM)
bos@217 56 \item Version control (VCS)
bos@217 57 \end{itemize}
bos@217 58 Some people claim that these terms actually have different meanings,
bos@217 59 but in practice they overlap so much that there's no agreed or even
bos@217 60 useful way to tease them apart.
bos@155 61
bos@155 62 \section{The hierarchy of revision control}
bos@155 63
bos@155 64
bos@155 65 \subsection{On a single system}
bos@155 66
bos@155 67 \subsection{Network-based, but centralised}
bos@155 68
bos@155 69 \subsection{Fully distributed}
bos@155 70
bos@155 71
bos@155 72 \section{Advantages of distributed revision control}
bos@155 73
bos@155 74 \subsection{For open source projects}
bos@155 75
bos@155 76 \subsection{For commercial projects}
bos@155 77
bos@155 78 \subsection{Myths about distributed revision control}
bos@155 79
bos@155 80 \section{Why choose Mercurial?}
bos@155 81
bos@16 82
bos@16 83 %%% Local Variables:
bos@16 84 %%% mode: latex
bos@16 85 %%% TeX-master: "00book"
bos@16 86 %%% End: