3. せっかちな人のためのクイックチュートリアル

Mercurial はいくつもの異なる コラボレーションモデル に対応しています。本節ではその中の1つである中央リポジトリ型について説明します。 中央リポジトリ型は他のモデルのようにスケールしませんが、誰もが最初に 試すアプローチですし、他のバージョン管理ツールなどでもよく知られています。

さて、始めるにあたって中央リポジトリを作成したいと思います。 既存の Mercurial 以外のリポジトリを 変換 する方法も ありますが、ここでは空っぽの新しいリポジトリから始めます。

これ以降、既に TortoiseHg が正しくインストールされており、エクスプローラなどで プロジェクトのディレクトリが開かれているものとして話を進めていきます。

3.1. TortoiseHg の設定

まず最初に TortoiseHg にあなたが誰なのかを教えなければなりません。 TortoiseHg のグローバル設定から設定できます。プロジェクトディレクトリを 右クリックして TortoiseHg ‣ グローバル設定 を選択します。

右クリックメニュー

何もファイルを選択していないときの右クリックメニュー

そして コミット タブに切り替えて、 ユーザ名 の テキストボックスに名前を入力してください。

ノート

ユーザ名の設定をし忘れた場合、TortoiseHg は必要に応じてコミット時にユーザ名の 入力を促します。

ノート

ユーザ名として設定する名前の形式に厳密なルールがあるわけではありませんが、 多くの人が次のような形式を採用しています:

氏名 <電子メールアドレス>

例えば:

Taro Yamada <taroyamada@example.net>

電子メールアドレスはチェンジログビューアで履歴を表示する際には削除され、 Mercurial 内蔵のウェブサーバを利用した場合はスパム対策のためメールアドレス の一部のみ表示されます。

3.2. リポジトリの初期化

右クリックメニューの ここにリポジトリを作成 を選択するか、 コマンドラインから hgtk init を実行して最初のリポジトリを ローカルディスク上に作成してみましょう。 この作業はプロジェクトディレクトリのルートで一度だけ行ってください。

初期化ダイアログ

リポジトリ初期化ダイアログ

特に理由がなければ 特殊ファイルを追加する (.hgignoreなど) にチェックを入れ、 Mercurial 1.0 互換のリポジトリを作成 のチェックは外した状態で リポジトリを作成すると良いでしょう。

作成 ボタンを押すと Mercurial はプロジェクトディレクトリに .hg という名前のディレクトリを作成します。 ここには Mercurial の全てのバージョン情報が保管され、一般に リポジトリ と呼ばれています。一方、実際のソースファイルなどが含まれているディレクトリを 作業ディレクトリ と呼びます。コマンドを実行するときこの .hg ディレクトリを指定する必要はなく、作業ディレクトリのルートを指定するだけで 大丈夫です。これは Mercurial がどのように動いているのかを理解するために 覚えておくと良いかもしれません。

警告

.hg を直接編集することはリポジトリの破損を引き起こすため危険です。 ただし .hg/hgrc のみ例外的に編集が認められています。

3.3. ファイルの追加

いよいよ Mercurial にどのファイルを管理下に置き、どのファイルを無視すべき なのかを指定します。これにはいくつものやり方があります:

  1. エクスプローラで追加したいファイルを右クリックしてメニューを開いて TortoiseHg ‣ 追加 を選択します。 この操作はすぐに実行され、TortoiseHg のダイアログは表示されませんが、 エクスプローラでそのファイルのアイコンオーバーレイが追加されたことを示す アイコンに変わったことを確認できます。
  2. もしくは、ステータスツール (TortoiseHg ‣ 変更点の確認 またはコマンドラインから hgtk status) を開いて追加したいファイルの チェックボックスにチェックを入れ、 追加 ボタンを押します。 ステータスツールでは、不明なファイルの右クリックメニュー (無視) から無視フィルタツールを開くこともできます。
  3. または、ファイルの追加を独立した作業として行わず、コミットツールで済ます ことも可能です。コミットツールはステータスツールと非常に似ており、 ステータスツールで可能な操作は全てコミットツールでも行えます。 このツールではファイルにチェックを入れて コミット ボタンを押す ことで、まだ Mercurial 管理下に置かれていないファイルの追加およびコミット することができます。
  4. 無視ファイルを指定するために無視フィルタダイアログを開きます: 右クリックメニューから TortoiseHg ‣ 無視フィルタの編集 を選択するか、コマンドラインから hgtk hgignore を実行します。 一覧からファイルを選択するか直接 Glob または 正規表現 を入力して 追加 ボタンを押してください。ここでの変更は即座に反映されます。

ノート

.hgignore ファイルは作業ディレクトリのルートに含まれており、 通常は Mercurial のバージョン管理下に置かれています。

ノート

作業ディレクトリにたくさんの 不明 ファイルを放置したままにしないというのは、 バージョン管理下に置くべきファイルの追加し忘れを未然に防ぐという意味で よい習慣と言えます。そのため .hgignore ファイルを極力最新の状態に 保つよう努めてください。

3.4. コミット

プロジェクトディレクトリを右クリックして HG コミット ... を 選択するか、コマンドラインから hgtk commit を実行して変更点を ローカルリポジトリにコミットします。コミットメッセージを記述し、 コミットしたいファイルにチェックを入れてから コミット ボタンを 押します。コミット後にコミットメッセージの内容やコミットしたファイルの間違いに 気付いた場合は 取り消し ボタンで直前のコミットを取り消すことが できます。入力したコミットメッセージはメッセージ履歴のドロップダウンリストに 残るため、同じメッセージを再度入力し直す必要はありません。

ノート

コミットツールを閉じてしまうと直前のコミットを 取り消し ボタンで 取り消すことは出来なくなります。

コミットダイアログ

コミットツール

3.5. リポジトリの共有

これであなたの成果を共有するための準備が整いました。あとはこのリポジトリを 他のメンバからも参照できる共用スペースにコピーするだけでOKです。 Mercurial ではこれを リポジトリのクローン (cloning your repository) と 呼んでいます。リポジトリを共用スペース、例えば共有ドライブ、またウェブサイト などにクローンすれば、それが開発チームのマージポイントになるでしょう。 エクスプローラで共有ドライブに置いたリポジトリを開き、そのディレクトリの 右クリックメニューから TortoiseHg ‣ リポジトリのクローン を選ぶか、コマンドラインから hgtk clone を実行します。

クローンダイアログ

クローンダイアログ

チームでコードを共有するための 中央リポジトリ に、あなたが持っている ローカルのリポジトリのような作業ディレクトリは必要ありません。 つまり、純粋にリポジトリだけあれば十分と言えます。このような場合、 クローン後に作業ディレクトリを HEAD に更新しない にチェックを入れることで Mercurial は中央リポジトリのクローンから 作業コピーをチェックアウトしません。その結果、プロジェクトのリビジョン履歴の 全てが格納されている .hg のみとなります。

他のチームメンバはこの中央リポジトリからクローンすることで作業できます。

3.6. 共有リポジトリからの取得

今あなたがあるチームと共同作業を始めたいとします。彼らは X からリポジトリを取得してくれ と言っていますが、どういう意味なのでしょうか? これは、X という場所に置かれているリポジトリをローカルにクローンしてくれ、 という意味になります。Mercurial ではこれをクローン (cloning) と呼び、 TortoiseHg には専用のダイアログが用意されています。 クローンを作成したいディレクトリで右クリックメニューを開いて TortoiseHg ‣ リポジトリのクローン を選択するか コマンドラインから hgtk clone を実行してください。

クローンダイアログ

クローンダイアログ

今回はこれからクローンするリポジトリの作業ディレクトリでプロジェクトの作業を するため、 クローン後に作業ディレクトリを HEAD に更新しない のチェックは外してください。これで Mercurial は作業ディレクトリを tip リビジョンに更新します。

3.7. リポジトリを使ったワークフロー

作業ディレクトリでいくつかの変更を加えたとします。エクスプローラでいくつかの 変更が保留中であることをアイコンオーバーレイの変化から簡単に確認できます。 より詳細な変更点の確認やそれらのコミットはエクスプローラから行うことができます。 手っ取り早い方法はコミットツールを使うことです:

コミットツールは変更の差分を表示してくれます。もしくは普段使用している GUI の 差分表示ツール (kdiff など) を使用することもできます。 Mercurial のリポジトリは 分散型になっているため、変更点を共有リポジトリと同期 (変更点の共有) するかどうか 決める前にローカルリポジトリにコミットできます。

変更を共有リポジトリに公開する準備が整ったら、

  1. まだ変更をローカルリポジトリにコミットしていないのであれば、 先にそれを済ませます (前述)。
  2. 共有リポジトリから変更をローカルリポジトリにプル (pull) します: 右クリックメニューから TortoiseHg ‣ 同期ツール または コマンドラインから hgtk synch を実行し、共有リポジトリの場所を 選択してからツールバーの プル ボタンを押します。
  3. いくつかのチェンジセットがプルされた場合、それらの変更とローカルでの変更を マージして、マージ結果をローカルリポジトリにコミットしてください。 チェンジログビューアから (TortoiseHg ‣ ログの表示 または hgtk log) マージしたいリビジョンの右クリックメニューを 開いて マージ を選択します。マージダイアログが表示されるので、 マージ ボタンを押してマージを実行し、 コミット してください。
  4. マージが正しく行われたかどうかテストなどで検証してください。
  5. 変更を共有リポジトリにプッシュ (push) するために、 TortoiseHg ‣ 同期ツール または hgtk synch で同期ダイアログを開き、共有リポジトリの場所を選択してから プッシュ ボタンを押します。

文章にすると複雑に見えますが、実際には同期ツールのボタンを押すだけです。

ノート

マージ作業に失敗したとしても安全に最初からマージ作業を始めることが可能です。

同期ダイアログ

同期ダイアログ

Mercurial は共同作業を簡単に、素早く、効率的にします。 詳しくは Mercurial の wiki をご覧ください。