分散型バージョン管理 Mercurial を使ってみた。

あんまりバージョン管理っていうのは意識したことがなかったのですが、ここのところそのせいで問題が起きまくりだったので、最近巷で話題の Mercurial を試してみることにしました。今回は職場のWindowsにも入れたので、LinuxWindowsの両方について書いてみる。といっても文字コード以外ではそんなに意識することはないんだけど。

インストール

Windows

::Berkwood Systems:: Official Homepage of Berkwood Systems  Berkwood.comWindows用バイナリパッケージが配布されているので、ここから最新版をダウンロードする。インストーラー形式で、python自体は特に必要なさげ。
あと、有名なGUIツールであるTortoiseシリーズのMercurial版、TortoiseHgがあるので併せてインストールしておくと便利。

Linux

debパッケージとrpmパッケージがサイトで公開されているけど、おいらが使っているopenSUSEはzypperからインストール可能。

sudo zypper in mercurial

基本的な使い方

リポジトリ作成
cd DIR
hg init

バージョン管理を行うディレクトリDIRへ移動して、そこでコマンドを打つだけ。空ディレクトリは対象外になるらしいので、空ディレクトリも管理下に置いておきたい場合は空ファイルでもいいので作っておくこと。

リポジトリのステータス確認
hg stat
  • ?: リポジトリで管理されていないファイル
  • A: コミットされていないファイル
  • M: 変更されたファイル
リポジトリへファイルを追加する
hg add (ファイル名)

ファイル名を指定したらそのファイルをリポジトリへ追加する。指定しなければサブディレクトリを含むディレクトリ内のファイル全てを追加する。

コミットする
hg commit -m "コメント"

mオプションを付けずにコマンド実行したら、設定ファイルに書かれているエディタが起動してコミットログを記述する仕組みっぽい。でもWindowsからそれやろうとしたらうまくいかなかったのでおいらはずっとオプションから書いてます。

ログの確認
hg log

vオプションを付けると変更したファイル名も表示されます。

差分の確認
hg diff

Windowsでは多分別途マージツールが必要になるんじゃないかと思いますが、おいらはdiffが入っているのでそれを使っているみたいです。WinMergeも使えるらしいので、そっちに設定することも考えておこうかと。やったらまた書こうかと思います。

リポジトリのコピー(その1)
cd DIR2
hg clone (コピー元のパス)

コピーを保存したいディレクトリDIR2に移動して、レポジトリのあるパスを指定すればコピーできます。eオプションを付けるとsshを使うこともできます。

リポジトリのコピー(その2)
hg push (コピー先のパス)

cloneはコピー元のパスを指定するのに対し、pushはコピー先のパスを指定します。eオプションでsshを使うこともできるし、http経由で転送することもできます。

その他

revertとかはまだ使っていないのでヘルプ読んだ範囲でしか分かりません。もう少し使ってから追記予定。

設定ファイル

後ほど追記。Windowsではmercurial.iniというファイル名、Linuxでは.hgrcになります。