WindowsでMercurial

MercurialをWindows上で使う場合の手順をざっくりとまとめました。

全体の手順は以下のような流れです。大体1時間ぐらいかかります。

  1. bitbucketアカウントを取得
  2. リポジトリ作成
  3. SSHの設定
  4. Mercurialクライアントのインストール
  5. 環境設定
  6. リポジトリのダウンロード
  7. リポジトリへファイルの追加
  8. コミット
  9. リポジトリへ変更の反映

1.bitbucketアカウントを取得

「bitbucket」はMercurialリポジトリをフリーで使わせてくれるサービスです。ひとつのリポジトリに対して5人以内なら無料で使えるそうで、練習なら十分すぎるほど使えます。
Free source code hosting — Bitbucket
上記ページを開き、「SIGN UP NOW, FREE」ボタンを押すと、個人情報入力画面が表示されるので、登録します。
登録が完了すると、自分のポータルのページが表示されたはずです。

2.リポジトリ作成

bitbucket上に新しいリポジトリを作成します。
「Repositories」→「Create Repository」
表示された画面で、Name欄にリポジトリ名、それ以外も適当に入力して「Create Repository」押下で実行すると、Overviewページへ移動します。

3.SSHの設定

PuTTYのダウンロード

まず、以下からzipかmsiをダウンロードします。
PuTTY Download Page (2012/6/19現在の最新はver0.62)

SSHキーの準備

適当な場所に展開またはインストールしたら、まずはキーを作成するために「puttygen.exe」を起動します。
「Generate」ボタンを押し、上のエリアでマウスをグリグリ動かすと「Public key for pasting into OpenSSH authorized_key file:」欄にOpenSSHの公開鍵が表示されますのでコピーします。ついでにパスフェーズを入力して「Save private key」押下で秘密鍵をローカルに保存しておきます。

ローカルのSSHキーの設定

「pageant.exe」を起動します。タスクトレイのアイコンをダブルクリックし、「Pageant Key List」を開いてから「Add Key」を押下し、秘密鍵のファイルを選びます。

サーバーのSSHキーの設定

bitbucketを開き、ユーザーのメニューから「Account」→「SSH keys」と選びます。
LabelはそのPCの名前など、SSH Keyは、上でコピーした文字列をペーストし、「Add key」で追加します。

4.Mercurialクライアントのインストール

TortoiseHgという、Mercurialの機能+GUI+Explorer拡張という便利なフリーソフトがあるので、それを入れます。以下から環境にあったセットアップをダウンロードします。
Mercurial SCM (2012/6/19現在の最新はver2.2.2)
言われるままインストールしていけば完了します。GUIでも色々できそうですが覚えるのが大変そうなので、以下はCUIベースで説明します。

5.環境設定

コレをしないと動きません。「mercurial.ini」という名前の設定ファイルを、ユーザーのフォルダ直下に入れます。

c:\Users\suzuki\mercurial.ini

このファイルには以下のような設定を入れておきます。

[ui]
username=Taro Suzuki <taro.suzuki@abc.com>
[extensions]
graphlog=

前半はユーザー名の設定です。名前とメールアドレスの間は半角スペース1文字が必要だそうです。後半はログを「hg glog」でグラフィカルに見たい場合に入れておきます。

次に日本語化。コントロールパネル→システムとセキュリティ→システム→「システムの詳細設定」で「システムのプロパティ」ダイアログを開く。「環境変数」ボタン押下し、システムの環境変数欄の「新規」ボタンを押下。
名前を「LANG」、値を「ja_JP」と入力し、OSを再起動する。

6.リポジトリのダウンロード

ようやく準備が整いました。早速、bitbucketに作ったリポジトリをローカルに落としてきてみましょう。
まず、bitbucketで先ほど作ったリポジトリ画面を開きます。Overviewのタブの中に、「Clone this repository」とあってその下にcloneのコマンドが表示されているので、コピーします。

$ hg clone ssh://hg@bitbucket.org/taro.suzuki/myrepository

コマンドプロンプトを開き、このリポジトリをダウンロードしたいフォルダへ移動してから、closeコマンドを実行します。

$ cd \users\suzuki\documents\
$ hg clone ssh://hg@bitbucket.org/suzuki/myrepository

色々表示されて完了したら、ローカルのdocumentsフォルダを開いてみます。myrepositoryというフォルダーができているはずです。さらに、「.hg」というフォルダーが見えます。このフォルダーにはリポジトリの接続先や履歴情報が格納されており、ルートに一つだけ存在します。このフォルダーを削除すると、連動が切れた状態に戻ります。よって消してはいけません。
このcloneやpullの作業は、VSSやTFSのチェックアウトの操作を表しています。そのためこのフォルダー以下への編集は、すべて差分として認識されます。

7.リポジトリへファイルの追加

管理対象への追加は自動ではやってくれないので、自分で追加してやります。
まず、エクスプローラー等でファイルを追加し、ローカルリポジトリのあるフォルダーへ移動してから、addコマンドで管理対象へ追加します。

$ cd \users\suzuki\documents\myrepository
$ hg add

これだけです。

8.コミット

Mercurialでは、追加・編集・削除・マージのたびにコミットしなければならなりません。コマンドは以下。これで、それまでの変更がローカルのリポジトリにコミットされます。

$ hg commit

これだけです。

9.リポジトリへ変更の反映

コミットはローカルのリポジトリへ変更が反映されただけです。bitbucket上のメインの(セントラルの)リポジトリへ変更を反映するには「push」します。

$ hg push

これだけです。

bitbucketの「Repository」で「Source」のタブを見てみると、ファイルが追加されているはずです。

以上で完了です。次回はVisual Studioのプロジェクトをリポジトリへ追加してみます。