Mercurial はいくつもの異なる コラボレーションモデル に対応しています。本節ではその中の1つである中央リポジトリ型について説明します。 中央リポジトリ型は他のモデルのようにスケールしませんが、誰もが最初に 試すアプローチですし、他のバージョン管理ツールなどでもよく知られています。
さて、始めるにあたって中央リポジトリを作成したいと思います。 既存の Mercurial 以外のリポジトリを 変換 する方法も ありますが、ここでは空っぽの新しいリポジトリから始めます。
これ以降、既に TortoiseHg が正しくインストールされており、エクスプローラなどで プロジェクトのディレクトリが開かれているものとして話を進めていきます。
まず最初に TortoiseHg にあなたが誰なのかを教えなければなりません。 TortoiseHg のグローバル設定から設定できます。プロジェクトディレクトリを 右クリックして TortoiseHg ‣ グローバル設定 を選択します。
何もファイルを選択していないときの右クリックメニュー
そして コミット タブに切り替えて、 ユーザ名 の テキストボックスに名前を入力してください。
ノート
ユーザ名の設定をし忘れた場合、TortoiseHg は必要に応じてコミット時にユーザ名の 入力を促します。
ノート
ユーザ名として設定する名前の形式に厳密なルールがあるわけではありませんが、 多くの人が次のような形式を採用しています:
氏名 <電子メールアドレス>
例えば:
Taro Yamada <taroyamada@example.net>
電子メールアドレスはチェンジログビューアで履歴を表示する際には削除され、 Mercurial 内蔵のウェブサーバを利用した場合はスパム対策のためメールアドレス の一部のみ表示されます。
右クリックメニューの ここにリポジトリを作成 を選択するか、 コマンドラインから hgtk init を実行して最初のリポジトリを ローカルディスク上に作成してみましょう。 この作業はプロジェクトディレクトリのルートで一度だけ行ってください。
リポジトリ初期化ダイアログ
特に理由がなければ 特殊ファイルを追加する (.hgignoreなど) にチェックを入れ、 Mercurial 1.0 互換のリポジトリを作成 のチェックは外した状態で リポジトリを作成すると良いでしょう。
作成 ボタンを押すと Mercurial はプロジェクトディレクトリに .hg という名前のディレクトリを作成します。 ここには Mercurial の全てのバージョン情報が保管され、一般に リポジトリ と呼ばれています。一方、実際のソースファイルなどが含まれているディレクトリを 作業ディレクトリ と呼びます。コマンドを実行するときこの .hg ディレクトリを指定する必要はなく、作業ディレクトリのルートを指定するだけで 大丈夫です。これは Mercurial がどのように動いているのかを理解するために 覚えておくと良いかもしれません。
警告
.hg を直接編集することはリポジトリの破損を引き起こすため危険です。 ただし .hg/hgrc のみ例外的に編集が認められています。
いよいよ Mercurial にどのファイルを管理下に置き、どのファイルを無視すべき なのかを指定します。これにはいくつものやり方があります:
ノート
.hgignore ファイルは作業ディレクトリのルートに含まれており、 通常は Mercurial のバージョン管理下に置かれています。
ノート
作業ディレクトリにたくさんの 不明 ファイルを放置したままにしないというのは、 バージョン管理下に置くべきファイルの追加し忘れを未然に防ぐという意味で よい習慣と言えます。そのため .hgignore ファイルを極力最新の状態に 保つよう努めてください。
プロジェクトディレクトリを右クリックして HG コミット ... を 選択するか、コマンドラインから hgtk commit を実行して変更点を ローカルリポジトリにコミットします。コミットメッセージを記述し、 コミットしたいファイルにチェックを入れてから コミット ボタンを 押します。コミット後にコミットメッセージの内容やコミットしたファイルの間違いに 気付いた場合は 取り消し ボタンで直前のコミットを取り消すことが できます。入力したコミットメッセージはメッセージ履歴のドロップダウンリストに 残るため、同じメッセージを再度入力し直す必要はありません。
ノート
コミットツールを閉じてしまうと直前のコミットを 取り消し ボタンで 取り消すことは出来なくなります。
コミットツール
これであなたの成果を共有するための準備が整いました。あとはこのリポジトリを 他のメンバからも参照できる共用スペースにコピーするだけでOKです。 Mercurial ではこれを リポジトリのクローン (cloning your repository) と 呼んでいます。リポジトリを共用スペース、例えば共有ドライブ、またウェブサイト などにクローンすれば、それが開発チームのマージポイントになるでしょう。 エクスプローラで共有ドライブに置いたリポジトリを開き、そのディレクトリの 右クリックメニューから TortoiseHg ‣ リポジトリのクローン を選ぶか、コマンドラインから hgtk clone を実行します。
クローンダイアログ
チームでコードを共有するための 中央リポジトリ に、あなたが持っている ローカルのリポジトリのような作業ディレクトリは必要ありません。 つまり、純粋にリポジトリだけあれば十分と言えます。このような場合、 クローン後に作業ディレクトリを HEAD に更新しない にチェックを入れることで Mercurial は中央リポジトリのクローンから 作業コピーをチェックアウトしません。その結果、プロジェクトのリビジョン履歴の 全てが格納されている .hg のみとなります。
他のチームメンバはこの中央リポジトリからクローンすることで作業できます。
今あなたがあるチームと共同作業を始めたいとします。彼らは X からリポジトリを取得してくれ と言っていますが、どういう意味なのでしょうか? これは、X という場所に置かれているリポジトリをローカルにクローンしてくれ、 という意味になります。Mercurial ではこれをクローン (cloning) と呼び、 TortoiseHg には専用のダイアログが用意されています。 クローンを作成したいディレクトリで右クリックメニューを開いて TortoiseHg ‣ リポジトリのクローン を選択するか コマンドラインから hgtk clone を実行してください。
クローンダイアログ
今回はこれからクローンするリポジトリの作業ディレクトリでプロジェクトの作業を するため、 クローン後に作業ディレクトリを HEAD に更新しない のチェックは外してください。これで Mercurial は作業ディレクトリを tip リビジョンに更新します。
作業ディレクトリでいくつかの変更を加えたとします。エクスプローラでいくつかの 変更が保留中であることをアイコンオーバーレイの変化から簡単に確認できます。 より詳細な変更点の確認やそれらのコミットはエクスプローラから行うことができます。 手っ取り早い方法はコミットツールを使うことです:
コミットツールは変更の差分を表示してくれます。もしくは普段使用している GUI の 差分表示ツール (kdiff など) を使用することもできます。 Mercurial のリポジトリは 分散型になっているため、変更点を共有リポジトリと同期 (変更点の共有) するかどうか 決める前にローカルリポジトリにコミットできます。
変更を共有リポジトリに公開する準備が整ったら、
文章にすると複雑に見えますが、実際には同期ツールのボタンを押すだけです。
ノート
マージ作業に失敗したとしても安全に最初からマージ作業を始めることが可能です。
同期ダイアログ
Mercurial は共同作業を簡単に、素早く、効率的にします。 詳しくは Mercurial の wiki をご覧ください。