Mercurial入門!

この記事は「Mercurial Advent Calendar 2011」の一環として書いています。前日の16日目は、@troterさんの「mercurial-backlog拡張を作った中で知ったこと」でした。17日目は私、@worarsが担当させて頂きます。

さて、何を隠そうAdvent Calenderなるイベントは初めて参加する訳で、さらに言えばMercurialを触り始めてまだ数週間。お誘いを受けたので参加してみたものの何を書いて良いやら・・・。色々とツッコミどころが出てくるとは思いますが、どうかお手柔らかに。

何はともあれインストール

今使っているPCはWindows(Vista)なので、「TortoiseHg」というGUI付きのMercurialをインストールします。まずは、ココのサイトから日本語版がダウンロード出来るのでダウンロードします。現時点でのバージョンは、TortoiseHg 2.2.1 (with Mercurial 2.0.1)です。あとはインストーラでインストールするだけです。ここで注意しないといけないのは、リポジトリ内に日本語を含むファイルを含める場合、そのまま「hg add 日本語のファイル.xls」などとすると失敗してしまう事です。これを回避するには、TortoiseHgのメニューから「ユーザ設定」を選び「エクステンション」の中から「win32mbcs」にチェックを入れます。これで日本語のファイルも問題なく扱えるようになります。複数OS間で連携する場合は、もう少し考慮しないといけない点があると思いますが、その辺りは15日目の「Mercurial の文字コード設定」がとても参考になると思います。

さて、これで実行環境が整いました。ヤッター、これで明日からMercurialが使えるぞ!・・・と言いたい所ですが、そういう訳にも行きません。そもそも何でMercurialを使うのでしょうか?ここまで書いておいて今更ですが。

Subversionと比較してみる

現在の開発現場では、cvs,vss,Subversionなどの中央集権型のバージョン管理ソフトが多く導入されています。この状況下でMercurial等の分散型バージョン管理ソフトをより普及させる為には、それなりの動機づけが必要かと思います。ですので、まずはSubversionと比較してそのメリット、デメリットを見てみたいと思います。

メリット
  • ローカルにリポジトリを持つのでオンラインでなくてもいつでもコミット出来る
  • より細かい単位でコミット出来る*1
  • スケールアウトが簡単

などといった所でしょうか。もちろん便利なコマンドが増えている等の細かいメリットも沢山あります。*2

デメリット
  • 仕組みがちょっと複雑=覚えるコマンドが多い
  • 分散型なので一元管理されているか不安になる*3

簡単に思いつく範囲ですが、上記の様なメリット、デメリットがあります。現在、Subversion等で運用している企業がMercurial等の分散型バージョン管理ソフトへ移行する為には、上記のメリットがデメリット+移行の手間を上回る必要があります。この為、今の私の環境では、残念ながら導入するのは難しそうです。もしチャンスがあるとすればレスポンスが悪化して環境を強化せざるを得ない時でしょうか。この時は、スケールアウトが簡単に出来る分散型のバージョン管理ソフトが俄然有利になりますね^^*4
なので、私の場合は、まだまだSubversionを使う日々が続きそうです。もちろんプライベートはMercurialに切り替えるつもりですが。現場で使えてる方々が羨ましい。

という事で今日はこの辺りで。次回、18日目の@tksnさんの「低コストで少人数プロジェクトに最適なバージョン管理システムを探そう!」に期待を寄せつつ眠りに就きましょう。おやすみなさい。

参考にしたサイト

最後にMercurialを始めるに当たって参考にさせて頂いたサイトを紹介致します。

入門Mercurial Linux/Windows対応

入門Mercurial Linux/Windows対応

*1:Subversion等では、気持ちの問題ですが、コミット=皆と共有なので、ある程度まとまってからきれいな状態のソースコードしかコミットしたくなくなる。一方、分散型の場合は、あくまでローカルでのコミットなので今日はもう疲れたから帰る等といったタイミングでもコミット出来る・・・気がする。

*2:rebaseとか超便利そう。ブランチが切りやすいのも良いですね

*3:中央リポジトリを作れば、ほぼ解決しますが

*4:負荷分散については、「入門Mercurial」の書籍でもコラムの中で触れられていました。