「オープンソース」を使ってみよう (第28回 Mercurial 編)

No Comments
このエントリーをはてなブックマークに追加

————————-
mercurial-users.jp
近藤 隆幸
————————-

Table of Contents
==========================
1. Mercurial の概要
2. Mercurial の特長
3. 本記事の対象読者
4. ダウンロードおよびインストール
5. インストール後の設定
6. 事前準備
7. ひとりで始める Mercurial
8. 最後に

1. Mercurial の概要

mercurial-users.jp の近藤と申します。はじめまして。

私からは、 Mercurial という分散バージョン管理ソフトウェアを
簡単に紹介させていただきます。

Mercurial は、分散バージョン管理ソフトウェアです。
分散とはなんのことでしょうか?

分散とは、リポジトリが分散しています。
リポジトリをローカルに持つことで、ローカル上で作業ができるなど
様々な利点があります。

このような分散型に分類される似たような考え方のソフトウェアとしては、
Git や Bazaar といったソフトウェアがあります。

また DVCS (Distributed Version Control System) と呼ばれることも
多いです。

分散型バージョン管理

では、従来の集中型と、分散型の違いをみていきましょう。

集中型と分散型の違いを図に示します。
左は、集中型では、いまでもよく使われている Subversion が代表的です。
右が、分散バージョン管理になります。

一見するとちょっと複雑になった感じがしますね。

DVCS の作業フロー

既に存在するリポジトリを操作する

代表的な3つの操作について学んでいきましょう。

1. clone (クローン)
 既に存在するリポジトリを新規ディレクトリに複製します

2. commit (コミット)
 変更内容をリポジトリに登録します

3. push/pull
 ○変更履歴(リビジョン)を反映したり、取り込んだりします
  
  明示的に、push/pull しない限り、自分のリポジトリと
  他のリポジトリが同期することはありません。
  つまり、考え方によっては好きなタイミングで行えるということです。

新規にリポジトリ作成する (既に存在するファイルの管理を始める)

クローンは、既に存在するリポジトリを複製しますが、
init にてすでに存在するディレクトリに新規リポジトリを
作成することもできます。

1. init

  ○ 指定したディレクトリに新規リポジトリを作成する

2. Mercurial の特長
Mercurial の特長としては、コマンド体系がシンプルと
いったところと TortoiseHg という優れたGUIがあること
でしょうか。

CUI上でコマンドにて実行することももちろんできます。
コマンド名は、 hg です。
hg コマンドは、右手の人差し指と、左手の人差し指で タイプ
できるので簡単ですね。

 ▼Note
 mercurial コマンドの由来である mercury(水銀) の元素記号の hg からきています 

コマンド体系は、Subversion に似ていて、シンプルなことが特長です。

3. 本記事の対象読者
本記事では、下記の方を対象とします。

  ● Windows ユーザ
  ● バージョン管理を知っているが使ったことがない

インストールと簡単な最初の使い方を紹介していきますね。

4. ダウンロードおよびインストール
Mercurial は、Windows , Mac OS X, Linux などの OS に対応しています。

公式サイトから Mercurial 2.4.2 TortoiseHg 2.6.2 with を
ダウンロードすると、TortoiseHgのインストーラがダウンロードできます。

Windows版の ToroiseHg には、 Mercurial 本体やその実行環境(Python)も
同梱されていますので、このインストーラだけで準備可能です。

5. インストール後の設定
下記2箇所の日本語設定をしておくとよいですね。

1. 日本語設定(右クリックメニュー)

 Program Files 以下にインストールされた言語毎のレジストリファイルを
 ダブルクリックしてください。
 日本語(ja)の場合は、下記パスになります。

  C:\Program Files\TortoiseHg\i18n\cmenu\thg-cmenu-ja.reg

2. hg コマンドの日本語化

 Windows の環境変数 LANGUAGE 環境変数に ja を設定してください。

6. 事前準備
設定ファイル(Mercurial.ini) に最低限の設定をします。

名前 <メールアドレス> の形式が共通フォーマットとなっています。

 ▼Note
 設定ファイルは、 .hgrc でも大丈夫です。 

7. ひとりで始める Mercurial
分散バージョン管理は、ローカルにリポジトリを持てますので、
ネットワークにつながっていないマシンでも作業が可能です。

リポジトリとは

Mercurial のリポジトリについて少し理解を深めましょう。
リポジトリは、メタデータのことで、完全な歴史を含むすべての
履歴が格納されます。

また、.hg 配下に全て格納されます。

リポジトリと作業領域

作業領域は、リポジトリと同じディレクトリのことを示します。
作業領域と、リポジトリは一体化していますが、.hg フォルダ以外に
Mercurial のファイルは存在しませんので、.hg を削除することで
Mercurial 管理下から外すことも簡単にできます。

リポジトリの作成(hg init)

新規に Mercurial で管理をするために、リポジトリを作成しましょう。

コマンドは、hg init にてリポジトリを作成することができます。

リポジトリを新規作成というと、きれいな場所から作成するような印象を
受けますが、 Mercurial ではすでに作成してあるファイルを管理対象とする
ことができます。

C:\work\hgtest にリポジトリを作成してみましょう。

なお、C:\work\hgtest はすでに存在していてもかまいません

TortoiseHg Workbench を起動し、下記のように実行してみてください。

 ▼Note
 Mercurial ではファイルを消したりしませんので安心です。 

Workbench は下記のようになります。
もし、表示が合っていない場合は、”作業領域” をクリックすると作業領域が
表示された画面となると思います。

追加 (hg add)

まず、なにかファイルを追加しましょう。

ここでは README.txt を追加することとします。
C:\work\hgtest\以下に README.txt を作成してください。

   ● .hgignore ファイルについて

     ● すでに、 .hgignore ファイルが追加されています。
     ● このファイルは 構成管理対象外にしたいファイルをあらかじめ
       記録しておくことで追加作業を用意にする仕組みです。
     ● ここではあまり気にしないでいいでしょう
      (add や commit してもかまいません)

作業領域をクリックし、追加したいファイルを選択します。
右クリックし追加しましょう。
もし出てこない場合は、ファイルリストを更新 ボタンを押しましょう。

追加されました。ここでは追加は予約のようなもので、まだ追加分の
登録(コミット)はされていないです。

コミット (hg commit)

commit は、ファイルの追加や変更をリポジトリに記録します。

add した README.txt を登録するために、コミットしてみましょう。

  1. チェックボックスにてコミット対象を選択
  2. コミットログを記載
  3. コミットボタンを押下

コミットをクリックすると、リビジョン0 にコミットされます。
リビジョンツリーは下記のような画面になっていることでしょう。

 ▼Note
 もちろん、複数ファイルを扱うこともできます。
 意味のある変更単位をまとめてコミットすることをオススメします。 

ファイルを更新

変更点を確認し、コミットするために、README.txt をお好きなエディタで
編集してみましょう。ここでは数行を追加しました。

変更を確認(diff)し、再度コミット(commit)

変更分を確認するために、workbench 上で確認してみましょう。

より差分を見たい場合は、GUIで差分をみることもできます。
ファイルをダブルクリックすると差分をGUIで確認することができます。

下記例は、WinMerge を使用した例です。(設定で変えることができます)

では、変更内容を確認した上でコミットしましょう。

変更の取り消し (hg revert)

もし編集を間違えたりした場合、変更を取り消すことも簡単にできます。
変更を取り消すために、ファイルを右クリックし、”復旧”を選びましょう。

作業領域の更新 (hg update)

update のコマンドを説明します。

update というとなにかリポジトリが更新されるような印象がしますが、
作業領域を更新するコマンドです。
つまり、リポジトリにコミットした時点の歴史に戻ることができます。

ここでは、リポジトリに登録した時点のファイルに戻るために、作業領域を
更新してみましょう。

リビジョンツリーを右クリックし、”特定のリビジョンへ更新”を選択しましょう。

作業領域の README.txt が リビジョン0 (add した時点)のファイルに戻りました。
つまり一度コミットさえしておけば、いつでもそのリビジョンのファイルを作業
領域に展開し、作業することが可能です。

8. 最後に
最後までお読みいただきありがとうございます。

ローカルファイルの変更管理も、 Mercurial を使うことで 操作しやすい GUI
で始めることができました。

ほんのさわりの部分でしたが、分散バージョン管理、 Mercurial に興味を持たれ
た方が増えたら幸いです。

今回は説明対象から省きましたが、普段デスクトップPCで開発したソースを、
ノートPCで開発して同期をとるといったことも可能です。
(push / pull / clone を使います)

mercurial-users.jp の公式サイトでは、リンク集などもありますので
ぜひ一度アクセスしてくださいね。

—————————————————————————————————————-
OSC2013 Tokyo/Springに出展します!
セミナーと展示ブースに是非、足を運んでみて下さい。

▼セミナー詳細
http://www.ospn.jp/osc2013-spring/modules/eguide/event.php?eid=45
▼展示一覧
http://www.ospn.jp/osc2013-spring/modules/article/article.php?articleid=1

Comments are closed.