Chapter 1
Introduction

1.1 About revision control

とはするのことですではくのがこれをいますファイルには利用したよりもきなててからそのめたしいファイルするといった です

しかしながらたったつのファイルであってもするいがちですのでこのする フトウェアツにはがありますするによるファイルしていましたここされてきました現在では ファイルするするまでになっていますするによってフィルからなるプロジェクトされてもびくともしませ

1.1.1 Why use revision control?

プロジェクトにおいてであるあなたやあなたのされた使したくなるのは以下のようながあるからではないでしょうか

これらのどが なくともでは きりのプロジェクトでもするプロジェクトでも

これらつのなる“lone hacker” “huge team”のそれぞれにおいてするからられるとそのコストをどのようにするかというにあります使しい コストくでしょう

プロセスきでは 500 からなるプロジェクトはおそらくみですぐにでもれてしまうでしょこのきにはされたようなものですからそれをえば利用するコストについ てはえるまでもいでしょう

での “quick hack” 使コストプロジェクト全体コストですから使いようにえるかもしれませんしかしそれはでしょか

Mercurial はこれらサポしますわずかできそのバヘッドのおさなプロジェクトにもできます

さはにやろうとしていることとするコマンドといったものをけるいことをします Mercurial さと P2P きなプロジェクトへの利用へとできます

運営プロジェクトえるはありませんが選択することでプロジェクトでのにおける らかさがってきます

1.1.2 The many names of revision control

なのでにはされた語語がありません

よくにするおよび以下します

これらのにはそれぞれなるっているするもいますがにはおいに したっているのでこれらにしてにあれこれうことにはもできませんし有用もありませ 2

1.2 A short history of revision control

有名Bell Labs Marc Rochkind 1970 した SCCS Source Code Control SystemですSCCS ファイルしてプロジェクト従事するてのシステム アクセスでしたあるでのあるファイルただのみがファイルアクセスロックにより 調停されていましたファイルロックしたままれてしまいしにはファイルできなくしてしま うことはくあることでした

SCCS フリ代替として 1980 Walter Tichy RCS Revison Control Systemプログラム しましたSCCS RCS 利用にはでのするのをぐためのロック でした

1980 Dick Grune RCS いてcmt ばれるシェルスクリプトにこれらは CVS Concurrent Versions SystemされましたCVS におけるきな各開ごとのにおいて したができるようになったことですSCCS RCS ではくあったいつでもんでしまう ごとの導入によってがれるようになりました各開プロジェクトするてのファイル してすることができましたリポジトリへのコミットってをするがありま した

Brian Berliner Grune オリジナルスクリプトC CVS へとする1989 リリ しましたCVS はその、「クライアントキテクチャ導入によりネットワ接続しのとする しましたCVS キテクチャなものでのみがプロジェクトのこぴっていますクライア ントプロジェクトファイルしたものと場所るためのわずかなメタデ っているだけですCVS していておそらく使されているシステムでしょ

Sun Microsystems 1990 TeamWare ばれるシステムのはしりとなるものをしました TeamWare におけるプロジェクトしていますTeamWare にはリポジトリいうがありません CVS RCS していましたがTeamWare SCCS 利用していまし)。

1990 むにつれてから CVS する顕在してきましたえば CVS ファイルする 論理としてまとめるわりにファイルごとにしていますまたファイル できないためファイルディレクトリすることでリポジトリさせることができますなおいことに CVS スコむにもするにもなためキテクチャする 痛度なものでし

CVS っていた Jim Blandy および Karl Fogel よりキテクチャ CVS えるプロジェクト2001 めましたとしてされた Subversion CVS クライア ントバモデルからはれなかったもののファイルコミットよりおよび CVS よりも うにるそのくのっていますリリそのやかに上昇していま

それとGraydon Hoare Monotone ばれるシステムかりめました Monotone CVS くのP2P キテクチャくのにおいてそして そのからけていますMonotone いられるハッシュとして使しておりなる 由来にとってっています

Mercurial 2005 しましたつかのにおいて Monotone からけるMercurial 利用 便およびプロジェクトへのいています

1.3 Trends in revision control

40利用におけるれもとして利用利用している するとによってされるようですXXXXXX There has been an unmistakable trend in the development and use of revision control tools over the past four decades, as people have become familiar with the capabilities of their tools and constrained by their limitations.

ファイルコンピュすることからまりましたこのによるたりな べればきなではありましたがによるモデルコンピュでの利用としたのため さくでの利用されていました

ネットワキテクチャへのプロジェクト全体括管によってこれらのしまし しかしプロジェクトきくなればなるほどたなしましたクライアント するがあるためプロジェクトへのになりましたネットワ 接続ではができないこともありましたプンソスプロジェクト アクセスするにつれリポジトリへのコミットたない方法 ではたちのできずそれプロジェクトしてきかけることができないことにめまし

事実P2P ですこれらはするたずそのため 場所することがですインタネットしたにおける するものから選択 (of what ?) (of what) へとしつつあります XXXXCollaboration over the Internet has moved from constrained by technology to a matter of choice and consensus. オフラインでもしてできネットワ接続リポジトリとのにのみとされま

1.4 A few of the advantages of distributed revision control

へのとしてここ便になってきてはいるものの利用している ずしもいているわけではありませんして れているつかあります

にとってはしたねいつでもですこれはではどのメタデ にしかしないためくのネットワしにとのというのためで てのメタデしていますてがじだとしてもネットワしの とってのバヘッドとなりますとのくのやそうとうのですからテキパキ してはいけません

しになりますがメタデ何箇にもできるのでまぐ 3 なりませんいたにはバックアップメディア最後バックアップのものであるこ とをるにいありません各開コンピュバックアップすることになりま

よりもネットワによるけませんそれどころか定的つかのコマン けばではネットワ接続きにはもできませんネットワ接続れてもその かないかもしれませんコンピュリポジトリとのだけはできなくなりますがリポジトリとの ればそのようなはわずかなものですしているなにはこれは

1.4.1 Advantages for open source projects

ハッキングしてみようとったプンソプロジェクト使していたプロジェク とみなすちにになれますらがリポジトリしていればプロ ジェクトコピ実施といったことをすぐにでもうことができますはそれとは するコミットえられないでしか使うことができませんコミッ されるまでははできずリポジトリとのにはでのするえていま

The forking non-problem

プロジェクトさせくしてしまうためプンソスプロジェクトにとってあるとな われてきましたこれできないとけるとなるようなグルでの のがあるしますプロジェクトスココピっていのへとかれてゆ きます

にはしたいのいをけるをすることがありますシステムでは いをけるためのしく部分実施しなければなりませんのかをした とかしてスツリしなければなりませんこのないし うことになります

にとってはこそがプロジェクトさせる方法なのですなのです しているなのでできなければならないというにこの みがあります

てのてのからてられたプンソとして するものは純粋となるでしょうどちらかといえばさせていま

プロジェクトへのによってられるじているためにするもいま しかしそういったCVS ないし Subversion によるリポジトリしてもするによってプロ ジェクト全体いとはあなたのばない場所再構することができてしまいます ロジェクトへのであるSo while your control in this case is illusory, you are foregoing the ability to fluidly collaborate with whatever people feel compelled to mirror and fork your history. XXXXXX

1.4.2 Advantages for commercial projects

くのプロジェクトらばったっていますかられたメンバコマンド さやおそらくとの接続にすることでしょうシステムサイト 4 によるこれらのしようとしていますがこういったですそもそもこう いったがありませんえばサイトごとにずつというできるげる こともですのでのあるネットワしのリポジトリをするはありませ

システム相対スケラビリティにありますシステムだからといって 利用するによってダウンしてしまうことはないことではありませんしに なりますがにおけるダウンする利用です使 するっているとしてもだけでしょうが におけるいのでもっと 人数安価くことができますしスクリプトとなりま

題対するメンバがいるですビルドからはされたビルドのた めにしたり退からしたりといったことを自社ネット 接続することしにうことができます

1.5 Why choose Mercurial?

Mercurial とりわけシステムとして選択をしたとえるないっています

システムしんでいるのであればMercurial 使えるようになるのにからないですそうでない からないでしょうMercurial コマンド全体たれていますので ではなく少数方法だけをえておけばいのです

さなプロジェクトすぐにでも Mercurial 使めることができるでしょうたなブランチ生成 ホストないしネットワしでいたりといったてのです えてえるヘッドないためにMercurial さを利用げることをけることができま

Mercurial 有用さなプロジェクトされませんからメンバスコファイル ガバイトプロジェクトでもされています

Mercurial できないでもすることができますMercurial スクリプトしており Python 使ってされていることが、「イクステンションというでのにしています。「 からといった有用くのイクステンションされていま

1.6 Mercurial compared with other tools

この者自/(あえていますがといったものがせざるをないをごくださ 以下にあげるのそれぞれを程度使したがあります

1.6.1 Subversion

Subversion CVS えをしてされたのよいですSubversion クライアント キテクチャっています

Subversion Mercurial たようなコマンドっているのでみのある できますこれらはともてのOS 利用です

Subversion したっていないのでどのリビジョンブランチすべきかを することをしますこのができなかったりえたりしたにおける不必するにな ります

ベンチマしたりではSubversion てのにおいてMercurial にいま によるとSubversion 1.4.3  における ra_local ファイル利用アクセスした から程度がありましたネットワしのリポジトリとするよりSubversion になるでしょうくの Subversion コマンドとのSubversion 有用っていないためきめのプロジェクトボトルネックとなるでしょ

それにえてファイルstatus現行との分表diffといったつかのにおけるネット するためにSubversion バヘッドんでいますMercurial リポジトリ プロジェクトしているにもわらずSubversion コピMercurial リポ ジトリディレクトリサイズとしておおよそサイズあるいはそれになることがいで

ドパティツしてはそのまってはいるものMercurial してでは Subversion がよりくのサポけることができますまたMercurial Subversion らしいザマニュア があります

Subversion リポジトリから Mercurial リポジトリへのみをつもありますので からのです

1.6.2 Git

git Linux ネルソスツリするためにされたですMercurial その Monotone からけています

git 倒的なまでのコマンドっており1.5.0  においては 139  したコマンドがありますこれらは いとのですザマニュアルせずコマンドするがあるのみです

では git ですなくとも Linux においてはMercurial よりも git つかあります しかしながらではWindows におけるおよびサポしては Mercurial びませ

Mercurial リポジトリがありませんがgit リポジトリによるメタデがあ りますこのしをしない利用やかにするしてしまいます格且しをしな git リポジトリえるバックアップdisk-bound になりますしとしてバックアップ 24するようになってしまったいくつもありますえによってたれている git ポジトリMercurial リポジトリよりもわずかにさいですがえされていないはかなりのきさで

git 部分C されていますくの git コマンドシェルないし Perl スクリプトによりされていますがその いですとみなすべきエラしている闇雲けるスクリプトかけたことがあ ります

1.6.3 CVS

CVS はおそらく使されているですそのさとなまとまりのさからにはされてきませんでした

CVS クライアントキテクチャっていますCVS するファイルコミット へとグルしないためえば、「ある利用によるコミットから部分にしかしな かった利用からはしたしかることができないといったビルド えてしまいますこれはプロジェクトするにもしますとあるタスク としてあるメンバったしようとしたするファイルどのファイルがそうであるか っていればですがしてわれたコミットログするがありま

CVS タグブランチしているためそれについてするにもなれませんファイルディレクトリ サポされていないためリポジトリとしてしまいますチェックするたないためリポジト しているのかかをしたりどのようにしているのかをしることはにはですのいずれのプロ ジェクトしてもCVS はおめできません

Mercurial CVS リポジトリむことができますしかしいくつかのこれは CVS リポジトリ むことのできるしてもですCVS コミットっておらずファイルシステム っていないためCVS から確且再構することはですかのであり きませんCVS くがわれそれいやすいことからCVS からのみをにとって したリポジトリからのみはたるのがですからせる くもとしてはタイムスタンプ10ロックされたままのファイルなどがありま )。

1.6.4 Commercial tools

Perforce クライアントキテクチャっていますがクライアントではキャッシュってい ませんなりとなるてのファイルしてPerforce コマンドによるへの通知 してします

Perforce ではですがえるからします けの Perforce インストザアクセスによるするために、「プロキシされま