annotate ja/intro.tex @ 835:8a3041e6f3cb

reflect comments by Hiroshi Someya.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Sat, 11 Jul 2009 19:25:35 +0900
parents fa1c3715254d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
1 %\chapter{Introduction}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
2 \chapter{$BF3F~(B}
16
81454425eee9 Progress on a few fronts, mainly indexing and MQ chapter content
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
3 \label{chap:intro}
81454425eee9 Progress on a few fronts, mainly indexing and MQ chapter content
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
4
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
5 %\section{About revision control}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
6 \section{$B%j%S%8%g%s%3%s%H%m!<%k(B}
217
369858a4d63c Start to flesh out chapter 1.
Bryan O'Sullivan <bos@serpentine.com>
parents: 155
diff changeset
7
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
8 %Revision control is the process of managing multiple versions of a
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
9 %piece of information. In its simplest form, this is something that
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
10 %many people do by hand: every time you modify a file, save it under a
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
11 %new name that contains a number, each one higher than the number of
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
12 %the preceding version.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
13
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
14 $B%j%S%8%g%s%3%s%H%m!<%k$H$O!$J#?t$N%P!<%8%g%s$N>pJs$r4IM}$9$k%W%m%;%9$G$"(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
15 $B$k!%:G$bC1=c$JJ}K!$O!$%U%!%$%k$rJQ99$7$?$i!$$=$l$^$G$N%P!<%8%g%s$h$j$bBg(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
16 $B$-$J?t;z$r4^$`?7$?$JL>A0$G%;!<%V$r9T$&$J$I$NJ}K!$GA4$F<j$G9T$&$3$H$G$"$k!%(B
217
369858a4d63c Start to flesh out chapter 1.
Bryan O'Sullivan <bos@serpentine.com>
parents: 155
diff changeset
17
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
18 %Manually managing multiple versions of even a single file is an
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
19 %error-prone task, though, so software tools to help automate this
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
20 %process have long been available. The earliest automated revision
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
21 %control tools were intended to help a single user to manage revisions
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
22 %of a single file. Over the past few decades, the scope of revision
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
23 %control tools has expanded greatly; they now manage multiple files,
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
24 %and help multiple people to work together. The best modern revision
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
25 %control tools have no problem coping with thousands of people working
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
26 %together on projects that consist of hundreds of thousands of files.
217
369858a4d63c Start to flesh out chapter 1.
Bryan O'Sullivan <bos@serpentine.com>
parents: 155
diff changeset
27
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
28 $B$?$C$?0l$D$N%U%!%$%k$KBP$7$F$b!$J#?t$N%P!<%8%g%s$r<j$G4IM}$9$k$3$H$O4V0c(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
29 $B$$$r5/$3$70W$$:n6H$G!$$3$N%W%m%;%9$r<+F02=$9$k%=%U%H%&%'%"%D!<%k$,$+$J$j(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
30 $B$N@N$+$iDs6!$5$l$F$-$?!%:G=i$N<+F02=$5$l$?%j%S%8%g%s%3%s%H%m!<%k%D!<%k(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
31 $B$O!$0l?M$N%f!<%6$rBP>]$H$7$F!$(B1$B$D$N%U%!%$%k$N%j%S%8%g%s$r4IM}$9$k$?$a$K:n(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
32 $B$i$l$?!%?t==G/$,7P$A!$%j%S%8%g%s%3%s%H%m!<%k$N<h$j07$&%9%3!<%W$OBg$$$K3H(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
33 $BBg$7$?!%:#$G$OJ#?t?M$K$h$kJ#?t%U%!%$%k$NJT=8$r$b4IM}$9$k$3$H$,$G$-$k!%8=(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
34 $BBe$N:G9b$N%j%S%8%g%s4IM}%D!<%k$O?t@i?M$K$h$k!$?t==K|8D$N%U%!%$%k$rMJ$9$k(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
35 $B%W%m%8%'%/%H$K$bBP1~$9$k!%(B
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
36
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
37 %\subsection{Why use revision control?}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
38 \subsection{$B$J$<%j%S%8%g%s%3%s%H%m!<%k$r;H$&$N$+(B?}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
39
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
40 %There are a number of reasons why you or your team might want to use
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
41 %an automated revision control tool for a project.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
42 $B%W%m%8%'%/%H$N$?$a$K<+F02=$5$l$?%j%S%8%g%s%3%s%H%m!<%k%D!<%k$r;H$*$&$H9M(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
43 $B$($kM}M3$O?tB?$/$"$k!%(B
217
369858a4d63c Start to flesh out chapter 1.
Bryan O'Sullivan <bos@serpentine.com>
parents: 155
diff changeset
44 \begin{itemize}
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
45 %\item It will track the history and evolution of your project, so you
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
46 % don't have to. For every change, you'll have a log of \emph{who}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
47 % made it; \emph{why} they made it; \emph{when} they made it; and
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
48 % \emph{what} the change was.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
49 \item $B%j%S%8%g%s4IM}%D!<%k$O!$%W%m%8%'%/%H$NMzNr$H?J2=$r5-O?$9$k$?$a!$<+(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
50 $BJ,<+?H$G5-O?$9$kI,MW$,$J$$!%A4$F$NJQ99$KBP$7$F(B\emph{$BC/$,(B}\emph{$B2?(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
51 $B$N$?$a$K(B}\emph{$B$$$D(B}\emph{$B2?$r(B}$BJQ99$7$?$N$+$,5-O?$5$l$k!%(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
52 %\item When you're working with other people, revision control software
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
53 % makes it easier for you to collaborate. For example, when people
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
54 % more or less simultaneously make potentially incompatible changes,
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
55 % the software will help you to identify and resolve those conflicts.
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
56 \item $B%j%S%8%g%s%3%s%H%m!<%k%=%U%H%&%'%"$OB>$N?M$H$N6&F1:n6H$r=u$1$k!%Nc(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
57 $B$($P!$J#?t$N%f!<%6$,F1;~$K8_49@-$N$J$$JQ99$r9T$C$?>l9g!$%=%U%H%&%'(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
58 $B%"$N;Y1g$G%3%s%U%j%/%H$rFCDj$72r7h$9$k$3$H$,$G$-$k!%(B
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
59 %\item It can help you to recover from mistakes. If you make a change
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
60 % that later turns out to be in error, you can revert to an earlier
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
61 % version of one or more files. In fact, a \emph{really} good
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
62 % revision control tool will even help you to efficiently figure out
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
63 % exactly when a problem was introduced (see
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
64 % section~\ref{sec:undo:bisect} for details).
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
65 \item $B%j%S%8%g%s4IM}%D!<%k$OHH$7$?%_%9$+$i$N2sI|$r=u$1$k!%2C$($?JQ99$,8e(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
66 $B$G4V0c$$$G$"$C$?$HJ,$+$C$?;~!$(B1$B$D$^$?$OJ#?t$N%U%!%$%k$X$NJQ99$rGK4~$9$k$3(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
67 $B$H$,$G$-$k!%<B:]$N$H$3$m!$(B\emph{$B??$K(B}$BM%$l$?%j%S%8%g%s%3%s%H%m!<%k%D!<%k$O(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
68 $BJ6$l9~$s$@LdBj$rFCDj$9$k$N$r;Y1g$9$k5!G=$r;}$D!%!J>\:Y$K$D$$$F(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
69 $B$O(B~\ref{sec:undo:bisect}$B@a$r;2>H!%!K(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
70 %\item It will help you to work simultaneously on, and manage the drift
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
71 % between, multiple versions of your project.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
72 \item $B%j%S%8%g%s4IM}%D!<%k$O!$%W%m%8%'%/%H$NJ#?t$N%P!<%8%g%s$G$NF1;~:n(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
73 $B6H$d!$%j%S%8%g%s4V$N0\9T$r;Y1g$9$k!%(B
217
369858a4d63c Start to flesh out chapter 1.
Bryan O'Sullivan <bos@serpentine.com>
parents: 155
diff changeset
74 \end{itemize}
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
75 %Most of these reasons are equally valid---at least in theory---whether
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
76 %you're working on a project by yourself, or with a hundred other
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
77 %people.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
78 $B$3$l$i$NM}M3$NB?$/$O<+J,<+?H$N%W%m%8%'%/%H$G:n6H$7$F$$$F$b!$(B100$B?M$N6&F1:n(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
79 $B6H<T$H:n6H$7$F$$$F$b>/$J$/$H$bM}O@E*$K$OEy$7$/M-0U$G$"$k!%(B
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
80
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
81 %A key question about the practicality of revision control at these two
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
82 %different scales (``lone hacker'' and ``huge team'') is how its
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
83 %\emph{benefits} compare to its \emph{costs}. A revision control tool
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
84 %that's difficult to understand or use is going to impose a high cost.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
85
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
86 $B%j%S%8%g%s%3%s%H%m!<%k$,<BMQE*$G$"$k$+$I$&$+H=CG$9$k80$O!$$5$^$6$^$J3+H/(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
87 $B%9%1!<%k!J(B``1$B?M$N%O%C%+!<(B''$B%l%Y%k$+$i(B``$BBg5,LO%A!<%`(B''$B%l%Y%k$^$G!K$K$*$$(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
88 $B$F!$;YJ'$&%3%9%H$KBP$7$F$I$l$@$18zG=$,F@$i$l$k$+$H$$$&$3$H$G$"$k!%M}2r$d(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
89 $B;HMQ$,:$Fq$J%j%S%8%g%s%3%s%H%m!<%k%D!<%k$O9b$$%3%9%H$r2]$9$3$H$K$J$k!%(B
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
90
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
91 %A five-hundred-person project is likely to collapse under its own
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
92 %weight almost immediately without a revision control tool and process.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
93 %In this case, the cost of using revision control might hardly seem
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
94 %worth considering, since \emph{without} it, failure is almost
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
95 %guaranteed.
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
96
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
97 500$B?M$+$i$J$k%W%m%8%'%/%H$G$O!$%j%S%8%g%s%3%s%H%m!<%k%D!<%k$J$7$G$OKX$s$I(B
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
98 $BN)$A9T$+$J$$!%$3$N>l9g!$%j%S%8%g%s%3%s%H%m!<%k$J$7$G$OL@$i$+$K<:GT$9$k$?(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
99 $B$a!$%j%S%8%g%s%3%s%H%m!<%k$r9T$&%3%9%H$OFC$KLdBj$H$O$J$i$J$$!%(B%xxx
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
100
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
101 %On the other hand, a one-person ``quick hack'' might seem like a poor
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
102 %place to use a revision control tool, because surely the cost of using
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
103 %one must be close to the overall cost of the project. Right?
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
104
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
105 $B0lJ}!$(B1$B?M$N3+H/<T$K$h$k(B``$B%/%$%C%/%O%C%/(B''$B$O%j%S%8%g%s%3%s%H%m!<%k%D!<%k(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
106 $B$r;H$&$K$O$"$^$j$U$5$o$7$/$J$$!%$J$<$J$i!$%D!<%k$r;H$&%3%9%H$,$[$\%W%m%8%'(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
107 $B%/%H$N%3%9%H$=$N$b$N$G$"$k$+$i$@!%$3$l$O@5$7$$$@$m$&$+!)(B
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
108
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
109 %Mercurial uniquely supports \emph{both} of these scales of
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
110 %development. You can learn the basics in just a few minutes, and due
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
111 %to its low overhead, you can apply revision control to the smallest of
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
112 %projects with ease. Its simplicity means you won't have a lot of
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
113 %abstruse concepts or command sequences competing for mental space with
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
114 %whatever you're \emph{really} trying to do. At the same time,
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
115 %Mercurial's high performance and peer-to-peer nature let you scale
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
116 %painlessly to handle large projects.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
117
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
118 Mercurial$B$O$3$l$i$N3+H/%9%1!<%k$NN>J}$r%5%]!<%H$7$F$$$k!%4pACE*$J;HMQK!$O(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
119 $B?tJ,$G3X$V$3$H$,$G$-!$%j%S%8%g%s%3%s%H%m!<%k$r:G>.5,LO$N%W%m%8%'%/%H$K4J(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
120 $BC1$K<h$jF~$l$k$3$H$,$G$-$k!%C1=c$G$"$k$?$a!$Fq2r$J%3%s%;%W%H$d%3%^%s%I%7!<(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
121 $B%1%s%9$K0U<1$NB?$/$r@j$a$i$l!$K\Ev$K$d$j$?$$$3$H$,AB$+$K$J$k$3$H$b$J$$!%(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
122 $B$^$?F1;~$K(BMercurial$B$N@-G=$N9b$5$d!$%T%"%D!<%T%"$N@-<A$N$?$a$K!$Bg5,LO%W%m(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
123 $B%8%'%/%H$K$b6lO+$9$k;v$J$/%9%1!<%k$9$k$3$H$,$G$-$k!%(B
217
369858a4d63c Start to flesh out chapter 1.
Bryan O'Sullivan <bos@serpentine.com>
parents: 155
diff changeset
124
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
125 %No revision control tool can rescue a poorly run project, but a good
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
126 %choice of tools can make a huge difference to the fluidity with which
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
127 %you can work on a project.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
128
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
129 $B$*AFKv$J%W%m%8%'%/%H$r5_:Q$9$k$h$&$J%j%S%8%g%s%3%s%H%m!<%k$OB8:_$7$J$$(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
130 $B$,!$NI$$%D!<%k$NA*Br$O!$:n6H$9$k%W%m%8%'%/%H$N7x<B$5$KBg$-$J:9$r$b$?$i$9!%(B
219
15a6fd2ba582 Start talking about the advantages of distributed tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 218
diff changeset
131
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
132 %\subsection{The many names of revision control}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
133 \subsection{$BMM!9$J%j%S%8%g%s%3%s%H%m!<%k(B}
217
369858a4d63c Start to flesh out chapter 1.
Bryan O'Sullivan <bos@serpentine.com>
parents: 155
diff changeset
134
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
135 %Revision control is a diverse field, so much so that it doesn't
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
136 %actually have a single name or acronym. Here are a few of the more
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
137 %common names and acronyms you'll encounter:
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
138 $B%j%S%8%g%s%3%s%H%m!<%k$OBg$-$JI}$r$b$DJ,Ln$G$"$j!$$=$N$?$aB?$/$N8F$SL>$H(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
139 $B$=$NC;=L7A$,CN$i$l$F$$$k!'(B
217
369858a4d63c Start to flesh out chapter 1.
Bryan O'Sullivan <bos@serpentine.com>
parents: 155
diff changeset
140 \begin{itemize}
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
141 \item $B%j%S%8%g%s%3%s%H%m!<%k(B (Revision control (RCS))
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
142 \item $B%=%U%H%&%'%"@_Dj%^%M%8%a%s%H$^$?$O@_Dj%^%M%8%a%s%H(B (Software configuration management (SCM), or configuration management)
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
143 \item $B%=!<%9%3!<%I%^%M%8%a%s%H(B (Source code management)
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
144 \item $B%=!<%9%3!<%I%3%s%H%m!<%k$^$?$O%=!<%9%3%s%H%m!<%k(B (Source code control, or source control)
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
145 \item $B%P!<%8%g%s%3%s%H%m!<%k(B (Version control (VCS))
217
369858a4d63c Start to flesh out chapter 1.
Bryan O'Sullivan <bos@serpentine.com>
parents: 155
diff changeset
146 \end{itemize}
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
147 %Some people claim that these terms actually have different meanings,
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
148 %but in practice they overlap so much that there's no agreed or even
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
149 %useful way to tease them apart.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
150 $B$3$l$i$NMQ8l$O3F!90c$&0UL#$r;}$D$N$@$H<gD%$9$k?M!9$b$$$k!%$7$+$7<B<AE*$K(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
151 $B$O$3$l$i$O8_$$$KBg$-$/=E$J$C$F$*$j!$$o$6$o$66hJL$9$k$3$H$O0lHLE*$G$J$/!$(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
152 $B$^$?M-MQ$G$b$J$$!%(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
153
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
154 %\section{A short history of revision control}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
155 \section{$B%j%S%8%g%s%3%s%H%m!<%k$NNr;K(B}
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
156
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
157 %The best known of the old-time revision control tools is SCCS (Source
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
158 %Code Control System), which Marc Rochkind wrote at Bell Labs, in the
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
159 %early 1970s. SCCS operated on individual files, and required every
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
160 %person working on a project to have access to a shared workspace on a
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
161 %single system. Only one person could modify a file at any time;
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
162 %arbitration for access to files was via locks. It was common for
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
163 %people to lock files, and later forget to unlock them, preventing
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
164 %anyone else from modifying those files without the help of an
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
165 %administrator.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
166
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
167 $B:G$bCN$i$l$F$$$k8E$$%j%S%8%g%s%3%s%H%m!<%k%D!<%k$O!$(BMarc Rochkind$B$,(B1970$BG/(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
168 $BBe=iF,$K(BBell$B8&5f=j$G=q$$$?(BSCCS (Source Code Control System)$B$G$"$k!%(B SCCS
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
169 $B$O8D!9$N%U%!%$%k$KBP$7$FF0:n$7!$%W%m%8%'%/%H$N6&F1:n6H<T$K$OF10l%^%7%s>e(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
170 $B$N6&M-%o!<%/%9%Z!<%9$X$N%"%/%;%9$,I,MW$G$"$C$?!%%U%!%$%k$X$N%"%/%;%9$ND4(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
171 $BDd$O%m%C%/$K$h$C$F9T$o$l!$$"$k%U%!%$%k$rJQ99$G$-$k$N$O>o$K0l?M$N%f!<%6$@(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
172 $B$1$G$"$C$?!%%U%!%$%k$r%m%C%/$7$?8e!$%m%C%/$N2r=|$rK:$l$k$3$H$OF|>oE*$K$"(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
173 $B$j!$$3$&$J$k$H4IM}<T$N=u$1$J$7$KB>$N3+H/<T$,%U%!%$%k$rJQ99$9$k$3$H$O$G$-(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
174 $B$J$+$C$?!%(B
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
175
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
176 %Walter Tichy developed a free alternative to SCCS in the early 1980s;
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
177 %he called his program RCS (Revison Control System). Like SCCS, RCS
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
178 %required developers to work in a single shared workspace, and to lock
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
179 %files to prevent multiple people from modifying them simultaneously.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
180
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
181 Walter Tichy$B$O!$(B1980$BG/Be=iF,$K(BSCCS$B$NBeBX$H$J$k%U%j!<$N%P!<%8%g%s%3%s%H%m!<(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
182 $B%k%D!<%k$r3+H/$7$?!%H`$O<+$i$N%7%9%F%`$r(BRCS (Revison Control System)$B$H8F(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
183 $B$s$@!%(BSCCS$BF1MM!$(BRCS$B$O3+H/<T$?$A$KC10l$N6&M-%o!<%/%9%Z!<%9$H!$%U%!%$%k$rF1(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
184 $B;~$KJ#?t?M$,JQ99$9$k$3$H$N$J$$$h$&$K%m%C%/$rMW5a$7$?!%(B
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
185
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
186 %Later in the 1980s, Dick Grune used RCS as a building block for a set
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
187 %of shell scripts he initially called cmt, but then renamed to CVS
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
188 %(Concurrent Versions System). The big innovation of CVS was that it
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
189 %let developers work simultaneously and somewhat independently in their
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
190 %own personal workspaces. The personal workspaces prevented developers
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
191 %from stepping on each other's toes all the time, as was common with
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
192 %SCCS and RCS. Each developer had a copy of every project file, and
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
193 %could modify their copies independently. They had to merge their
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
194 %edits prior to committing changes to the central repository.
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
195
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
196 1980$BG/Be8eH>$K(BDick Grune$B$O(BRCS$B$r8F$S=P$9%7%'%k%9%/%j%W%H$K$h$k%P!<%8%g%s4I(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
197 $BM}%7%9%F%`$r:n$C$?!%=i4|$K(Bcmt$B$H8F$P$l$?$3$N%7%9%F%`$O!$8e$K(BCVS
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
198 (Concurrent Versions System)$B$H2~L>$5$l$?!%(B CVS$B$NBg$-$J3W?7$O!$3+H/<TC#$K(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
199 $BF1;~$K8DJL$N%o!<%/%9%Z!<%9$G:n6H$9$k$3$H$r5v$7$?$3$H$G$"$k!%%o!<%/%9%Z!<(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
200 $B%9$r8DJL$K$7$?$3$H$G!$3+H/<T$O(BSCCS$B$d(BRCS$B$GNI$/$"$C$?$h$&$K!$B>$N3+H/<T$N:n(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
201 $B6H$rK8$2$k$3$H$,$J$/$J$C$?!%$3$N%b%G%k$G$O!$Cf1{$N%j%]%8%H%j$KJQ99$r%3%_%C(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
202 $B%H$9$kA0$K!$JQ997k2L$r%^!<%8$9$kI,MW$,$"$C$?!%(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
203
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
204 %Brian Berliner took Grune's original scripts and rewrote them in~C,
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
205 %releasing in 1989 the code that has since developed into the modern
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
206 %version of CVS. CVS subsequently acquired the ability to operate over
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
207 %a network connection, giving it a client/server architecture. CVS's
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
208 %architecture is centralised; only the server has a copy of the history
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
209 %of the project. Client workspaces just contain copies of recent
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
210 %versions of the project's files, and a little metadata to tell them
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
211 %where the server is. CVS has been enormously successful; it is
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
212 %probably the world's most widely used revision control system.
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
213
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
214 Brian Berliner$B$O(BGrune$B$N%*%j%8%J%k%9%/%j%W%H$r<u$17Q$$$G!$$=$l$r(BC$B$G=q$-D>(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
215 $B$7!$8=:_$N(BCVS$B$X$H7R$,$k%3!<%I$r(B1989$BG/$K%j%j!<%9$7$?!%$=$N8e!$(BCVS$B$O%M%C%H(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
216 $B%o!<%/$r7PM3$7$?F0:n$d!$%/%i%$%"%s%H%5!<%P%"!<%-%F%/%A%c$rHw$($F$$$C(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
217 $B$?!%(BCVS$B$N%"!<%-%F%/%A%c$OCf1{=8Cf7?$G!$%5!<%P$N$_$,%W%m%8%'%/%H$NMzNr$rJ](B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
218 $BB8$9$k!%%/%i%$%"%s%H$N%o!<%/%9%Z!<%9$O%W%m%8%'%/%H$N:G?7%P!<%8%g%s$N%U%!(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
219 $B%$%k$N%3%T!<$G$"$j!$%5!<%P$N=j:_$r<($96O$+$J%a%?%G!<%?$,IU2C$5$l$F$$$?!%(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
220 CVS$B$OBg@.8y$r<}$a!$$*$=$i$/@$3&$G:G$b9-$/MQ$$$i$l$?%j%S%8%g%s%3%s%H%m!<%k(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
221 $B%7%9%F%`$H$J$C$?!%(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
222
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
223 %In the early 1990s, Sun Microsystems developed an early distributed
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
224 %revision control system, called TeamWare. A TeamWare workspace
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
225 %contains a complete copy of the project's history. TeamWare has no
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
226 %notion of a central repository. (CVS relied upon RCS for its history
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
227 %storage; TeamWare used SCCS.)
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
228
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
229 1990$BG/Be=iF,!$(BSun Microsystems$B$O(BTeamWare$B$H8F$P$l$k=i4|$NJ,;6%j%S%8%g%s%3(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
230 $B%s%H%m!<%k%7%9%F%`$r3+H/$7$?!%(BTeamWare$B%o!<%/%9%Z!<%9$O%W%m%8%'%/%H$NMzNr(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
231 $B$N40A4$J%3%T!<$r;}$C$F$$$?!%(BTeamWare$B$K$OCf1{%j%]%8%H%j$H$$$&35G0$O$J$+$C(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
232 $B$?!%!J(BCVS$B$,MzNr$N5-O?$K(BRCS$B$r;H$C$F$$$?$h$&$K!$(BTeamWare$B$O(BSCCS$B$rMQ$$$F$$(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
233 $B$?!%!K(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
234
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
235 %As the 1990s progressed, awareness grew of a number of problems with
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
236 %CVS. It records simultaneous changes to multiple files individually,
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
237 %instead of grouping them together as a single logically atomic
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
238 %operation. It does not manage its file hierarchy well; it is easy to
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
239 %make a mess of a repository by renaming files and directories. Worse,
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
240 %its source code is difficult to read and maintain, which made the
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
241 %``pain level'' of fixing these architectural problems prohibitive.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
242
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
243 1990$BG/BeCf:"$K$J$k$H!$(BCVS$B$NLdBj$,9-$/CN$i$l$k$h$&$K$J$C$F$-$?!%(B CVS$B$O0lEY(B
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
244 $B$KJ#?t$N%U%!%$%k$KBP$7$F9T$o$l$kJQ99$rO@M}E*$K%"%H%_%C%/$JA`:n(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
245 \footnote{$BLuCm!'$"$?$+$b86;R$N$h$&$K!$J#?t$NMWAG$KJ,2r$G$-$J$$A`:n$r8@$&(B}$B$H(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
246 $B$7$F%0%k!<%W2=$9$k$N$G$O$J$/!$%U%!%$%kKh$K8DJL$K5-O?$7$F$$$?!%(BCVS$B$N%U%!%$(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
247 $B%k%R%(%i%k%-!<$N4IM}$OIT==J,$G!$%U%!%$%k$d%G%#%l%/%H%j$r%j%M!<%`$9$k$H4J(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
248 $BC1$K%j%]%8%H%j$,:.Mp$7$?!%$5$i$K0-$$$3$H$K!$(BCVS$B$N%=!<%9%3!<%I$OFI$_$K$/(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
249 $B$/!$%a%s%F%J%s%9$bFq$7$+$C$?$?$a!$%"!<%-%F%/%A%c$NLdBj$r2r7h$9$k$N$OIT2D(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
250 $BG=$J%l%Y%k$H8@$($?!%(B
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
251
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
252 %In 2001, Jim Blandy and Karl Fogel, two developers who had worked on
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
253 %CVS, started a project to replace it with a tool that would have a
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
254 %better architecture and cleaner code. The result, Subversion, does
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
255 %not stray from CVS's centralised client/server model, but it adds
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
256 %multi-file atomic commits, better namespace management, and a number
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
257 %of other features that make it a generally better tool than CVS.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
258 %Since its initial release, it has rapidly grown in popularity.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
259
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
260 2001$BG/!$(BCVS$B$r3+H/$7$F$$$?(BJim Blandy$B$H(BKarl Fogel$B$N(B2$B?M$N3+H/<T$,(BCVS$B$rCV$-49(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
261 $B$($k!$$h$jM%$l$?%"!<%-%F%/%A%c$H4qNo$J%3!<%I$r;}$D%D!<%k$N%W%m%8%'%/%H$r(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
262 $B;O$a$?!%$=$N@.2LJ*$G$"$k(BSubversion$B$O(BCVS$B$N=8Cf7?%/%i%$%"%s%H%5!<%P%b%G%k$r(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
263 $B2~$a$k$3$H$O$7$J$+$C$?$,!$J#?t%U%!%$%k$N%"%H%_%C%/$J%3%_%C%H$rDI2C$7!$L>(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
264 $BA06u4V$N4IM}$b2~NI$7$F$$$?!%$^$?(BCVS$B$h$j$bM%$l$??tB?$/$N5!G=$bDI2C$5$l$?!%(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
265 Subversion$B$O:G=i$N%j%j!<%9$+$i5^B.$K?M5$$r3MF@$7$F$$$C$?!%(B
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
266
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
267 %More or less simultaneously, Graydon Hoare began working on an
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
268 %ambitious distributed revision control system that he named Monotone.
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
269 %While Monotone addresses many of CVS's design flaws and has a
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
270 %peer-to-peer architecture, it goes beyond earlier (and subsequent)
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
271 %revision control tools in a number of innovative ways. It uses
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
272 %cryptographic hashes as identifiers, and has an integral notion of
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
273 %``trust'' for code from different sources.
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
274
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
275 $B$[$\;~$rF1$8$/$7$F!$(BGraydon Hoare$B$O(BMonotone$B$H8F$P$l$kLn?4E*$JJ,;6%j%S%8%g(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
276 $B%s%3%s%H%m!<%k%7%9%F%`$N3+H/$r;O$a$?!%(BMonotone$B$O(BCVS$B$N?tB?$/$N@_7W>e$N`laS(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
277 $B$r=$@5$7!$%T%"%D!<%T%"%"!<%-%F%/%A%c$r;}$C$F$$$k!%(B Monotone$B$O=i4|$N!J$"$k(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
278 $B$$$O8eB3$N!K%j%S%8%g%s%3%s%H%m!<%k%D!<%k$h$j$b@h?JE*$J5!G=$r;}$C$F$$(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
279 $B$k!%(BMonotone$B$O0E9f2=$5$l$?%O%C%7%e$r<1JL;R$H$7$F;HMQ$7!$MM!9$J=P=h$N%3!<(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
280 $B%I$KBP$7$F(B``$B?.Mj@-(B''$B$N35G0$r;}$C$F$$$?!%(B
218
75fd236d736b History of SCM tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 217
diff changeset
281
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
282 %Mercurial began life in 2005. While a few aspects of its design are
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
283 %influenced by Monotone, Mercurial focuses on ease of use, high
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
284 %performance, and scalability to very large projects.
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
285
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
286 Mercurial$B$O(B2005$BG/$KCB@8$7$?!%%G%6%$%s$N$$$/$D$+$NLL$O(BMonotone$B$K1F6A$r<u$1(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
287 $B$F$$$k$,!$(BMercurial$B$O;H$$$d$9$5!$9b@-G=!$Bg5,LO%W%m%8%'%/%H$X$N%9%1!<%i%S(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
288 $B%j%F%#$K%U%)!<%+%9$7$F$$$k!%(B
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
289
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
290 %\section{Trends in revision control}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
291 \section{$B%j%S%8%g%s%3%s%H%m!<%k$N%H%l%s%I(B}
219
15a6fd2ba582 Start talking about the advantages of distributed tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 218
diff changeset
292
387
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
293 %There has been an unmistakable trend in the development and use of
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
294 %revision control tools over the past four decades, as people have
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
295 %become familiar with the capabilities of their tools and constrained
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
296 %by their limitations.
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
297
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
298 $B%j%S%8%g%s%3%s%H%m!<%k%D!<%k$N3+H/$H;HMQ$K$*$$$F!$2a5n(B20$BG/4V%D!<%k$K?F$7(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
299 $B$_!$%D!<%k$N@)8B$rCN$k$K=>$C$F!$J6$l$b$J$$%H%l%s%I$,B8:_$7$F$$$k!%(B
219
15a6fd2ba582 Start talking about the advantages of distributed tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 218
diff changeset
300
387
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
301 %The first generation began by managing single files on individual
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
302 %computers. Although these tools represented a huge advance over
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
303 %ad-hoc manual revision control, their locking model and reliance on a
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
304 %single computer limited them to small, tightly-knit teams.
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
305
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
306 $BBh0l@$Be$N%D!<%k$OC10l$N%U%!%$%k$r8DJL$N%3%s%T%e!<%?$N>e$G4IM}$7$?!%%"%I(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
307 $B%[%C%/$J<jF0$K$h$k%j%S%8%g%s%3%s%H%m!<%k$HHf$Y$FBgI}$J?JJb$,$"$C$?$,!$%m%C(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
308 $B%/%b%G%k$HC10l%3%s%T%e!<%?$X$N0MB8$N$?$a!$MxMQ$O>.5,LO$G6[L)$J%A!<%`$K8B(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
309 $B$i$l$?!%(B
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
310
387
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
311 %The second generation loosened these constraints by moving to
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
312 %network-centered architectures, and managing entire projects at a
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
313 %time. As projects grew larger, they ran into new problems. With
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
314 %clients needing to talk to servers very frequently, server scaling
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
315 %became an issue for large projects. An unreliable network connection
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
316 %could prevent remote users from being able to talk to the server at
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
317 %all. As open source projects started making read-only access
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
318 %available anonymously to anyone, people without commit privileges
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
319 %found that they could not use the tools to interact with a project in
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
320 %a natural way, as they could not record their changes.
219
15a6fd2ba582 Start talking about the advantages of distributed tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 218
diff changeset
321
387
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
322 $BBhFs@$Be$N%D!<%k$O!$%M%C%H%o!<%/Cf?4$N%"!<%-%F%/%A%c$K0\9T$9$k$3$H$G!$$=(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
323 $B$l$^$G$N@)8B$r4KOB$7!$%W%m%8%'%/%HA4BN$rF1;~$K4IM}$7$?!%%W%m%8%'%/%H$,Bg(B
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
324 $B$-$/@.D9$9$k$H!$?7$?$JLdBj$KD>LL$7$?!%%/%i%$%"%s%H$H%5!<%P$,IQHK$KDL?.$9(B
387
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
325 $B$k$?$a!$Bg5,LO%W%m%8%'%/%H$G$O%5!<%P$N5,LO$,LdBj$K$J$C$?!%?.Mj@-$N$J$$%M%C(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
326 $B%H%o!<%/@\B3$O%j%b!<%H%f!<%6$,%5!<%P$HDL?.$9$k$N$rK8$2$?!%%*!<%W%s%=!<%9(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
327 $B%W%m%8%'%/%H$,%3%_%C%H8"$N$J$$%f!<%6$K$bF?L>$NFI$_=P$7@lMQ%"%/%;%9$rDs6!(B
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
328 $B$9$k$h$&$K$J$k$H!$%f!<%6$i$O$3$l$i$N%D!<%k$,9T$C$?JQ99$r5-O?$G$-$:!$%W%m(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
329 $B%8%'%/%H$H$N$d$j$H$j$,ITJX$G$"$k$3$H$KITK~$rJg$i$;$F$$$C$?!%(B
387
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
330
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
331 %The current generation of revision control tools is peer-to-peer in
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
332 %nature. All of these systems have dropped the dependency on a single
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
333 %central server, and allow people to distribute their revision control
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
334 %data to where it's actually needed. Collaboration over the Internet
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
335 %has moved from constrained by technology to a matter of choice and
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
336 %consensus. Modern tools can operate offline indefinitely and
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
337 %autonomously, with a network connection only needed when syncing
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
338 %changes with another repository.
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
339
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
340 $B8=9T@$Be$N%j%S%8%g%s%3%s%H%m!<%k%D!<%k$O!$%T%"%D!<%T%"$G$"$k!%$3$l$i$N%7(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
341 $B%9%F%`$NA4$F$,C10l$NCf1{%5!<%P$X0MB8$7$J$/$J$C$F$*$j!$%j%S%8%g%s%3%s%H%m!<(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
342 $B%k%G!<%?$rI,MW$J$H$3$m$XJ,;6$5$;$k$3$H$,$G$-$k$h$&$K$J$C$F$$$k!%%$%s%?!<(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
343 $B%M%C%H$rDL$8$?6&F1:n6H$O5;=QE*@)Ls$+$iN%$l$F!$A*Br$H9g0U$K$h$C$F9T$o$l$k(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
344 $B$h$&$K$J$C$?!%8=Be$N%D!<%k$O%*%U%i%$%s$N$^$^$G$b!$<+N'E*$K$bF0:n$9$k$h$&(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
345 $B$K$J$C$F$$$k!%%M%C%H%o!<%/@\B3$OJQ99$rJL$N%j%]%8%H%j$HF14|$5$;$k;~$K$N$_(B
1604f2b2054b more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 386
diff changeset
346 $BI,MW$G$"$k!%(B
219
15a6fd2ba582 Start talking about the advantages of distributed tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 218
diff changeset
347
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
348 %\section{A few of the advantages of distributed revision control}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
349 \section{$BJ,;6%j%S%8%g%s%3%s%H%m!<%k$NMxE@(B}
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
350
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
351 %Even though distributed revision control tools have for several years
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
352 %been as robust and usable as their previous-generation counterparts,
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
353 %people using older tools have not yet necessarily woken up to their
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
354 %advantages. There are a number of ways in which distributed tools
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
355 %shine relative to centralised ones.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
356
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
357 $BJ,;6%j%S%8%g%s%3%s%H%m!<%k%D!<%k$O$b$&?tG/$bA0$+$iA0@$Be$N%D!<%k$HF1MM$K(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
358 $B7xO4$+$DM-MQ$J$b$N$HG'$a$i$l$F$$$k$K$b$+$+$o$i$:!$8E$$%D!<%k$N%f!<%6$?$A(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
359 $B$O$=$NMxE@$rCN$i$J$$!%J,;6%D!<%k$,Cf1{=8Cf%D!<%k$h$j$bM%$l$$$F$$$kE@$OB?!9(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
360 $B$"$k!%(B
219
15a6fd2ba582 Start talking about the advantages of distributed tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 218
diff changeset
361
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
362 %For an individual developer, distributed tools are almost always much
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
363 %faster than centralised tools. This is for a simple reason: a
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
364 %centralised tool needs to talk over the network for many common
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
365 %operations, because most metadata is stored in a single copy on the
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
366 %central server. A distributed tool stores all of its metadata
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
367 %locally. All else being equal, talking over the network adds overhead
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
368 %to a centralised tool. Don't underestimate the value of a snappy,
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
369 %responsive tool: you're going to spend a lot of time interacting with
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
370 %your revision control software.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
371
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
372 $B8D?M$N3+H/<T$K$H$C$F$O!$J,;6%D!<%k$O$[$H$s$I$N>l9g!$Cf1{=8Cf%D!<%k$h$j$b(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
373 $B9bB.$G$"$k!%$=$NM}M3$O!$Cf1{=8Cf%D!<%k$G$O$[$H$s$I$N%a%?%G!<%?$OCf1{%5!<(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
374 $B%P$GC10l%3%T!<$H$7$FJ]4I$5$l$F$*$j!$DL>o$N%*%Z%l!<%7%g%s$NB?$/$r%M%C%H%o!<(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
375 $B%/$r7PM3$7$F9T$&I,MW$,$"$k$+$i$@!%J,;6%D!<%k$OA4$F$N%a%?%G!<%?$r%m!<%+%k(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
376 $B$KJ]B8$9$k!%$=$NB>$bF1MM$G!$Cf1{=8Cf%D!<%k$O%M%C%H%o!<%/1[$7$NDL?.$K$h$C(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
377 $B$F%*!<%P%X%C%I$r@8$8$k!%3+H/Cf!$%j%S%8%g%s%3%s%H%m!<%k%=%U%H%&%'%"$NA`:n(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
378 $B$r4vEY$H$J$/9T$&$3$H$r9M$($l$P!$%D!<%k$N6O$+$J%*!<%P%X%C%I$G$b2a>.I>2A$9(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
379 $B$Y$-$G$O$J$$!%(B
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
380
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
381 %Distributed tools are indifferent to the vagaries of your server
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
382 %infrastructure, again because they replicate metadata to so many
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
383 %locations. If you use a centralised system and your server catches
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
384 %fire, you'd better hope that your backup media are reliable, and that
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
385 %your last backup was recent and actually worked. With a distributed
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
386 %tool, you have many backups available on every contributor's computer.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
387
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
388 $BJ,;6%D!<%k$O%a%?%G!<%?$rMM!9$J>l=j$KJ#@=$9$k$?$a!$%5!<%P%$%s%U%i%9%H%i%/(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
389 $B%A%c$N>c32$K4X$o$j$J$/F0:n$9$k!%$b$7Cf1{=8Cf%7%9%F%`$r;H$C$F$$$F!$%5!<%P(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
390 $B$,2P:R$K$"$C$?$H$7$?$i!$?.Mj$G$-$k%P%C%/%"%C%W%a%G%#%"$K:G6a:n@.$7$?%P%C(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
391 $B%/%"%C%W%3%T!<$,;D$C$F$*$j!$$=$l$,$^$H$b$K5!G=$9$k$3$H$r5'$k$3$H$K$J$k!%(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
392 $BJ,;6%D!<%k$G$O!$6(NO<T$N%3%s%T%e!<%?$NCf$K?tB?$/$N%P%C%/%"%C%W$,;D$5$l$F(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
393 $B$$$k!%(B
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
394
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
395 %The reliability of your network will affect distributed tools far less
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
396 %than it will centralised tools. You can't even use a centralised tool
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
397 %without a network connection, except for a few highly constrained
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
398 %commands. With a distributed tool, if your network connection goes
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
399 %down while you're working, you may not even notice. The only thing
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
400 %you won't be able to do is talk to repositories on other computers,
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
401 %something that is relatively rare compared with local operations. If
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
402 %you have a far-flung team of collaborators, this may be significant.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
403
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
404 $BJ,;6%D!<%k$G$O!$%M%C%H%o!<%/$N?.Mj@-$NM?$($k1F6A$O=8Cf%D!<%k$KHf$Y$FMZ$+(B
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
405 $B$K>.$5$$!%=8Cf%D!<%k$O!$%M%C%H%o!<%/$K@\B3$7$J$1$l$P!$Bg$-$J@)8B$N$"$k$$(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
406 $B$/$D$+$N%3%^%s%I0J30$O;HMQ$G$-$J$$!%J,;6%D!<%k$G$O:n6HCf$K%M%C%H%o!<%/@\(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
407 $BB3$,CG$?$l$?$H$7$F$b$=$l$K5$$E$/$3$H$9$i$J$$$@$m$&!%B>$N%3%s%T%e!<%?$N%j(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
408 $B%]%8%H%j$H$NDL?.$r9T$&F0:n$N$_$,1F6A$r<u$1$k!%$3$N$h$&$JF0:n$O%m!<%+%k$G(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
409 $B$NF0:n$h$jAjBPE*$K>/$J$$$O$:$@!%$3$l$,=EBg$JLdBj$H$J$k$N$O!$9-HO0O$K$o$?(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
410 $B$k%A!<%`$G:n6H$r$7$F$$$k>l9g$G$"$m$&!%(B
219
15a6fd2ba582 Start talking about the advantages of distributed tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 218
diff changeset
411
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
412 %\subsection{Advantages for open source projects}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
413 \subsection{$B%*!<%W%s%=!<%9%W%m%8%'%/%H$G$NMxE@(B}
220
0ca9045035f7 Advantages for open source and commercial tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 219
diff changeset
414
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
415 %If you take a shine to an open source project and decide that you
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
416 %would like to start hacking on it, and that project uses a distributed
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
417 %revision control tool, you are at once a peer with the people who
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
418 %consider themselves the ``core'' of that project. If they publish
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
419 %their repositories, you can immediately copy their project history,
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
420 %start making changes, and record your work, using the same tools in
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
421 %the same ways as insiders. By contrast, with a centralised tool, you
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
422 %must use the software in a ``read only'' mode unless someone grants
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
423 %you permission to commit changes to their central server. Until then,
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
424 %you won't be able to record changes, and your local modifications will
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
425 %be at risk of corruption any time you try to update your client's view
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
426 %of the repository.
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
427
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
428 $B%*!<%W%s%=!<%9%W%m%8%'%/%H$,9%$-$K$J$j!$:n6H$r;O$a$h$&$H$9$k$H$-!$%W%m%8%'(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
429 $B%/%H$,J,;6%j%S%8%g%s%3%s%H%m!<%k%D!<%k$r;H$C$F$$$l$P!$$?$@$A$K%W%m%8%'%/(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
430 $B%H$N%3%"%a%s%P!<$NCg4V$H$J$k!%H`$i$,%j%]%8%H%j$r8x3+$7$F$$$l$P!$D>$A$K%W(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
431 $B%m%8%'%/%HMzNr$r%3%T!<$7!$JQ99$r9T$$!$FbIt$N%a%s%P!<$,;H$C$F$$$k$N$HA4$/(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
432 $BF1$8%D!<%k$rMQ$$$F:n6H7k2L$r5-O?$9$k$3$H$,$G$-$k!%BP>NE*$K%a%s%P!<$,Cf1{(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
433 $B=8Cf7?$N%D!<%k$r;H$C$F$$$k>l9g!$C/$+$,$"$J$?$KJQ99$rCf1{$N%5!<%P$K%3%_%C(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
434 $B%H$9$k5v2D$rM?$($J$$8B$j!$%D!<%k$r%j!<%I%*%s%j!<%b!<%I$G;HMQ$9$k$3$H$K$J(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
435 $B$k!%$=$l$^$G$OJQ99$r5-O?$9$k$3$H$O$G$-$:!$$"$J$?$N%m!<%+%k$JJQ99$O%j%]%8(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
436 $B%H%j$N%/%i%$%"%s%H%3%T!<$r99?7$9$k$?$S$KGK2u$5$l$k%j%9%/$rH<$&!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
437
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
438 %\subsubsection{The forking non-problem}
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
439 \subsubsection{$B%U%)!<%/$7$F$bLdBj$J$7(B}
220
0ca9045035f7 Advantages for open source and commercial tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 219
diff changeset
440
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
441 %It has been suggested that distributed revision control tools pose
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
442 %some sort of risk to open source projects because they make it easy to
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
443 %``fork'' the development of a project. A fork happens when there are
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
444 %differences in opinion or attitude between groups of developers that
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
445 %cause them to decide that they can't work together any longer. Each
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
446 %side takes a more or less complete copy of the project's source code,
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
447 %and goes off in its own direction.
220
0ca9045035f7 Advantages for open source and commercial tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 219
diff changeset
448
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
449 $B%*!<%W%s%=!<%9%W%m%8%'%/%H$GJ,;6%j%S%8%g%s%3%s%H%m!<%k%D!<%k$rMQ$$$k$3$H(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
450 $B$O!$%W%m%8%'%/%H$N3+H/$r%U%)!<%/$5$;$k%j%9%/$,$"$k$H8@$o$l$F$$$k!%0U8+$N(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
451 $BAj0c$d!$3+H/<T$N%0%k!<%W4V$G$NBVEY$N0c$$$+$i!$H`$i$,$=$l0J>e6&$K:n6H$rB3(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
452 $B$1$k$3$H$,$G$-$J$$$H7hCG$9$k$3$H$G%U%)!<%/$O5/$3$k!%APJ}$N?X1D$O%W%m%8%'(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
453 $B%/%H$N%=!<%9%3!<%I$N$[$\40A4$J%3%T!<$+$i$=$l$>$l$NJ}8~$KJL$l$F$$$/!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
454
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
455 %Sometimes the camps in a fork decide to reconcile their differences.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
456 %With a centralised revision control system, the \emph{technical}
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
457 %process of reconciliation is painful, and has to be performed largely
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
458 %by hand. You have to decide whose revision history is going to
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
459 %``win'', and graft the other team's changes into the tree somehow.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
460 %This usually loses some or all of one side's revision history.
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
461
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
462 $B;~$K$O%U%)!<%/$7$??X1D$,!$8_$$$N%3!<%I$N:90[$r2r>C$9$k$3$H$b$"$k!%Cf1{=8(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
463 $BCf%j%S%8%g%s%3%s%H%m!<%k%7%9%F%`$G$O!$:90[$r(B\emph{$B5;=QE*$K(B}$B2r7h$9$k2aDx$K(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
464 $B:$Fq$rH<$$!$B?$/$N>l9g!$<jF0$G2r>C$9$kI,MW$,$"$k!%$I$N%j%S%8%g%sMzNr$r;D(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
465 $B$9$N$+7h$a!$$[$+$N%A!<%`$K$h$kJQ99$r%D%j!<$X$J$s$i$+$NJ}K!$G7Q$.LZ$9$kI,(B
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
466 $BMW$,$"$k!%$3$NA`:n$G$O!$DL>o!$0lJ}$N%j%S%8%g%sMzNr$N0lIt$^$?$OA4$F$r<:$&(B
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
467 $B$3$H$K$J$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
468
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
469 %What distributed tools do with respect to forking is they make forking
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
470 %the \emph{only} way to develop a project. Every single change that
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
471 %you make is potentially a fork point. The great strength of this
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
472 %approach is that a distributed revision control tool has to be really
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
473 %good at \emph{merging} forks, because forks are absolutely
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
474 %fundamental: they happen all the time.
220
0ca9045035f7 Advantages for open source and commercial tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 219
diff changeset
475
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
476 %$BJ,;6%D!<%k$O!$%U%)!<%/$rC1$K%W%m%8%'%/%H$r?J$a$k$?$a$N0l$D$NJ}K!$H$7$F07(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
477 %$B$&!%$9$Y$F$NJQ99$O@x:_E*$K%U%)!<%/%]%$%s%H$K$J$j$&$k!%$3$N%"%W%m!<%A$NM%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
478 %$B0LE@$O!$J,;6%j%S%8%g%s%3%s%H%m!<%k%D!<%k$O%U%)!<%/4V$N(B\emph{$B%^!<%8(B}$B$K6K$a(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
479 %$B$FM%$l$F$$$k$3$H$@!%%U%)!<%/$O@dBPE*$K4pACE*$J$3$H$G$"$k!'$3$l$O>o$K5/$3(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
480 %$B$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
481
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
482 $BJ,;6%D!<%k$O!$%U%)!<%/$r%W%m%8%'%/%H$r?J$a$k$?$a$N0l$D$NJ}K!$H$7$F07$&$K(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
483 $B$9$.$J$$!%9T$C$?JQ99$9$Y$F$O@x:_E*$K%U%)!<%/%]%$%s%H$K$J$j$&$k!%J,;6%j%S(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
484 $B%8%g%s%3%s%H%m!<%k%D!<%k$G$O!$%U%)!<%/$OF|>oE*$K5/$-!$$3$l$r<h$j07$&$3$H(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
485 $B$OF0:n$N:,K\$G$"$k!%$=$N$?$a%U%)!<%/4V$N(B\emph{$B%^!<%8(B}$B$K$O6K$a$FM%$l$F$*(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
486 $B$j!$$3$l$,J,;6%D!<%k$K$h$k%"%W%m!<%A$NBg$-$JMxE@$H$J$C$F$$$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
487
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
488 %If every piece of work that everybody does, all the time, is framed in
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
489 %terms of forking and merging, then what the open source world refers
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
490 %to as a ``fork'' becomes \emph{purely} a social issue. If anything,
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
491 %distributed tools \emph{lower} the likelihood of a fork:
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
492
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
493 $B3F?M$,9T$&A4$F$NItJ,:n6H$,%U%)!<%/$H%^!<%8$K0LCVIU$1$i$l$k$J$i$P!$%*!<%W(B
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
494 $B%s%=!<%93&$O(B``$B%U%)!<%/(B''$B$r(B\emph{$B=c?h$K(B}$B<R2qE*$J;v>]$H$7$F07$&$@$m$&!%$$$:(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
495 $B$l$K$;$hJ,;6%D!<%k$O%U%)!<%/$N38A3@-$r(B\emph{$B2<$2$k(B}$B!'(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
496
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
497 %\begin{itemize}
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
498 %\item They eliminate the social distinction that centralised tools
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
499 % impose: that between insiders (people with commit access) and
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
500 % outsiders (people without).
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
501 %\item They make it easier to reconcile after a social fork, because
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
502 % all that's involved from the perspective of the revision control
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
503 % software is just another merge.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
504 %\end{itemize}
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
505 \begin{itemize}
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
506 \item $BCf1{=8CfE*$J%D!<%k$,2]$9!$%3%_%C%H8"$r;}$C$?FbIt$N?M4V$H;}$?$J$$30(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
507 $BIt$N?M4V$N<R2qE*$J6hJL$r<h$j5n$k(B
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
508 \item $B%j%S%8%g%s%3%s%H%m!<%k%=%U%H%&%'%"$N4QE@$+$i$OF1$8%^!<%8$G$"$k$?(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
509 $B$a!$3+H/%3%_%e%K%F%#$N%U%)!<%/8e$K@8$8$?:90[$r2r>C$9$k$N$,MF0W$K$J(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
510 $B$k!%(B
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
511 \end{itemize}
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
512
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
513
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
514 %Some people resist distributed tools because they want to retain tight
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
515 %control over their projects, and they believe that centralised tools
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
516 %give them this control. However, if you're of this belief, and you
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
517 %publish your CVS or Subversion repositories publically, there are
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
518 %plenty of tools available that can pull out your entire project's
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
519 %history (albeit slowly) and recreate it somewhere that you don't
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
520 %control. So while your control in this case is illusory, you are
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
521 %forgoing the ability to fluidly collaborate with whatever people feel
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
522 %compelled to mirror and fork your history.
220
0ca9045035f7 Advantages for open source and commercial tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 219
diff changeset
523
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
524 $B%W%m%8%'%/%H$r873J$K%3%s%H%m!<%k$7$?$$$?$a$KJ,;6%D!<%k$K93$&?M!9$b$$$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
525 $BH`$i$OCf1{=8Cf%D!<%k$,$3$N$h$&$J%3%s%H%m!<%k$rM?$($k$H9M$($F$$$k!%$7$+$7(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
526 $B$=$&;W$C$F$$$F$b!$(BCVS$B$d(BSubversion$B%j%]%8%H%j$r8x3+$9$l$P!$(B $B!J;~4V$O$+$+$C(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
527 $B$F$b!K%W%m%8%'%/%H$NMzNrA4BN$r<hF@$7$F!$%3%s%H%m!<%k$N<j$N5Z$P$J$$$I$3$+(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
528 $B$G$=$l$r:F8=$9$kJ}K!$O$$$/$i$G$b$"$k!%7k6I!$MzNr$r%_%i!<$7!$%U%)!<%/$9$k(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
529 $B$h$&$JN.F0E*$J6(NO$rGS=|$9$k$h$&$J%3%s%H%m!<%k$OHs8=<BE*$G$"$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
530
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
531 %\subsection{Advantages for commercial projects}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
532 \subsection{$B>&MQ%W%m%8%'%/%H$G$NMxE@(B}
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
533
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
534 %Many commercial projects are undertaken by teams that are scattered
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
535 %across the globe. Contributors who are far from a central server will
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
536 %see slower command execution and perhaps less reliability. Commercial
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
537 %revision control systems attempt to ameliorate these problems with
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
538 %remote-site replication add-ons that are typically expensive to buy
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
539 %and cantankerous to administer. A distributed system doesn't suffer
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
540 %from these problems in the first place. Better yet, you can easily
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
541 %set up multiple authoritative servers, say one per site, so that
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
542 %there's no redundant communication between repositories over expensive
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
543 %long-haul network links.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
544
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
545 $B>&MQ%W%m%8%'%/%H$NB?$/$OCOM}E*$K9-$,$C$?%A!<%`$K$h$C$F3+H/$5$l$F$$$k!%Cf(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
546 $B1{%5!<%P$O!$1s$/N%$l$?6(NO<T$+$i$O%3%^%s%I<B9T$,CY$+$C$?$j!$?.Mj@-$,Dc$+$C(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
547 $B$?$j$9$k$h$&$K8+$($k!%>&MQ%j%S%8%g%s%3%s%H%m!<%k%7%9%F%`$O$3$NLdBj$N2r7h(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
548 $B$K%j%b!<%H%5%$%H$NJ#@=$r:n@.$9$k%"%I%*%s$rDs6!$7$F$$$k!%$3$l$i$NB?$/$O9b(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
549 $B2A$@$C$?$j!$4IM}$,J#;($@$H$$$&LdBj$r;}$C$F$$$k!%J,;6%7%9%F%`$K$O$=$b$=$b(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
550 $B$3$l$i$NLdBj$,$J$$!%$5$i$K9%$^$7$$$3$H$K!$J#?t$N%5%$%HKh$K@5<0$J%5!<%P$r(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
551 $B4JC1$K@_Dj$9$k$3$H$,$G$-!$9b2A$JD95wN%$N%M%C%H%o!<%/%j%s%/>e$K>iD9$JDL?.(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
552 $B$r9T$&$3$H$,$J$$!%(B
220
0ca9045035f7 Advantages for open source and commercial tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 219
diff changeset
553
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
554 %Centralised revision control systems tend to have relatively low
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
555 %scalability. It's not unusual for an expensive centralised system to
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
556 %fall over under the combined load of just a few dozen concurrent
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
557 %users. Once again, the typical response tends to be an expensive and
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
558 %clunky replication facility. Since the load on a central server---if
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
559 %you have one at all---is many times lower with a distributed
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
560 %tool (because all of the data is replicated everywhere), a single
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
561 %cheap server can handle the needs of a much larger team, and
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
562 %replication to balance load becomes a simple matter of scripting.
220
0ca9045035f7 Advantages for open source and commercial tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 219
diff changeset
563
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
564 $BCf1{=8Cf7?$N%j%S%8%g%s%3%s%H%m!<%k%7%9%F%`$N%9%1!<%i%S%j%F%#$OAjBPE*$K>.(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
565 $B$5$/!$?t==?M$N%f!<%6$NF1;~%"%/%;%9$K$h$kIi2Y$GCf1{$N9b2A$J%7%9%F%`$,Dd;_(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
566 $B$9$k$3$H$bDA$7$/$J$$!%$7$+$7!$$3$l$K9b2A$GJ#;($JJ#@=5!G=$rDI2C$9$k$3$H$,(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
567 $B$h$/9T$o$F$7$^$&!%$?$@0l$D$NCf1{%5!<%P$N$_$r;}$D>l9g$G$b!$J,;6%D!<%k$rMQ(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
568 $B$$$k$3$H$G!J%G!<%?$O$9$Y$F$"$i$f$k$H$3$m$KJ#@=$5$l$k$?$a!KCf1{%5!<%P$NIi(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
569 $B2Y$O?tJ,$N0l$KM^$($i$l$k!%$3$N$?$aC10l$N0B2A$J%5!<%P$GBg$-$J%A!<%`$N<{MW(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
570 $B$rK~$?$9$3$H$,$G$-!$Ii2YJ,;6$N$?$a$N%G!<%?$NJ#@=$b%9%/%j%W%H$@$1$G<B8=$G(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
571 $B$-$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
572
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
573 %If you have an employee in the field, troubleshooting a problem at a
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
574 %customer's site, they'll benefit from distributed revision control.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
575 %The tool will let them generate custom builds, try different fixes in
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
576 %isolation from each other, and search efficiently through history for
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
577 %the sources of bugs and regressions in the customer's environment, all
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
578 %without needing to connect to your company's network.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
579
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
580 $B8\5R$NB&$G$3$NNN0h$NLdBj2r7h$r9T$&=>6H0w$,$$$l$P!$J,;6%j%S%8%g%s%3%s%H%m!<(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
581 $B%k$NMx1W$rF@$k$3$H$,$G$-$k!%%D!<%k$r;H$&$3$H$G!$%+%9%?%`%S%k%I!$8_$$$KFH(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
582 $BN)$7$?=$@5$N%F%9%H!$%W%m%8%'%/%H$NMzNr$+$i%P%0$d%j%0%l%C%7%g%s$N860x$NC5(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
583 $B:w$J$I$r8\5R$N4D6-$G%M%C%H%o!<%/$K@\B3$9$kI,MW$J$/<B8=$G$-$k!%(B
219
15a6fd2ba582 Start talking about the advantages of distributed tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 218
diff changeset
584
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
585 %\section{Why choose Mercurial?}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
586 \section{Mercurial$B$rA*$VM}M3(B}
155
914babdc99c8 run-example: better error if bogus section name found.
Bryan O'Sullivan <bos@serpentine.com>
parents: 16
diff changeset
587
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
588 %Mercurial has a unique set of properties that make it a particularly
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
589 %good choice as a revision control system.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
590 Mercurial$B$O!$%j%S%8%g%s%3%s%H%m!<%k%7%9%F%`$H$7$FA*Br$9$k$N$K$U$5$o$7$$(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
591 $B%f%K!<%/$J@-<A$r;}$C$F$$$k!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
592 \begin{itemize}
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
593 %\item It is easy to learn and use.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
594 %\item It is lightweight.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
595 %\item It scales excellently.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
596 %\item It is easy to customise.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
597 \item $B3X=,$HMxMQ$,4JC1(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
598 \item $B7ZNL$G$"$k(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
599 \item $B6K$a$FNI9%$K%9%1!<%k$9$k(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
600 \item $B%+%9%?%^%$%:$,MF0W$G$"$k(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
601 \end{itemize}
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
602
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
603 %If you are at all familiar with revision control systems, you should
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
604 %be able to get up and running with Mercurial in less than five
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
605 %minutes. Even if not, it will take no more than a few minutes
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
606 %longer. Mercurial's command and feature sets are generally uniform
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
607 %and consistent, so you can keep track of a few general rules instead
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
608 %of a host of exceptions.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
609
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
610 $BFI<T$,%j%S%8%g%s%3%s%H%m!<%k$K47$l$F$$$k$N$G$"$l$P!$(B Mercurial$B$r(B5$BJ,0JFb$K(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
611 $B;H$$;O$a$k$3$H$,$G$-$k$@$m$&!%(B $B2>$K(B5$BJ,$,L5M}$G$b!$$"$H?tJ,$b$"$l$P==J,$K(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
612 $B0c$$$J$$!%(B Mercurial$B$N%3%^%s%I$H5!G=%;%C%H$OA4BN$K6Q0l$G0l4S@-$,$"$k$N(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
613 $B$G!$B??t$NNc30$r3P$($k$N$G$O$J$/!$6&DL$9$k%k!<%k$5$(3P$($F$*$1$P$h$$!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
614
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
615 %On a small project, you can start working with Mercurial in moments.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
616 %Creating new changes and branches; transferring changes around
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
617 %(whether locally or over a network); and history and status operations
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
618 %are all fast. Mercurial attempts to stay nimble and largely out of
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
619 %your way by combining low cognitive overhead with blazingly fast
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
620 %operations.
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
621
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
622 $B>.$5$J%W%m%8%'%/%H$G$O!$$9$0$K(BMercurial$B$r;H$$;O$a$k$3$H$,$G$-$k!%?7$7$$JQ(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
623 $B99$H%V%i%s%A$r:n$j!$!J%m!<%+%k$d%M%C%H%o!<%/1[$7$K!KJQ99$rE>Aw$7!$MzNr$H(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
624 $B>uBV$K4X$9$kF0:n$O$9$Y$F9bB.$G$"$k!%(B Mercurial$B$N8D!9$NF0:n$O6K$a$F9bB.$G(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
625 $B$"$j!$A4BN$H$7$F$bAGAa$/!$%*!<%P%X%C%I$,$[$H$s$ICN3P$G$-$J$$$h$&$JF0:n$r(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
626 $B$9$k$h$&$K$J$C$F$$$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
627
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
628 %The usefulness of Mercurial is not limited to small projects: it is
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
629 %used by projects with hundreds to thousands of contributors, each
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
630 %containing tens of thousands of files and hundreds of megabytes of
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
631 %source code.
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
632
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
633 Mercurial$B$NM-MQ@-$O!$>.$5$J%W%m%8%'%/%H$K8B$i$J$$!%(BMercurial$B$O?tI4?M$+$i(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
634 $B?t@i?M$N9W8%<T$rMJ$7!$?tK|$N%U%!%$%k$+$i$J$k?tI4%a%,%P%$%H$K$b5Z$V%=!<%9(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
635 $B%3!<%I$+$i$J$k%W%m%8%'%/%H$G$bM-8z$G$"$k!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
636
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
637 %If the core functionality of Mercurial is not enough for you, it's
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
638 %easy to build on. Mercurial is well suited to scripting tasks, and
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
639 %its clean internals and implementation in Python make it easy to add
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
640 %features in the form of extensions. There are a number of popular and
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
641 %useful extensions already available, ranging from helping to identify
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
642 %bugs to improving performance.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
643
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
644 Mercurial$B$N3K$K$J$k5!G=$,==J,$G$J$+$C$?>l9g!$3HD%$9$k$3$H$O$?$d$9$$!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
645 Mercurial$B$O%9%/%j%W%H$H$h$/Fk@w$`!%$^$?@0$C$?FbIt9=B$$H(BPython$B$K$h$k<BAu$N(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
646 $B$?$a!$3HD%$N7A$G?7$7$$5!G=$rDI2C$9$k$N$,MF0W$G$"$k!%%P%0$N<1JL$r=u$1$k$b(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
647 $B$N$+$i!$@-G=$r2~A1$9$k$b$N$^$G!$?M5$$N9b$$M-MQ$J3HD%$,$9$G$K?tB?$/B8:_$7(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
648 $B$F$$$k!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
649
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
650 %\section{Mercurial compared with other tools}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
651 \section{Mercurial$B$HB>$N%D!<%k$NHf3S(B}
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
652
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
653 %Before you read on, please understand that this section necessarily
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
654 %reflects my own experiences, interests, and (dare I say it) biases. I
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
655 %have used every one of the revision control tools listed below, in
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
656 %most cases for several years at a time.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
657
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
658 $B$3$N@a$rFI$`A0$K!$$3$l$OI.<T<+?H$NBN83$H6=L#!$$=$7$F!J4:$($F8@$($P!K%P%$(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
659 $B%"%9$,$+$+$C$F$$$k$3$H$rM}2r$7$FM_$7$$!%I.<T$O2<5-$N%j%S%8%g%s%3%s%H%m!<(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
660 $B%k%D!<%k$N$9$Y$F$r;HMQ$7$?$3$H$,$"$j!$$=$N;HMQ4|4V$OB?$/$N>l9g?tG/$K5Z$V!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
661
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
662 \subsection{Subversion}
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
663
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
664 %Subversion is a popular revision control tool, developed to replace
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
665 %CVS. It has a centralised client/server architecture.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
666
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
667 Subversion$B$O!$(BCVS$B$rCV$-49$($k$Y$/3+H/$5$l$?!$?M5$$N9b$$%j%S%8%g%s%3%s%H%m!<(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
668 $B%k%D!<%k$G$"$k!%$3$l$bCf1{=8Cf7?$N%/%i%$%"%s%H%5!<%P%"!<%-%F%/%A%c$r;}$D!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
669
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
670 %Subversion and Mercurial have similarly named commands for performing
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
671 %the same operations, so if you're familiar with one, it is easy to
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
672 %learn to use the other. Both tools are portable to all popular
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
673 %operating systems.
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
674
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
675 Subversion$B$H(BMercurial$B$G$O!$F1$8F0:n$N$?$a$N%3%^%s%I$KF1MM$NL>A0$,IU$1$i$l(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
676 $B$F$$$k$?$a!$$I$A$i$+$K47$l$F$$$l$P$b$&0lJ}$r3X$V$N$O$?$d$9$$!%$I$A$i$N%D!<(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
677 $B%k$b$9$Y$F$N?M5$$N9b$$%*%Z%l!<%F%#%s%0%7%9%F%`$K0\?"$5$l$F$$$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
678
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
679 %Subversion lacks a history-aware merge capability, forcing its users
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
680 %to manually track exactly which revisions have been merged between
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
681 %branches. If users fail to do this, or make mistakes, they face the
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
682 %prospect of manually resolving merges with unnecessary conflicts.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
683 %Subversion also fails to merge changes when files or directories are
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
684 %renamed. Subversion's poor merge support is its single biggest
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
685 %weakness.
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
686
790
ac38c95a2ace Propagate 231c8469a0ec
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 389
diff changeset
687 %Subversion$B$OMzNr$r9MN8$7$?%^!<%8$N5!G=$r7g$$$F$*$j!$@53N$K$I$N%j%S%8%g%s(B
ac38c95a2ace Propagate 231c8469a0ec
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 389
diff changeset
688 %$B$,%V%i%s%A4V$G%^!<%8$5$l$?$N$+%f!<%6<+?H$,%H%i%C%/$9$kI,MW$,$"$k!#%f!<%6(B
ac38c95a2ace Propagate 231c8469a0ec
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 389
diff changeset
689 %$B$,DI$$@Z$l$J$+$C$?>l9g$d4V0c$$$rHH$7$?>l9g!$I,MW$N$J$$%3%s%U%j%/%H$r<jF0(B
ac38c95a2ace Propagate 231c8469a0ec
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 389
diff changeset
690 %$B$G2r7h$9$k$3$H$K$J$k!%(BSubversion$B$O%U%!%$%k$d%G%#%l%/%H%j$,%j%M!<%`$5$l$F(B
ac38c95a2ace Propagate 231c8469a0ec
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 389
diff changeset
691 %$B$$$?>l9g$b%^!<%8$K<:GT$9$k!%%^!<%8%5%]!<%H$N<e$5$O(BSubversion$B$N:GBg$N<eE@(B
ac38c95a2ace Propagate 231c8469a0ec
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 389
diff changeset
692 %$B$N0l$D$G$"$k!%(B
256
649a93bb45ae Fiddle with the sections on SVN and CVS.
Bryan O'Sullivan <bos@serpentine.com>
parents: 221
diff changeset
693
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
694 %Mercurial has a substantial performance advantage over Subversion on
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
695 %every revision control operation I have benchmarked. I have measured
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
696 %its advantage as ranging from a factor of two to a factor of six when
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
697 %compared with Subversion~1.4.3's \emph{ra\_local} file store, which is
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
698 %the fastest access method available. In more realistic deployments
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
699 %involving a network-based store, Subversion will be at a substantially
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
700 %larger disadvantage. Because many Subversion commands must talk to
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
701 %the server and Subversion does not have useful replication facilities,
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
702 %server capacity and network bandwidth become bottlenecks for modestly
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
703 %large projects.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
704
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
705 Mercurial$B$OI.<T$,%Y%s%A%^!<%/$r9T$C$?A4$F$N%j%S%8%g%s%3%s%H%m!<%kA`:n$K$*(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
706 $B$$$F(BSubversion$B$h$j$bL@3N$J@-G=>e$NM%0L@-$r;}$C$F$$$k!%I.<T$O(B2$B$+$i(B6$B$^$G$N(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
707 $BHO0O$GM%0L@-$r(BSubversion~1.4.3$B$GMxMQ2DG=$JCf$G:G$b9bB.$J(B\emph{ra\_$B%m!<%+(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
708 $B%k(B}$B%U%!%$%kJ]B8$HHf3S$7$?!%$h$j8=<BE*$JMxMQ$G$O%M%C%H%o!<%/$rMxMQ$7$?%U%!(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
709 $B%$%k%5!<%S%9$rMQ$$$k$3$H$K$J$j!$(BSubversion$B$G$OL@3N$KBg$-$JITMx$,$"$k!%B?(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
710 $B$/$N(BSubversion$B%3%^%s%I$O%5!<%P$HDL?.$9$kI,MW$,$"$j!$(BSubversion$B$O<BMQE*$J(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
711 $BJ#@=5!9=$r;}$?$J$$$?$a!$0lDj0J>e$N5,LO$N%W%m%8%'%/%H$G$O!$%5!<%P%-%c%Q%7(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
712 $B%F%#$H%M%C%H%o!<%/$N%P%s%II}$,%\%H%k%M%C%/$H$J$k$+$i$G$"$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
713
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
714 %Additionally, Subversion incurs substantial storage overhead to avoid
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
715 %network transactions for a few common operations, such as finding
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
716 %modified files (\texttt{status}) and displaying modifications against
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
717 %the current revision (\texttt{diff}). As a result, a Subversion
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
718 %working copy is often the same size as, or larger than, a Mercurial
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
719 %repository and working directory, even though the Mercurial repository
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
720 %contains a complete history of the project.
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
721
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
722 $B$5$i$K!$(BSubversion$B$O99?7$5$l$?%U%!%$%k$NC5:w(B(\texttt{status})$B$H!$8=:_$N%j(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
723 $B%S%8%g%s$KBP$9$k:9J,$N$rI=<((B(\texttt{diff})$B$J$I$N$$$/$D$+$NA`:n$G%M%C%H%o!<(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
724 $B%/%H%i%s%6%/%7%g%s$rHr$1$k$?$a$KL@3N$J%9%H%l!<%8%*!<%P%X%C%I$r$b$?$i$9!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
725 $B7k2L$H$7$F!$(BSubversion$B$N%o!<%-%s%0%3%T!<$O!$%W%m%8%'%/%H$N40A4$JMzNr$r4^(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
726 $B$`(BMercurial$B$N%j%]%8%H%j5Z$S%o!<%-%s%0%G%#%l%/%H%j$HF1$8$+$h$jBg$-$J%5%$%:(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
727 $B$H$J$C$F$7$^$&!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
728
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
729 %Subversion is widely supported by third party tools. Mercurial
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
730 %currently lags considerably in this area. This gap is closing,
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
731 %however, and indeed some of Mercurial's GUI tools now outshine their
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
732 %Subversion equivalents. Like Mercurial, Subversion has an excellent
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
733 %user manual.
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
734
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
735 Subversion$B$K$OB?$/$N%5!<%I%Q!<%F%#%D!<%k$,$"$k!%(BMercurial$B$O$3$NE@$G$+$J$j(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
736 $BCY$l$F$$$k!%%.%c%C%W$O=L$^$j$D$D$"$k$,!$(BMercurial$B$N(BGUI$B%D!<%k$N$$$/$D$+(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
737 $B$O!$BP1~$9$k(BSubversion$BMQ$N$b$N$h$j$b=($G$F$$$k!%(BSubversion$B$K$O(BMercurial$B$H(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
738 $BF1MM$KM%$l$?%f!<%6%^%K%e%"%k$,$"$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
739
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
740 %Because Subversion doesn't store revision history on the client, it is
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
741 %well suited to managing projects that deal with lots of large, opaque
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
742 %binary files. If you check in fifty revisions to an incompressible
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
743 %10MB file, Subversion's client-side space usage stays constant. The
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
744 %space used by any distributed SCM will grow rapidly in proportion to
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
745 %the number of revisions, because the differences between each revision
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
746 %are large.
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
747
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
748 Subversion$B$O%j%S%8%g%s$NMzNr$r%/%i%$%"%s%HFb$K;}$?$J$$$?$a!$%5%$%:$,Bg$-(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
749 $B$/FbMF$NL@$i$+$G$J$$B??t$N%P%$%J%j%U%!%$%k$r<h$j07$&$N$K$O8~$$$F$$$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
750 $B05=L$N8z$+$J$$(B10MB$B$N%U%!%$%k$KBP$7$F(B50$B%j%S%8%g%s$r%A%'%C%/%$%s$9$k>l(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
751 $B9g!$(BSubversion$B$N%/%i%$%"%s%HB&$N%9%H%l!<%8$N;HMQNL$O0lDj$G$"$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
752 $BJ,;6(BSCM$B$G$O!$%9%H%l!<%8;HMQNL$O3F!9$N%j%S%8%g%s4V$G$N:9J,$,Bg$-$$$?$a!$%j(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
753 $B%S%8%g%s?t$KHfNc$7$F$9$0$KA}$($F$7$^$&!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
754
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
755 %In addition, it's often difficult or, more usually, impossible to
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
756 %merge different versions of a binary file. Subversion's ability to
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
757 %let a user lock a file, so that they temporarily have the exclusive
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
758 %right to commit changes to it, can be a significant advantage to a
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
759 %project where binary files are widely used.
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
760
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
761 $B2C$($F!$0[$J$k%P!<%8%g%s$N%P%$%J%j%U%!%$%k$r%^!<%8$9$k$N$OIT2DG=$G$"$C$?(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
762 $B$j!$:$Fq$G$"$C$?$j$9$k!%(B Subversion$B$G$O%U%!%$%k%m%C%/5!G=$K$h$C$F%f!<%6$,(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
763 $B0l;~E*$K%U%!%$%k$X$NJQ99$r%3%_%C%H$9$kGSB>E*$J8"Mx$rF@$k$3$H$,$G$-$k!%$3(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
764 $B$l$O%P%$%J%j%U%!%$%k$r9-HF$K;H$&%W%m%8%'%/%H$G$OBg$-$JMxE@$K$J$jF@$k!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
765
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
766 %Mercurial can import revision history from a Subversion repository.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
767 %It can also export revision history to a Subversion repository. This
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
768 %makes it easy to ``test the waters'' and use Mercurial and Subversion
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
769 %in parallel before deciding to switch. History conversion is
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
770 %incremental, so you can perform an initial conversion, then small
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
771 %additional conversions afterwards to bring in new changes.
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
772
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
773 Mercurial$B$O(BSubversion$B%j%]%8%H%j$+$i%j%S%8%g%sMzNr$r%$%s%]!<%H$9$k$3$H$,$G(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
774 $B$-$k!%$^$?!$%j%S%8%g%sMzNr$r(BSubversion$B%j%]%8%H%j$K%(%/%9%]!<%H$9$k$3$H$b(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
775 $B2DG=$@!%$3$N$?$a!$0\9T$r7h$a$kA0$K(BMercurial$B$r;n$7$?$j!$(BMercurial$B$r(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
776 Subversion$B$HJB9T$7$FMxMQ$9$k$3$H$,MF0W$G$"$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
777 $BMzNr$NJQ49$OA2?JE*$K9T$($k$?$a!$:G=i$KJQ49$r9T$C$?8e!$?7$?$JJQ99$r<h$j9~(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
778 $B$`$?$a$KDI2C$NJQ49$r9T$&$3$H$,$G$-$k!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
779
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
780 \subsection{Git}
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
781
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
782 %Git is a distributed revision control tool that was developed for
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
783 %managing the Linux kernel source tree. Like Mercurial, its early
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
784 %design was somewhat influenced by Monotone.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
785
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
786 Git$B$O(BLinux$B%+!<%M%k$N%=!<%9%D%j!<$r07$&$?$a$K3+H/$5$l$?J,;6%j%S%8%g%s%3%s(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
787 $B%H%m!<%k%D!<%k$G$"$k!%(B Mercurial$BF1MM!$$=$N=i4|$N%G%6%$%s$OB?>/(BMonotone$B$K(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
788 $B1F6A$r<u$1$F$$$k!%(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
789
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
790 %Git has a very large command set, with version~1.5.0 providing~139
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
791 %individual commands. It has something of a reputation for being
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
792 %difficult to learn. Compared to Git, Mercurial has a strong focus on
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
793 %simplicity.
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
794
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
795 Git$B$OHs>o$KBg5,LO$J%3%^%s%I%;%C%H$r;}$C$F$$$k!%(Bversion~1.5.0$B$G$O(B~139$B$K$b(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
796 $B5Z$V%3%^%s%I$,MQ0U$5$l$F$$$k!%$3$N$?$a!$(BGit$B$O$7$P$7$P=,F@$7$E$i$$$H$$$&(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
797 $BI>H=$5$l$F$$$k!%(BMercurial$B$O(BGit$B$HHf$Y$k$H4J7i$5$K6/$/%U%)!<%+%9$7$F$$$k!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
798
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
799 %In terms of performance, Git is extremely fast. In several cases, it
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
800 %is faster than Mercurial, at least on Linux, while Mercurial performs
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
801 %better on other operations. However, on Windows, the performance and
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
802 %general level of support that Git provides is, at the time of writing,
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
803 %far behind that of Mercurial.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
804
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
805 $B@-G=$K4X$7$F$O!$(BGit$B$O6K$a$F9bB.$G$"$k!%(BLinux$B4D6-$G$N%F%9%H$G$O!$$$$/$D$+(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
806 $B$NA`:n$O(BGit$B$O(BMercurial$B$h$j$b9bB.$G$"$C$?!%$7$+$7(BWindows$B4D6-$G$O!$$3$NK\$N(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
807 $B<9I.;~E@$G$O!$@-G=$d(BGit$B$NDs6!$9$k5!G=$O(BMercurial$B$KBg$-$/Nt$C$?!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
808
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
809 %While a Mercurial repository needs no maintenance, a Git repository
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
810 %requires frequent manual ``repacks'' of its metadata. Without these,
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
811 %performance degrades, while space usage grows rapidly. A server that
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
812 %contains many Git repositories that are not rigorously and frequently
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
813 %repacked will become heavily disk-bound during backups, and there have
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
814 %been instances of daily backups taking far longer than~24 hours as a
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
815 %result. A freshly packed Git repository is slightly smaller than a
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
816 %Mercurial repository, but an unpacked repository is several orders of
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
817 %magnitude larger.
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
818
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
819 Mercurial$B%j%]%8%H%j$O%a%s%F%J%s%9$rI,MW$H$7$J$$$,!$(BGit$B%j%]%8%H%j$O$7$P$7(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
820 $B$P<jF0$G%a%?%G!<%?$N(B``repacks''$B$,I,MW$H$J$k!%$3$l$r9T$o$J$$>l9g!$@-G=$ONt(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
821 $B2=$7!$I,MW$J5-21NN0h$b5^B.$K3HBg$9$k!%(BGit$B%j%]%8%H%j$r5,B'@5$7$/IQHK$K(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
822 repack$B$7$J$$%5!<%P$G$O%P%C%/%"%C%W$N:]$K%G%#%9%/;HMQ$,6K$a$FB?$/$J$j!$7k(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
823 $B2L$H$7$FKhF|$N%P%C%/%"%C%W$K(B~24$B;~4V0J>e$rHq$d$9$3$H$K$J$k!%(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
824 $B?75,$K(Bpack$B$5$l$?(BGit$B%j%]%8%H%j$O(BMercurial$B%j%]%8%H%j$h$j$d$d>.$5$$(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
825 $B$,!$(Bunpack$B>uBV$N(BGit$B%j%]%8%H%j$O?tCJBg$-$/$J$k!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
826
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
827 %The core of Git is written in C. Many Git commands are implemented as
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
828 %shell or Perl scripts, and the quality of these scripts varies widely.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
829 %I have encountered several instances where scripts charged along
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
830 %blindly in the presence of errors that should have been fatal.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
831
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
832 Git$B$N%3%"$O(BC$B$G=q$+$l$F$$$k!%(BGit$B%3%^%s%I$NB?$/$O%7%'%k$d(BPerl$B$N%9%/%j%W%H$H(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
833 $B$7$F<BAu$5$l$F$*$j!$$=$l$i$N%9%/%j%W%H$NIJ<A$OMM!9$G$"$k!%?tEY$K$o$?$C$F(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
834 $BCWL?E*$J%(%i!<$,$"$k$K$b$+$+$o$i$:!$%9%/%j%W%H$,LULGK!$KF0:n$9$k$3$H$rBN(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
835 $B83$7$?!%(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
836
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
837 %Mercurial can import revision history from a Git repository.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
838
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
839 Mercurial$B$O(BGit$B%j%]%8%H%j$+$i%j%S%8%g%sMzNr$r%$%s%]!<%H$9$k$3$H$,$G$-$k!%(B
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
840
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
841 \subsection{CVS}
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
842
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
843 %CVS is probably the most widely used revision control tool in the
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
844 %world. Due to its age and internal untidiness, it has been only
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
845 %lightly maintained for many years.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
846
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
847 CVS$B$O$*$=$i$/@$3&Cf$G:G$b9-HO$K;HMQ$5$l$F$$$k%j%S%8%g%s%3%s%H%m!<%k%D!<(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
848 $B%k$G$"$m$&!%$=$N8E$5$HFbIt$NMp;($5$N$?$a!$D9$i$/7Z$$%a%s%F%J%s%9$N$_$,9T(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
849 $B$o$l$F$-$?!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
850
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
851 %It has a centralised client/server architecture. It does not group
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
852 %related file changes into atomic commits, making it easy for people to
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
853 %``break the build'': one person can successfully commit part of a
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
854 %change and then be blocked by the need for a merge, causing other
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
855 %people to see only a portion of the work they intended to do. This
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
856 %also affects how you work with project history. If you want to see
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
857 %all of the modifications someone made as part of a task, you will need
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
858 %to manually inspect the descriptions and timestamps of the changes
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
859 %made to each file involved (if you even know what those files were).
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
860
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
861 CVS$B$O=8Cf7?$N%/%i%$%"%s%H%5!<%P%"!<%-%F%/%A%c$r;}$D!%(BCVS$B$O!$4XO"$7$?%U%!(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
862 $B%$%kJQ99$r%0%k!<%W2=$7!$%"%H%_%C%/$K%3%_%C%H$9$k$3$H$,$G$-$J$$!%$3$N$?$a(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
863 $B%f!<%6$,%3%_%C%H$K$h$C$F%S%k%I$rGK2u$9$k$3$H$,5/$3$k!%C/$+$,JQ99$N0lIt$r(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
864 $B@.8yN"$K%3%_%C%H$7$?$b$N$N!$;D$j$NItJ,$O%^!<%8$,I,MW$J$?$a%V%m%C%/$5$l$F(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
865 $B$$$k>l9g!$B>$N%f!<%6$OI,MW$JJQ99$N0lIt$7$+8+$k$3$H$,$G$-$J$$!%F1$8$3$H$O(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
866 $B%W%m%8%'%/%H$NMzNr$KBP$7$F$b5/$3$k!%C/$+$N:n6H$K4X78$9$kJQ99$9$Y$F$r;2>H(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
867 $B$7$?$$>l9g!$!J$I$N%U%!%$%k$,2?$J$N$+CN$C$F$$$l$P!K4XO"$9$k3F%U%!%$%k$K$D(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
868 $B$$$F!$JQ99$N@bL@$H%?%$%`%9%?%s%W$r<+NO$GD4$Y$FJQ99$rFCDj$9$kI,MW$,$"$k!%(B
256
649a93bb45ae Fiddle with the sections on SVN and CVS.
Bryan O'Sullivan <bos@serpentine.com>
parents: 221
diff changeset
869
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
870 %CVS has a muddled notion of tags and branches that I will not attempt
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
871 %to even describe. It does not support renaming of files or
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
872 %directories well, making it easy to corrupt a repository. It has
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
873 %almost no internal consistency checking capabilities, so it is usually
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
874 %not even possible to tell whether or how a repository is corrupt. I
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
875 %would not recommend CVS for any project, existing or new.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
876
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
877 CVS$B$N%?%0$H%V%i%s%A$O8l$k5$$5$(5/$-$J$$$h$&$J:.Mp$7$?7A<0$r;}$C$F$$$k!%$-(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
878 $B$A$s$H$7$?%U%!%$%k$d%G%#%l%/%H%j$N%j%M!<%`$r%5%]!<%H$7$J$$$?$a!$%j%]%8%H(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
879 $B%j$,4JC1$K2u$l$F$7$^$&!%(B cvs$B$OFbIt$G0l4S@-$r%A%'%C%/$9$k5!G=$,$J$/!$%j%](B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
880 $B%8%H%j$NGKB;$rCN$i$;$k$3$H$b$G$-$J$$!%I.<T$O4{B8$^$?$O?75,$rLd$o$:!$$I$N(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
881 $B$h$&$J%W%m%8%'%/%H$G$"$C$F$b(BCVS$B$N;HMQ$OA&$a$J$$!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
882
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
883 %Mercurial can import CVS revision history. However, there are a few
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
884 %caveats that apply; these are true of every other revision control
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
885 %tool's CVS importer, too. Due to CVS's lack of atomic changes and
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
886 %unversioned filesystem hierarchy, it is not possible to reconstruct
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
887 %CVS history completely accurately; some guesswork is involved, and
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
888 %renames will usually not show up. Because a lot of advanced CVS
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
889 %administration has to be done by hand and is hence error-prone, it's
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
890 %common for CVS importers to run into multiple problems with corrupted
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
891 %repositories (completely bogus revision timestamps and files that have
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
892 %remained locked for over a decade are just two of the less interesting
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
893 %problems I can recall from personal experience).
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
894
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
895 Mercurial$B$O(BCVS$B$N%j%S%8%g%sMzNr$r%$%s%]!<%H$9$k$3$H$,$G$-$k!%$7$+$7B>$N%j(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
896 $B%S%8%g%s%3%s%H%m!<%k%D!<%k$N(BCVS$B%$%s%]!<%?!<F1MM$$$/$D$+$N@)8B$b$"$k!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
897 CVS$B$K$O%"%H%_%C%/%A%'%s%8$,$J$/!$%U%!%$%k%7%9%F%`3,AX$r%P!<%8%g%s4IM}$9(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
898 $B$kG=NO$b$J$$$?$a!$(BCVS$B$NMzNr$r40A4$+$D@53N$K:F8=$9$k$3$H$O$G$-$J$$!%:F8=(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
899 $B$K$O$$$/$D$+$N?dB,$,F~$j!$%j%M!<%`$ODL>o:F8=$5$l$J$$!%(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
900 CVS$B$G$O9bEY$J4IM}$NB?$/$,<jF0$G9T$o$l$k$?$a!$4V0c$$$,5/$3$j$d$9$/!$GKB;$7(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
901 $B$?%j%]%8%H%j$G(BCVS$B%$%s%]!<%?!<$,F1;~$KJ#?t$NLdBj$K8+Iq$o$l$k$3$H$,$h$/$"(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
902 $B$k!%!JI.<T$NITL{2w$JBN83$G$O!$(B10$BG/0J>e$K$o$?$C$F%m%C%/$5$l$?$^$^$N40A4$K(B
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
903 $BL50UL#$J%j%S%8%g%s%?%$%`%9%?%s%W$d%U%!%$%k$r8+$?$3$H$,$"$k!%!K(B
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
904
389
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
905 %Mercurial can import revision history from a CVS repository.
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
906
5981a0f7540a finished intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 388
diff changeset
907 Mercurial$B$O(BCVS$B%j%]%8%H%j$+$i%j%S%8%g%sMzNr$r%$%s%]!<%H$9$k$3$H$,$G$-$k!%(B
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
908
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
909 %\subsection{Commercial tools}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
910 \subsection{$B>&MQ%D!<%k(B}
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
911
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
912 %Perforce has a centralised client/server architecture, with no
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
913 %client-side caching of any data. Unlike modern revision control
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
914 %tools, Perforce requires that a user run a command to inform the
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
915 %server about every file they intend to edit.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
916
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
917 Perforce$B$O=8Cf7?$N%/%i%$%"%s%H!&%5!<%P%"!<%-%F%/%A%c$r;}$A!$$$$+$J$k%G!<(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
918 $B%?$b%/%i%$%"%s%HB&$G%-%c%C%7%e$7$J$$!%8=:_$N%j%S%8%g%s%3%s%H%m!<%k%D!<%k(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
919 $B$H$3$H$J$j!$(BPerforce$B$G$O%f!<%6$,$I$N%U%!%$%k$rJT=8$9$k$N$+%5!<%P$KCN$i$;(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
920 $B$k%3%^%s%I$r<B9T$9$kI,MW$,$"$k!%(B
221
680b7b055aa7 Brief comparisons with other tools.
Bryan O'Sullivan <bos@serpentine.com>
parents: 220
diff changeset
921
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
922 %The performance of Perforce is quite good for small teams, but it
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
923 %falls off rapidly as the number of users grows beyond a few dozen.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
924 %Modestly large Perforce installations require the deployment of
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
925 %proxies to cope with the load their users generate.
16
81454425eee9 Progress on a few fronts, mainly indexing and MQ chapter content
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
926
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
927 Perforce$B$N@-G=$O!$>.5,LO$J%A!<%`$G$N:n6H$K$*$$$F$O$+$J$jNI$$!%$7$+$7%f!<(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
928 $B%6?t$,?t%@!<%90J>e$KA}2C$9$k$K=>$C$F!$5^7c$K0-$/$J$C$F$$$/!%$+$J$jBg5,LO(B
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
929 $B$J(BPerforce$B4D6-$G$O!$%f!<%6$NA`:n$K$h$kIi2Y$r7Z8:$9$k$?$a$N%W%m%-%7$,I,MW(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 793
diff changeset
930 $B$K$J$k!%(B
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
931
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
932 %\subsection{Choosing a revision control tool}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
933 \subsection{$B%j%S%8%g%s%3%s%H%m!<%k%D!<%k$rA*$V(B}
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
934
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
935 %With the exception of CVS, all of the tools listed above have unique
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
936 %strengths that suit them to particular styles of work. There is no
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
937 %single revision control tool that is best in all situations.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
938
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
939 CVS$B$r=|$$$F!$>e5-$N%D!<%k$OFCDj$N:n6H%9%?%$%k$K9g$C$?8GM-$N6/$_$r;}$C$F$$(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
940 $B$k!%$9$Y$F$N>u67$G%Y%9%H$G$"$k%D!<%k$H$$$&$b$N$OB8:_$7$J$$!%(B
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
941
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
942 %As an example, Subversion is a good choice for working with frequently
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
943 %edited binary files, due to its centralised nature and support for
793
fa1c3715254d Propagate f3bef43b8ca1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 791
diff changeset
944 %file locking.
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
945
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
946 $BNc$($P!$IQHK$KJQ99$5$l$k%P%$%J%j%U%!%$%k$r07$&>l9g$O(BSubverrsion$B$rA*$V$N$,(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
947 $BNI$$!%(BSubversion$B$N=8Cf7?$N@-<A$H%U%!%$%k%m%C%/$N%5%]!<%H$O%P%$%J%j%U%!%$(B
793
fa1c3715254d Propagate f3bef43b8ca1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 791
diff changeset
948 $B%k$N<h$j07$$$KE,$7$F$$$k!%(B
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
949
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
950 %I personally find Mercurial's properties of simplicity, performance,
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
951 %and good merge support to be a compelling combination that has served
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
952 %me well for several years.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
953
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
954 $B8D?ME*$K$O!$?tG/$K$o$?$C$F!$(BMercurial$B$N4J7i$5!$@-G=!$M%$l$?%^!<%8%5%]!<%H(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
955 $B$O!$>h$j49$($k$KCM$9$kAH9g$;$@$H46$8$F$$$k!%(B
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
956
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
957 %\section{Switching from another tool to Mercurial}
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
958 \section{$BB>$N%D!<%k$+$i(BMercurial$B$X$N0\9T(B}
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
959
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
960 %Mercurial is bundled with an extension named \hgext{convert}, which
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
961 %can incrementally import revision history from several other revision
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
962 %control tools. By ``incremental'', I mean that you can convert all of
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
963 %a project's history to date in one go, then rerun the conversion later
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
964 %to obtain new changes that happened after the initial conversion.
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
965
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
966 Mercurial$B$K$O(B\hgext{convert}$B$H$$$&3HD%$,F1:-$5$l$F$$$k!%$3$N3HD%$O%j%S%8%g(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
967 $B%sMzNr$rB>$N%j%S%8%g%s%3%s%H%m!<%k%D!<%k$+$i%$%s%/%j%a%s%?%k$K%$%s%]!<%H(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
968 $B$9$k!%!V%$%s%/%j%a%s%?%k!W$H$$$&$N$O!$$^$:%W%m%8%'%/%H$NMzNr$9$Y$F$rJQ49(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
969 $B$7$?8e$G!$85$N%j%]%8%H%j$K5/$-$?JQ99$r$5$i$KJQ49$7$F<h$j9~$a$k$H$$$&0UL#(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
970 $B$G$"$k!%(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
971
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
972 %The revision control tools supported by \hgext{convert} are as
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
973 %follows:
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
974
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
975 \hgext{convert}$B$O<!$N%j%S%8%g%s%3%s%H%m!<%k%D!<%k$r%5%]!<%H$9$k(B:
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
976 \begin{itemize}
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
977 \item Subversion
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
978 \item CVS
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
979 \item Git
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
980 \item Darcs
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
981 \end{itemize}
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
982
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
983 %In addition, \hgext{convert} can export changes from Mercurial to
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
984 %Subversion. This makes it possible to try Subversion and Mercurial in
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
985 %parallel before committing to a switchover, without risking the loss
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
986 %of any work.
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
987
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
988 $B2C$($F!$(B\hgext{convert}$B$O(BMercurial$B$+$i(BSubversion$B$KJQ99$r%(%/%9%]!<%H$9$k(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
989 $B$3$H$,$G$-$k!%$3$l$K$h$j!$(BSubversion$B$+$i(BMercurial$B$K@ZBX$($kA0$K!$9T$C$?:n(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
990 $B6H$N7k2L$r<:$&$3$H$J$/!$N><T$rJB9T$7$F;n$9$3$H$,$G$-$k!%(B
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
991
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
992 %The \hgxcmd{conver}{convert} command is easy to use. Simply point it
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
993 %at the path or URL of the source repository, optionally give it the
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
994 %name of the destination repository, and it will start working. After
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
995 %the initial conversion, just run the same command again to import new
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
996 %changes.
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
997
388
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
998 \hgxcmd{conver}{convert}$B%3%^%s%I$r;H$&$N$O$?$d$9$$!%C1$K%=!<%9%j%]%8%H%j(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
999 $B$N%Q%9$d(BURL$B$rEO$9$@$1$G!$;HMQ2DG=$J%j%]%8%H%j$r:n@.$9$k!%$^$?!$%*%W%7%g%s(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
1000 $B$GJQ498e$N%j%]%8%H%j$NL>A0$rEO$9$3$H$b$G$-$k!%:G=i$NJQ498e!$F1$8%3%^%s%I(B
2e072e3d8637 more intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 387
diff changeset
1001 $B$r:F$S<B9T$9$k$H?7$7$$JQ99$r<h$j9~$`$3$H$,$G$-$k!%(B
280
4700dd38384c Bring the comparison section up to date and more into balance.
Bryan O'Sullivan <bos@serpentine.com>
parents: 263
diff changeset
1002
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
1003 %%% Local Variables:
293
3b1291f24c0d - replaved latex-mode to yatex-mode
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 290
diff changeset
1004 %%% mode: yatex
16
81454425eee9 Progress on a few fronts, mainly indexing and MQ chapter content
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
1005 %%% TeX-master: "00book"
386
63060ad65ab8 started intro.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 293
diff changeset
1006 %%% End: