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