HOME / コンピュータTips / UNIXツール / Mercurialでレポジトリ管理

Date: 2008/11/03 |  このエントリーをはてなブックマークに追加  |  Tags: hg, mercurial, solaris, レポジトリ管理

Mercurialでレポジトリ管理

CVSに変わるレポジトリ管理ツールを何にしようかと考えており、スタンダードにsvnにしようかと考えていたわけですが。

案外、スタンダードがなさそう・・・・つまり、ポストcvsはなさそうなので、他も色々見てみることにしました。

わたしの個人的な結論は、ウノウラボの方のブログを見て、Mercurialがあまりに便利そうだったので、これを自分的にも採択。

Mercurialの分散レポジトリ管理は、とっても便利です。cvsに比べると、次のようなことを解決してくれます。

  • レポジトリ分散というと難しいが、要はCVS風にいえば「メイン」に対して、自分の所にもレポジトリそのもののクローンがあると考えても良い。
  • クローンは自分だけのものなので、好きなときにコミット出来る。
    • クローンはローカルに置くため、ネットワークアンリーチャブルでもコミットできる。
    • 中途半端なバージョンをクローンに対してcommitしても、誰も困らない。
    • 従って、ここらへんでレポジトリに取っておきたいんだけど、他の人に迷惑がかかるからコミットできないなぁ・・・・といったような、cvsで多人数作成の時の良くある不満の解決ができる
  • CVSディレクトリを至る所に作らないので、色々面倒でない。
    • ディレクトリはトップディレクトリに.hgがあるだけである。
    • CVSではワーク=コピーであったが、このため、動作する実体を直接レポジトリに入れることは出来る。
    • 出来なくはないが、cvsで/etc以下の設定を管理することは難しかったので、システム管理者はrcsという古典的なものをしばしば使っていた。hgではもう少し容易にできる。
  • レポジトリそのものはcloneなどが出来るため、様々な所に持って行くことが出来る。
    • そのため、ブランチと言う概念ではない。

ああ、だんだん概念的になると難しいので止めよう(笑)

あんちょこ

レポジトリの初期化

レポジトリに入るべきTOPディレクトリで、下記のように入力。

hg init

すると、そこに.hgというディレクトリが出来る。

レポジトリに追加

ほとんどcvs addと同じであるが、ディレクトリは再帰的に格納されるので注意。

hg add ファイル名(群)

レポジトリに格納

ほとんどcvs commitと同じ。

hg commit 〜

レポジトリのコピー

別のエリアにレポジトリそのものをコピーする場合、cp -r と同じような感じで、SRC DISTと指定してコピーすることが出来る。

hg clone SRC DIST

DISTがローカルディレクトリならば、ローカルでのレポジトリ状況のチェックにも使える。

対象はsshの先でも良いし、SRCならば、http経由でも出来る。ただし、

ssh://ユーザ名@ホスト名//ディレクトリ

ホスト名の後ろに//が入ることに注意。