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:
|