Mercurial(Hg)によるソフトウェア開発を始めよう

osdn_logo

Mercurial(Hg)によるソフトウェア開発を始めよう

OSDNでは、無料で利用できるMercurialリポジトリを提供しています。

公開Mercurialリポジトリを作成する 複数人で共有できるMercurialリポジトリを作成する
Mercurialロゴマーク

Mercurialとは?

MercurialはPythonで実装されたクロスプラットフォームのソースコード管理システムです。コマンドラインのフロントエンドの名称である「hg」という名前でも呼ばれています。ソースコードに対する変更を記録・管理するバージョン管理機能を持ち、またマージやクローンといった、分散型のバージョン管理に必要なすべての機能を備えています。また、Windowsサポートも優れており、Windows向けの公式GUIクライアント「TortoiseHg」も開発されています。

ソースコード管理システム/バージョン管理システムってなに?

バージョン管理というのは、指定した任意の時点における指定したファイルやディレクトリの内容を「リポジトリ」と呼ばれるデータベースに記録しておくことで、変更の内容をあとから容易に参照できるようにすることです。これにより、誰がどの個所を修正したのか、修正前はどのような状態だったのか、というのを容易に把握できるようになり、また修正後のファイルを記録しておいた修正前の状態に復元する、といったことも簡単に行えるようになります。このような処理を行うシステムは、「バージョン管理システム」(Version Control System、VCS)と呼ばれており、またリポジトリに状態を記録することを「コミット」と呼びます。

近年のバージョン管理システムの多くではファイルやディレクトリの変更履歴を管理するだけでなく、ネットワーク経由でリポジトリへのアクセスを可能にするクライアント/サーバー機能が搭載されており、これを利用してリモートのサーバーから最新版のファイルや記録されている任意の時点のファイルを取り出したり、また自分が更新したファイルの差分をリモートのサーバーに送信して変更内容を記録させる、といったことが可能になっています。そのため「ソースコード管理システム」(Source Code Management System、SCM)などと呼ばれることもあります。

Windows向けMercurialクライアント「TortoiseHg」

Mercurialの特徴

Mercurialは、各開発者がそれぞれローカルにリポジトリを作成して利用できる分散型のソースコード管理システムです。そのため、ネットワークが利用できない環境でもバージョン管理を行うことが可能です。また、大きな開発プロジェクトでもストレス無く利用できる高速性や、さまざまな環境で動作する移植性の高さも特徴です。

Mercurialの主要部分はPythonで実装されており、処理速度が必要な一部のみがCで実装されています。そのため、ほぼすべての主要プラットフォームでMercurialは利用可能です。さらに、Windows環境との親和性も高く、GUIでリポジトリを操作できるクライアントや、WindowsのExplorerと連携するシェル拡張などが標準で提供されています。

分散型のソースコード管理システムでは、開発者がローカルのリポジトリに保存した変更を、「push」および「pull」と呼ばれる仕組みでほかのリポジトリ(リモートリポジトリ)に送信することができます。pushはリモートリポジトリとローカルリポジトリの差分情報をリモートリポジトリに送信するもので、これによりリモートリポジトリとローカルリポジトリを同期させることが可能になります。また、pullはリモートリポジトリとローカルリポジトリとの差分情報をローカルリポジトリに持ってくるもので、ほかの開発者がソースコードに加えた変更点などを手元のソースコードに適用する場合に利用されます。

また、任意のリモートリポジトリからファイルを取り出し、自分の手元でファイルやディレクトリに変更を加えるためにローカルリポジトリを作成する作業は「clone」と呼ばれています。ほかの開発者が作成したソースコードに対し新たに変更を加える際は、cloneを使ってファイルを取得し、修正を加えてコミットし、pushもしくはpullで変更点をやり取りする、という開発スタイルが一般的です。

Mercurial(hg)の基本コマンド

Mercurialを利用するためのクライアントとしては、コマンドラインから利用するhgコマンドや、Windowsなどで利用できるGUIクライアント「TortoiseHg」などがあります。たとえばhgコマンドの場合、リポジトリを新規に作成するには「hg init」コマンドを実行します。

$ hg init

「hg init」コマンドを実行すると、実行したディレクトリにリポジトリが作成されます。リポジトリに関する情報は「.hg」というディレクトリに格納されます。作成したリポジトリにファイルを追加するには、「hg add」コマンドを利用します。

$ hg add <追加するファイル>

変更点をリポジトリに記録するには、「hg commit」もしくはその短縮形の「hg ci」コマンドを使用します。

$ hg commit -m "<コミットメッセージ>"

ここで、コミットメッセージには変更点の要約などを入力する。省略された場合、エディタなどが起動してそこでメッセージを入力する形になります。

いっぽう、既存のMercurialリポジトリをコピーしてローカルリポジトリを作成する場合は「hg clone」コマンドを実行します。

$ hg clone <リポジトリのURL>

また、ローカルリポジトリの内容をリモートリポジトリに送信する(pushする)には、「hg push」コマンドを実行します。

$ hg push <送信先リポジトリのURL>

逆に、リモートリポジトリでの変更点をローカルリポジトリに取り込むには、「hg pull」コマンドを実行します。

$ hg pull <取り込むリモートリポジトリのURL>
Mercurialリポジトリの作成

OSDNでのMercurialサポート

OSDNでは、以下のようなMercurialサポートを提供しています。

  • 個人用開発支援機能「PersonalForge」においてMercurialリポジトリを提供
  • 開発プロジェクトにおいてMercurialリポジトリを提供
  • 無償で利用できるシェルサーバー/Webサーバーでのhgコマンドサポート

これらの機能は、OSDNへのアカウント登録を行うだけですべて無料で利用できます。作成できるリポジトリ数やサイズの制限などはありません。

作業部屋のMercurialリポジトリブラウザ

個人向け開発支援機能「PersonalForge」におけるMercurialリポジトリの提供

個人向け開発支援サービス「PersonalForge」では、Mercurialの個人リポジトリやファイルアップローダー、Wikiといった機能を提供する「作業部屋」を利用できます。作業部屋は無制限に作成でき、また任意のファイルをアップロードして公開できます。

PersonalForgeではOSDNが独自に開発したレポジトリブラウザが提供されており、任意のブランチのファイル一覧やコミット履歴、ブランチ/タグ一覧などをWebブラウザ上で確認できます。

プロジェクトのMercurialリポジトリ

開発プロジェクトにおけるMercurialリポジトリの提供

オープンソースソフトウェア開発に向けた「プロジェクト」機能では、ソースコード管理システムを提供しています。GitおよびSubversion、Mercurial、Bazaar、CVSといったソースコード管理システムが利用可能で、GitおよびSubversion、Mercurialについては独自開発のリポジトリブラウザが提供されています。

そのほかプロジェクト向けにはWikiやファイルリリース(アップローダ)、チケット、ニュース、フォーラム(掲示板)、メーリングリストと行った機能も利用できます。

無償で利用できるシェルサーバー/Webサーバーでのhgコマンドサポート

OSDNでは、プロジェクトで開発したソフトウェアのテストやWebサイト構築に利用できるシェルサーバーを提供しています。シェルサーバーにはSSHを利用してログインでき、またMySQLデータベースの利用も可能です。シェルサーバーにはgitやsvn、hgといったコマンドがインストールされており、これらを使ってファイルをシェルサーバーにコピーすることが可能です。

公開Mercurialリポジトリを作成する プロジェクトを作成する