Mercurialではじめる分散構成管理

第1回 「分散」への第一歩 ~ ローカルでの複製

この記事を読むのに必要な時間:およそ 6 分

Mercurialとは,Pythonで実装された,分散リポジトリ形式の構成管理ツールです(「バージョン管理ツール」「リビジョン管理ツール」とも呼ばれています)。OpenJDKやMozilla,OpenSolaris等を始めとする多くのプロジェクトで採用されています。

単に「分散構成管理ツール」と言った場合,ネットワーク経由で連携する,いわゆる「クライアント・サーバ」形式で動作可能なCVSやSubversionも含まれますが,履歴情報の記録・管理が中央のサーバに集約されていることから,これらのツールは「中央集約リポジトリ(centralized repository)」形式と言えます。

一方Mercurialは,リポジトリを複数の場所に分散させることができるため,「分散リポジトリ(distributed repository)」形式と言えます。

「分散リポジトリ」などという仰々しい謳い文句に対して「理解するのが難しいのでは?」と気後れしたり,試しに使ってはみたものの今ひとつ便利さがわからない(あるいは「面倒なのでもう使いたくない!」)と思わた方もおられるかもしれません。

しかし,ちょっとしたコツを飲み込みさえすれば,「分散リポジトリ」によって非常に高い自由度を獲得することができるのです。

この連載では,読者がイメージし易いように具体的な利用シチュエーションを設定しながら,Mercurialによる 「分散リポジトリ」での構成管理について解説しようと思います。本連載がMercurial,ひいては「分散リポジトリ」での構成管理に対する理解の一助になれば幸いです。

Mercurialのインストール

本原稿執筆時点では,OS環境ごとに以下のインストール方法を選択可能です。

表1 インストール方法一覧

OS 形式 方法
Linux/Unix Pythonスクリプト パッケージ管理経由
ソースからビルド
Windows バイナリ(*.exe) インストーラ経由
ソースからビルド
Pythonスクリプト Cygwinのsetup.exe経由
ソースからビルド

Linux/Unix環境ならパッケージ管理経由での導入が簡単です。

Windows環境への導入は,Cygwinを常用しているならCygwinのsetup.exe経由でPythonスクリプト形式を,そうでないならインストーラ経由でのバイナリ形式の導入が簡単です。

それぞれのインストール手順に関しては,別途詳細を説明したページを参照してください。

インストールが済んだなら,早速使ってみましょう。

まっさらな状態からリポジトリを作成する手順は次ページ以降で説明しますので,手近な対象としてMercurial自身のリポジトリを複製してみましょう。

コマンド1

% hg clone http://selenic.com/repo/hg mercurial-repo
requesting all changes
adding changesets
adding manifests
adding file changes
added 6571 changesets with 12628 changes to 910 files
795 files updated, 0 files merged, 0 files removed, 0 files unresolved
% ls -F
mercurial-repo/
%

これで"mercurial-repo"ディレクトリ配下にMercurial自身のリポジトリが複製されました("mercurial-repo"引数を省略した場合,URL末尾の"hg"が複製先ディレクトリ名として使用されます)。

例えば,以下のように"hg log"コマンドを実行することで,Mercurial開発における履歴を参照することができます。

コマンド2

% cd mercurial-repo
% hg log -l 10
changeset:   6570:626cb86a6523
tag:         tip
user:        Benoit Allard <benoit@aeteurope.nl>
date:        Thu Apr 24 17:16:02 2008 +0200
summary:     add compression type type parameter to bundle command

changeset:   6569:c15bfe9cdcd6
user:        Benoit Allard <benoit@aeteurope.nl>
date:        Thu Apr 24 11:48:07 2008 +0200
summary:     add support for HG10GZ bundles to bundlerepo.bundlerevlog()

        :
     (省略)
        :

%

"-l 10"オプションは,表示対象を最新の10件に限定するためのものです。指定しなくても問題ありませんが,大量の履歴が表示されますのでご注意ください。

もしもネットワーク接続を簡単に切断できる状況にあるなら,切断した上で"hg log"を実行してみてください。いわゆる「オフライン」状態でも"hg log"が機能していることがわかるでしょう。

一旦構成管理情報を取り込んでしまえば,オフライン状態でも殆どの機能が利用可能な点は,「中央集約リポジトリ」形式に対する「分散リポジトリ」形式の利点の1つです。

著者プロフィール

藤原克則(ふじわらかつのり)

Mercurial三昧の日々が嵩じて, いつの間にやら『入門Mercurial Linux/Windows対応』を上梓。凝り性なのが災いして,年がら年中アップアップな一介の実装屋。最近は仕事の縁が元で,OpenSolarisに入れ込む毎日。

コメント

コメントの記入