Mercurial > hgbook
changeset 386:63060ad65ab8
started intro.tex
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Sat, 21 Feb 2009 23:56:55 +0900 |
parents | b7cdede6065f |
children | 1604f2b2054b |
files | ja/intro.tex |
diffstat | 1 files changed, 284 insertions(+), 146 deletions(-) [+] |
line wrap: on
line diff
--- a/ja/intro.tex Sat Feb 21 22:07:30 2009 +0900 +++ b/ja/intro.tex Sat Feb 21 23:56:55 2009 +0900 @@ -1,166 +1,295 @@ -\chapter{Introduction} +%\chapter{Introduction} +\chapter{$BF3F~(B} \label{chap:intro} -\section{About revision control} +%\section{About revision control} +\section{$B%j%S%8%g%s%3%s%H%m!<%k(B} -Revision control is the process of managing multiple versions of a -piece of information. In its simplest form, this is something that -many people do by hand: every time you modify a file, save it under a -new name that contains a number, each one higher than the number of -the preceding version. +%Revision control is the process of managing multiple versions of a +%piece of information. In its simplest form, this is something that +%many people do by hand: every time you modify a file, save it under a +%new name that contains a number, each one higher than the number of +%the preceding version. + +$B%j%S%8%g%s%3%s%H%m!<%k$H$O!$J#?t$N%P!<%8%g%s$N>pJs$r$r4IM}$9$k%W%m%;%9$G(B +$B$"$k!%:G$bC1=c$JJ}K!$O!$%U%!%$%k$rJQ99$7$?$i!$$=$l$^$G$N%P!<%8%g%s$h$j$b(B +$BBg$-$J?t;z$r4^$`?7$?$JL>A0$G%;!<%V$r9T$&$J$I$NJ}K!$GA4$F<j$G9T$&$3$H$G$"(B +$B$k!%(B -Manually managing multiple versions of even a single file is an -error-prone task, though, so software tools to help automate this -process have long been available. The earliest automated revision -control tools were intended to help a single user to manage revisions -of a single file. Over the past few decades, the scope of revision -control tools has expanded greatly; they now manage multiple files, -and help multiple people to work together. The best modern revision -control tools have no problem coping with thousands of people working -together on projects that consist of hundreds of thousands of files. +%Manually managing multiple versions of even a single file is an +%error-prone task, though, so software tools to help automate this +%process have long been available. The earliest automated revision +%control tools were intended to help a single user to manage revisions +%of a single file. Over the past few decades, the scope of revision +%control tools has expanded greatly; they now manage multiple files, +%and help multiple people to work together. The best modern revision +%control tools have no problem coping with thousands of people working +%together on projects that consist of hundreds of thousands of files. -\subsection{Why use revision control?} +$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 +$B$$$r5/$3$70W$$:n6H$G!$$3$N%W%m%;%9$r<+F02=$9$k%=%U%H%&%'%"%D!<%k$,$+$J$j(B +$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 +$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 +$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 +$BBg$7$?!%:#$G$OJ#?t?M$K$h$kJ#?t%U%!%$%k$NJT=8$r$b4IM}$9$k$3$H$,$G$-$k!%8=(B +$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 +$B%W%m%8%'%/%H$K$bBP1~$9$k!%(B -There are a number of reasons why you or your team might want to use -an automated revision control tool for a project. +%\subsection{Why use revision control?} +\subsection{$B$J$<%j%S%8%g%s%3%s%H%m!<%k$r;H$&$N$+(B?} + +%There are a number of reasons why you or your team might want to use +%an automated revision control tool for a project. +$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 +$B$($kM}M3$O?tB?$/$"$k!%(B \begin{itemize} -\item It will track the history and evolution of your project, so you - don't have to. For every change, you'll have a log of \emph{who} - made it; \emph{why} they made it; \emph{when} they made it; and - \emph{what} the change was. -\item When you're working with other people, revision control software - makes it easier for you to collaborate. For example, when people - more or less simultaneously make potentially incompatible changes, - the software will help you to identify and resolve those conflicts. -\item It can help you to recover from mistakes. If you make a change - that later turns out to be in error, you can revert to an earlier - version of one or more files. In fact, a \emph{really} good - revision control tool will even help you to efficiently figure out - exactly when a problem was introduced (see - section~\ref{sec:undo:bisect} for details). -\item It will help you to work simultaneously on, and manage the drift - between, multiple versions of your project. +%\item It will track the history and evolution of your project, so you +% don't have to. For every change, you'll have a log of \emph{who} +% made it; \emph{why} they made it; \emph{when} they made it; and +% \emph{what} the change was. + \item $B%j%S%8%g%s4IM}%D!<%k$O!$%W%m%8%'%/%H$NMzNr$H?J2=$r5-O?$9$k$?$a!$<+(B + $BJ,<+?H$G5-O?$9$kI,MW$,$J$$!%A4$F$NJQ99$KBP$7$F(B\emph{$BC/$,(B}\emph{$B2?(B + $B$N$?$a$K(B}\emph{$B$$$D(B}\emph{$B2?$r(B}$BJQ99$7$?$N$+$,5-O?$5$l$k!%(B +%\item When you're working with other people, revision control software +% makes it easier for you to collaborate. For example, when people +% more or less simultaneously make potentially incompatible changes, +% the software will help you to identify and resolve those conflicts. + \item $BB>$N?M$H:n6H$7$F$$$k;~!$%j%S%8%g%s%3%s%H%m!<%k%=%U%H%&%'%"$O6&F1(B + $B:n6H$r=u$1$k!%Nc$($P!$?M!9$,F1;~$K8_49@-$N$J$$JQ99$r9T$C$?>l9g!$(B + $B%=%U%H%&%'%"$O%3%s%U%j%/%H$rFCDj$7!$2D7h$9$k$3$H$r=u$1$k!%(B +%\item It can help you to recover from mistakes. If you make a change +% that later turns out to be in error, you can revert to an earlier +% version of one or more files. In fact, a \emph{really} good +% revision control tool will even help you to efficiently figure out +% exactly when a problem was introduced (see +% section~\ref{sec:undo:bisect} for details). + \item $B%j%S%8%g%s4IM}%D!<%k$OHH$7$?%_%9$+$i$N2sI|$r=u$1$k!%2C$($?JQ99$,8e(B +$B$G4V0c$$$G$"$C$?$HJ,$+$C$?;~!$(B1$B$D$^$?$OJ#?t$N%U%!%$%k$X$NJQ99$rGK4~$9$k$3(B +$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 +$BJ6$l9~$s$@LdBj$rFCDj$9$k$N$r;Y1g$9$k5!G=$r;}$D!%!J>\:Y$K$D$$$F(B +$B$O(B~\ref{sec:undo:bisect}$B@a$r;2>H!%!K(B +%\item It will help you to work simultaneously on, and manage the drift +% between, multiple versions of your project. + \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 + $B6H$d!$%j%S%8%g%s4V$N0\9T$r;Y1g$9$k!%(B \end{itemize} -Most of these reasons are equally valid---at least in theory---whether -you're working on a project by yourself, or with a hundred other -people. +%Most of these reasons are equally valid---at least in theory---whether +%you're working on a project by yourself, or with a hundred other +%people. +$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 +$B6H<T$H:n6H$7$F$$$F$b>/$J$/$H$bM}O@E*$K$OEy$7$/M-0U$G$"$k!%(B -A key question about the practicality of revision control at these two -different scales (``lone hacker'' and ``huge team'') is how its -\emph{benefits} compare to its \emph{costs}. A revision control tool -that's difficult to understand or use is going to impose a high cost. +%A key question about the practicality of revision control at these two +%different scales (``lone hacker'' and ``huge team'') is how its +%\emph{benefits} compare to its \emph{costs}. A revision control tool +%that's difficult to understand or use is going to impose a high cost. + +$B%j%S%8%g%s%3%s%H%m!<%k$N<BMQ@-$K4X$9$k80$K$J$k<ALd$O!$$3$l$i$N(B2$B$D$N0[$J$C(B +$B$?%9%1!<%k!J(B``$B0l?M$N%O%C%+!<(B''$B%l%Y%k$+$i(B``$BBg5,LO%A!<%`(B''$B%l%Y%k$^$G!K$K$*(B +$B$$$F!$%3%9%H$KBP$7$F$I$l$@$1Mx1W$,$"$k$N$+$H$$$&$3$H$G$"$k!%M}2r$d;HMQ$,(B +$B:$Fq$J%j%S%8%g%s%3%s%H%m!<%k%D!<%k$O9b$$%3%9%H$r2!$7$D$1$k!%(B -A five-hundred-person project is likely to collapse under its own -weight almost immediately without a revision control tool and process. -In this case, the cost of using revision control might hardly seem -worth considering, since \emph{without} it, failure is almost -guaranteed. +%A five-hundred-person project is likely to collapse under its own +%weight almost immediately without a revision control tool and process. +%In this case, the cost of using revision control might hardly seem +%worth considering, since \emph{without} it, failure is almost +%guaranteed. -On the other hand, a one-person ``quick hack'' might seem like a poor -place to use a revision control tool, because surely the cost of using -one must be close to the overall cost of the project. Right? +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 +$BN)$A9T$+$J$$!%$3$N>l9g!$%j%S%8%g%s%3%s%H%m!<%k$J$7$G$O<:GT$9$k$3$H$,KX$s(B +$B$IL@Gr$J$?$a!$%j%S%8%g%s%3%s%H%m!<%k$r9T$&%3%9%H$rJ'$&$3$H$OFC$KLdBj$H$O(B +$B$J$i$J$$!%(Bxxx + +%On the other hand, a one-person ``quick hack'' might seem like a poor +%place to use a revision control tool, because surely the cost of using +%one must be close to the overall cost of the project. Right? + +$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 +$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 +$B%/%H$N%3%9%H$=$N$b$N$G$"$k$+$i$@!%$3$l$O@5$7$$$@$m$&$+!)(B -Mercurial uniquely supports \emph{both} of these scales of -development. You can learn the basics in just a few minutes, and due -to its low overhead, you can apply revision control to the smallest of -projects with ease. Its simplicity means you won't have a lot of -abstruse concepts or command sequences competing for mental space with -whatever you're \emph{really} trying to do. At the same time, -Mercurial's high performance and peer-to-peer nature let you scale -painlessly to handle large projects. +%Mercurial uniquely supports \emph{both} of these scales of +%development. You can learn the basics in just a few minutes, and due +%to its low overhead, you can apply revision control to the smallest of +%projects with ease. Its simplicity means you won't have a lot of +%abstruse concepts or command sequences competing for mental space with +%whatever you're \emph{really} trying to do. At the same time, +%Mercurial's high performance and peer-to-peer nature let you scale +%painlessly to handle large projects. + +Mercurial$B$O$3$l$i$N3+H/%9%1!<%k$NN>J}$r%5%]!<%H$7$F$$$k!%4pACE*$J;HMQK!$O(B +$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 +$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 +$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 +$B$^$?F1;~$K(BMercurial$B$N@-G=$N9b$5$d!$%T%"%D!<%T%"$N@-<A$N$?$a$K!$Bg5,LO%W%m(B +$B%8%'%/%H$K$b6lO+$9$k;v$J$/%9%1!<%k$9$k$3$H$,$G$-$k!%(B -No revision control tool can rescue a poorly run project, but a good -choice of tools can make a huge difference to the fluidity with which -you can work on a project. +%No revision control tool can rescue a poorly run project, but a good +%choice of tools can make a huge difference to the fluidity with which +%you can work on a project. + +$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 +$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 -\subsection{The many names of revision control} +%\subsection{The many names of revision control} +\subsection{$BMM!9$J%j%S%8%g%s%3%s%H%m!<%k(B} -Revision control is a diverse field, so much so that it doesn't -actually have a single name or acronym. Here are a few of the more -common names and acronyms you'll encounter: +%Revision control is a diverse field, so much so that it doesn't +%actually have a single name or acronym. Here are a few of the more +%common names and acronyms you'll encounter: +$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 +$B$=$NC;=L7A$,CN$i$l$F$$$k!'(B \begin{itemize} -\item Revision control (RCS) -\item Software configuration management (SCM), or configuration management -\item Source code management -\item Source code control, or source control -\item Version control (VCS) +\item $B%j%S%8%g%s%3%s%H%m!<%k(B (Revision control (RCS)) +\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) +\item $B%=!<%9%3!<%I%^%M%8%a%s%H(B (Source code management) +\item $B%=!<%9%3!<%I%3%s%H%m!<%k$^$?$O%=!<%9%3%s%H%m!<%k(B (Source code control, or source control) +\item $B%P!<%8%g%s%3%s%H%m!<%k(B (Version control (VCS)) \end{itemize} -Some people claim that these terms actually have different meanings, -but in practice they overlap so much that there's no agreed or even -useful way to tease them apart. +%Some people claim that these terms actually have different meanings, +%but in practice they overlap so much that there's no agreed or even +%useful way to tease them apart. +$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 +$B$O$3$l$i$O8_$$$KBg$-$/=E$J$C$F$*$j!$$o$6$o$66hJL$9$k$3$H$O0lHLE*$G$J$/!$(B +$B$^$?M-MQ$G$b$J$$!%(B + +%\section{A short history of revision control} +\section{$B%j%S%8%g%s%3%s%H%m!<%k$NNr;K(B} -\section{A short history of revision control} +%The best known of the old-time revision control tools is SCCS (Source +%Code Control System), which Marc Rochkind wrote at Bell Labs, in the +%early 1970s. SCCS operated on individual files, and required every +%person working on a project to have access to a shared workspace on a +%single system. Only one person could modify a file at any time; +%arbitration for access to files was via locks. It was common for +%people to lock files, and later forget to unlock them, preventing +%anyone else from modifying those files without the help of an +%administrator. + +$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 +$BBe=iF,$K(BBell$B8&5f=j$G=q$$$?(BSCCS (Source Code Control System)$B$G$"$k!%(B SCCS +$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 +$B$N6&M-%o!<%/%9%Z!<%9$X$N%"%/%;%9$,I,MW$G$"$C$?!%%U%!%$%k$X$N%"%/%;%9$ND4(B +$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 +$B$1$G$"$C$?!%%U%!%$%k$r%m%C%/$7$?8e!$%m%C%/$N2r=|$rK:$l$k$3$H$OF|>oE*$K$"(B +$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 +$B$J$+$C$?!%(B -The best known of the old-time revision control tools is SCCS (Source -Code Control System), which Marc Rochkind wrote at Bell Labs, in the -early 1970s. SCCS operated on individual files, and required every -person working on a project to have access to a shared workspace on a -single system. Only one person could modify a file at any time; -arbitration for access to files was via locks. It was common for -people to lock files, and later forget to unlock them, preventing -anyone else from modifying those files without the help of an -administrator. +%Walter Tichy developed a free alternative to SCCS in the early 1980s; +%he called his program RCS (Revison Control System). Like SCCS, RCS +%required developers to work in a single shared workspace, and to lock +%files to prevent multiple people from modifying them simultaneously. + +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 +$B%k%D!<%k$r3+H/$7$?!%H`$O<+$i$N%7%9%F%`$r(BRCS (Revison Control System)$B$H8F(B +$B$s$@!%(BSCCS$BF1MM!$(BRCS$B$O3+H/<T$?$A$KC10l$N6&M-%o!<%/%9%Z!<%9$H!$%U%!%$%k$rF1(B +$B;~$KJ#?t?M$,JQ99$9$k$3$H$N$J$$$h$&$K%m%C%/$rMW5a$7$?!%(B -Walter Tichy developed a free alternative to SCCS in the early 1980s; -he called his program RCS (Revison Control System). Like SCCS, RCS -required developers to work in a single shared workspace, and to lock -files to prevent multiple people from modifying them simultaneously. +%Later in the 1980s, Dick Grune used RCS as a building block for a set +%of shell scripts he initially called cmt, but then renamed to CVS +%(Concurrent Versions System). The big innovation of CVS was that it +%let developers work simultaneously and somewhat independently in their +%own personal workspaces. The personal workspaces prevented developers +%from stepping on each other's toes all the time, as was common with +%SCCS and RCS. Each developer had a copy of every project file, and +%could modify their copies independently. They had to merge their +%edits prior to committing changes to the central repository. -Later in the 1980s, Dick Grune used RCS as a building block for a set -of shell scripts he initially called cmt, but then renamed to CVS -(Concurrent Versions System). The big innovation of CVS was that it -let developers work simultaneously and somewhat independently in their -own personal workspaces. The personal workspaces prevented developers -from stepping on each other's toes all the time, as was common with -SCCS and RCS. Each developer had a copy of every project file, and -could modify their copies independently. They had to merge their -edits prior to committing changes to the central repository. +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 +$BM}%7%9%F%`$r:n$C$?!%=i4|$K(Bcmt$B$H8F$P$l$?$3$N%7%9%F%`$O!$8e$K(BCVS +(Concurrent Versions System)$B$H2~L>$5$l$?!%(B CVS$B$NBg$-$J3W?7$O!$3+H/<TC#$K(B +$BF1;~$K8DJL$N%o!<%/%9%Z!<%9$G:n6H$9$k$3$H$r5v$7$?$3$H$G$"$k!%%o!<%/%9%Z!<(B +$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 +$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 +$B%H$9$kA0$K!$JQ997k2L$r%^!<%8$9$kI,MW$,$"$C$?!%(B + +%Brian Berliner took Grune's original scripts and rewrote them in~C, +%releasing in 1989 the code that has since developed into the modern +%version of CVS. CVS subsequently acquired the ability to operate over +%a network connection, giving it a client/server architecture. CVS's +%architecture is centralised; only the server has a copy of the history +%of the project. Client workspaces just contain copies of recent +%versions of the project's files, and a little metadata to tell them +%where the server is. CVS has been enormously successful; it is +%probably the world's most widely used revision control system. -Brian Berliner took Grune's original scripts and rewrote them in~C, -releasing in 1989 the code that has since developed into the modern -version of CVS. CVS subsequently acquired the ability to operate over -a network connection, giving it a client/server architecture. CVS's -architecture is centralised; only the server has a copy of the history -of the project. Client workspaces just contain copies of recent -versions of the project's files, and a little metadata to tell them -where the server is. CVS has been enormously successful; it is -probably the world's most widely used revision control system. +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 +$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 +$B%o!<%/$r7PM3$7$?F0:n$d!$%/%i%$%"%s%H%5!<%P%"!<%-%F%/%A%c$rHw$($F$$$C(B +$B$?!%(BCVS$B$N%"!<%-%F%/%A%c$OCf1{=8Cf7?$G!$%5!<%P$N$_$,%W%m%8%'%/%H$NMzNr$rJ](B +$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 +$B%$%k$N%3%T!<$G$"$j!$%5!<%P$N=j:_$r<($96O$+$J%a%?%G!<%?$,IU2C$5$l$F$$$?!%(B +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 +$B%7%9%F%`$H$J$C$?!%(B + +%In the early 1990s, Sun Microsystems developed an early distributed +%revision control system, called TeamWare. A TeamWare workspace +%contains a complete copy of the project's history. TeamWare has no +%notion of a central repository. (CVS relied upon RCS for its history +%storage; TeamWare used SCCS.) -In the early 1990s, Sun Microsystems developed an early distributed -revision control system, called TeamWare. A TeamWare workspace -contains a complete copy of the project's history. TeamWare has no -notion of a central repository. (CVS relied upon RCS for its history -storage; TeamWare used SCCS.) +1990$BG/Be=iF,!$(BSun Microsystems$B$O(BTeamWare$B$H8F$P$l$k=i4|$NJ,;6%j%S%8%g%s%3(B +$B%s%H%m!<%k%7%9%F%`$r3+H/$7$?!%(BTeamWare$B%o!<%/%9%Z!<%9$O%W%m%8%'%/%H$NMzNr(B +$B$N40A4$J%3%T!<$r;}$C$F$$$?!%(BTeamWare$B$K$OCf1{%j%]%8%H%j$H$$$&35G0$O$J$+$C(B +$B$?!%!J(BCVS$B$,MzNr$N5-O?$K(BRCS$B$r;H$C$F$$$?$h$&$K!$(BTeamWare$B$O(BSCCS$B$rMQ$$$F$$(B +$B$?!%!K(B + +%As the 1990s progressed, awareness grew of a number of problems with +%CVS. It records simultaneous changes to multiple files individually, +%instead of grouping them together as a single logically atomic +%operation. It does not manage its file hierarchy well; it is easy to +%make a mess of a repository by renaming files and directories. Worse, +%its source code is difficult to read and maintain, which made the +%``pain level'' of fixing these architectural problems prohibitive. + +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 +$B$KJ#?t$N%U%!%$%k$KBP$7$F9T$o$l$kJQ99$rO@M}E*$K%"%H%_%C%/$JA`:n$H$7$F%0%k!<(B +$B%W2=$9$k$N$G$O$J$/!$%U%!%$%kKh$K8DJL$K5-O?$7$F$$$?!%(BCVS$B$N%U%!%$%k%R%(%i%k(B +$B%-!<$N4IM}$OIT==J,$G!$%U%!%$%k$d%G%#%l%/%H%j$r%j%M!<%`$9$k$H4JC1$K%j%]%8(B +$B%H%j$,:.Mp$7$?!%$5$i$K0-$$$3$H$K!$(BCVS$B$N%=!<%9%3!<%I$OFI$_$K$/$/!$%a%s%F%J(B +$B%s%9$bFq$7$+$C$?$?$a!$%"!<%-%F%/%A%c$NLdBj$r2r7h$9$k$N$OIT2DG=$J%l%Y%k$H(B +$B8@$($?!%(B -As the 1990s progressed, awareness grew of a number of problems with -CVS. It records simultaneous changes to multiple files individually, -instead of grouping them together as a single logically atomic -operation. It does not manage its file hierarchy well; it is easy to -make a mess of a repository by renaming files and directories. Worse, -its source code is difficult to read and maintain, which made the -``pain level'' of fixing these architectural problems prohibitive. +%In 2001, Jim Blandy and Karl Fogel, two developers who had worked on +%CVS, started a project to replace it with a tool that would have a +%better architecture and cleaner code. The result, Subversion, does +%not stray from CVS's centralised client/server model, but it adds +%multi-file atomic commits, better namespace management, and a number +%of other features that make it a generally better tool than CVS. +%Since its initial release, it has rapidly grown in popularity. + +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 +$B$($k!$$h$jM%$l$?%"!<%-%F%/%A%c$H4qNo$J%3!<%I$r;}$D%D!<%k$N%W%m%8%'%/%H$r(B +$B;O$a$?!%$=$N@.2LJ*$G$"$k(BSubversion$B$O(BCVS$B$N=8Cf7?%/%i%$%"%s%H%5!<%P%b%G%k$r(B +$B2~$a$k$3$H$O$7$J$+$C$?$,!$J#?t%U%!%$%k$N%"%H%_%C%/$J%3%_%C%H$rDI2C$7!$L>(B +$BA06u4V$N4IM}$b2~NI$7$F$$$?!%$^$?(BCVS$B$h$j$bM%$l$??tB?$/$N5!G=$bDI2C$5$l$?!%(B +Subversion$B$O:G=i$N%j%j!<%9$+$i5^B.$K?M5$$r3MF@$7$F$$$C$?!%(B -In 2001, Jim Blandy and Karl Fogel, two developers who had worked on -CVS, started a project to replace it with a tool that would have a -better architecture and cleaner code. The result, Subversion, does -not stray from CVS's centralised client/server model, but it adds -multi-file atomic commits, better namespace management, and a number -of other features that make it a generally better tool than CVS. -Since its initial release, it has rapidly grown in popularity. +%More or less simultaneously, Graydon Hoare began working on an +%ambitious distributed revision control system that he named Monotone. +%While Monotone addresses many of CVS's design flaws and has a +%peer-to-peer architecture, it goes beyond earlier (and subsequent) +%revision control tools in a number of innovative ways. It uses +%cryptographic hashes as identifiers, and has an integral notion of +%``trust'' for code from different sources. -More or less simultaneously, Graydon Hoare began working on an -ambitious distributed revision control system that he named Monotone. -While Monotone addresses many of CVS's design flaws and has a -peer-to-peer architecture, it goes beyond earlier (and subsequent) -revision control tools in a number of innovative ways. It uses -cryptographic hashes as identifiers, and has an integral notion of -``trust'' for code from different sources. +$B$[$\;~$rF1$8$/$7$F!$(BGraydon Hoare$B$O(BMonotone$B$H8F$P$l$kLn?4E*$JJ,;6%j%S%8%g(B +$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 +$B$r=$@5$7!$%T%"%D!<%T%"%"!<%-%F%/%A%c$r;}$C$F$$$k!%(B Monotone$B$O=i4|$N!J$"$k(B +$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 +$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 +$B%I$KBP$7$F(B``$B?.Mj@-(B''$B$N35G0$r;}$C$F$$$?!%(B -Mercurial began life in 2005. While a few aspects of its design are -influenced by Monotone, Mercurial focuses on ease of use, high -performance, and scalability to very large projects. +%Mercurial began life in 2005. While a few aspects of its design are +%influenced by Monotone, Mercurial focuses on ease of use, high +%performance, and scalability to very large projects. -\section{Trends in revision control} +Mercurial$B$O(B2005$BG/$KCB@8$7$?!%%G%6%$%s$N$$$/$D$+$NLL$O(BMonotone$B$K1F6A$r<u$1(B +$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 +$B%j%F%#$K%U%)!<%+%9$7$F$$$k!%(B + +%\section{Trends in revision control} +\section{$B%j%S%8%g%s%3%s%H%m!<%k$N%H%l%s%I(B} There has been an unmistakable trend in the development and use of revision control tools over the past four decades, as people have @@ -192,7 +321,8 @@ autonomously, with a network connection only needed when syncing changes with another repository. -\section{A few of the advantages of distributed revision control} +%\section{A few of the advantages of distributed revision control} +\section{$BJ,;6%j%S%8%g%s%3%s%H%m!<%k$NMxE@(B} Even though distributed revision control tools have for several years been as robust and usable as their previous-generation counterparts, @@ -226,7 +356,8 @@ something that is relatively rare compared with local operations. If you have a far-flung team of collaborators, this may be significant. -\subsection{Advantages for open source projects} +%\subsection{Advantages for open source projects} +\subsection{$B%*!<%W%s%=!<%9%W%m%8%'%/%H$G$NMxE@(B} If you take a shine to an open source project and decide that you would like to start hacking on it, and that project uses a distributed @@ -241,7 +372,8 @@ be at risk of corruption any time you try to update your client's view of the repository. -\subsubsection{The forking non-problem} +%\subsubsection{The forking non-problem} +\subsubsection{$BLdBj$J$/%U%)!<%/2DG=(B} It has been suggested that distributed revision control tools pose some sort of risk to open source projects because they make it easy to @@ -288,7 +420,8 @@ forgoing the ability to fluidly collaborate with whatever people feel compelled to mirror and fork your history. -\subsection{Advantages for commercial projects} +%\subsection{Advantages for commercial projects} +\subsection{$B>&MQ%W%m%8%'%/%H$G$NMxE@(B} Many commercial projects are undertaken by teams that are scattered across the globe. Contributors who are far from a central server will @@ -318,7 +451,8 @@ the sources of bugs and regressions in the customer's environment, all without needing to connect to your company's network. -\section{Why choose Mercurial?} +%\section{Why choose Mercurial?} +\section{Mercurial$B$rA*$VM}M3(B} Mercurial has a unique set of properties that make it a particularly good choice as a revision control system. @@ -355,7 +489,8 @@ useful extensions already available, ranging from helping to identify bugs to improving performance. -\section{Mercurial compared with other tools} +%\section{Mercurial compared with other tools} +\section{Mercurial$B$HB>$N%D!<%k$NHf3S(B} Before you read on, please understand that this section necessarily reflects my own experiences, interests, and (dare I say it) biases. I @@ -501,7 +636,8 @@ Mercurial can import revision history from a CVS repository. -\subsection{Commercial tools} +%\subsection{Commercial tools} +\subsection{$B>&MQ%D!<%k(B} Perforce has a centralised client/server architecture, with no client-side caching of any data. Unlike modern revision control @@ -514,7 +650,8 @@ proxies to cope with the load their users generate. -\subsection{Choosing a revision control tool} +%\subsection{Choosing a revision control tool} +\subsection{$B%j%S%8%g%s%3%s%H%m!<%k%D!<%k$rA*$V(B} With the exception of CVS, all of the tools listed above have unique strengths that suit them to particular styles of work. There is no @@ -532,7 +669,8 @@ me well for several years. -\section{Switching from another tool to Mercurial} +%\section{Switching from another tool to Mercurial} +\section{$BB>$N%D!<%k$+$i(BMercurial$B$X$N0\9T(B} Mercurial is bundled with an extension named \hgext{convert}, which can incrementally import revision history from several other revision @@ -561,7 +699,7 @@ changes. -%%% Local Variables: +%%% Local Variables: %%% mode: yatex %%% TeX-master: "00book" -%%% End: +%%% End: