hgbook

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