9/06/2009

Mercurialの有用性について

どうもJudaです。今日はコード管理について。
Mercurialというコードヴァージョン管理ソフトについてです。

まぁ、よく似たのにはGitがあります。
入門Mercurial Linux/Windows対応
Mercurial: The Definitive Guide
オライリーだとこれがありますけど、前述の書籍のほうが日本語だしいいかなぁって思います。
いまどきのソフトウェア会社でコード管理をしていない会社なんてほとんどないと思いますけど、個人ではまだやってないって言う人もいると思います。かくいう私も最近までは管理していませんでした。これは、単純にそういう管理面でのことを教えてくれる記事などがあまりないということが関係あると思います。しかし個人でのいかなるソースコードも資産として価値があると思います。だから管理しておくに越したことはありません。
ほかの管理ツールは
・Subversion
・Git
・Visual Source Safe
とかありますけど、個人で有料のものをつかっていくのはなかなか大変です。そもそも高いですし。その点で言うとオープンソースで開発されているSVNとかGit、Mercurialは有料ではないが、とても有用なプロジェクトの一つだと思います。
Mercurialの基本的な動きなどは、解説書に譲りますが、個人的に使うときに気づくと思うのですが、10Mbyte以上のデータは管理できないらしいです。あとGUI付のTortoise(トータス)系はWindowsのShellと融合して使いやすい反面、間違いを起こしやすいので注意。
あとは、管理といってもやることは簡単。でもちょっと違うことをおこなったときに、どうすればいいのだろうということは結構あります。実際にSubversionで”Working Copyを先にしてね”みたいなエラーは意味が分かりませんでした。もっとも説明書も読まずに使おうというのが間違っています。そして、その説明書が段階を踏んで説明されているわけではないので、解説書を手に入れると結構踏み台としていい感じです。
ちなみに日本語化をするととっても意味不明になります。そもそもの単語が意味分からないで使っているのに、それを日本語化しても分かりやすいわけはないので、なるべく英語のほうがいいです。そして検索の際にも英語で検索するほうが情報が手に入りやすいです。日本語で説明しているサイトや記事が充実していない状態ではなるべく言語パッチを当てないほうがいいです。
あとは大前提としては、英語の情報やプロジェクトのほうが多いので、それを読むことになれること。これは、もはや相対的な開発者の言語分布が英語が圧倒的に多いので、それを受け入れることである。嫌なら、日本語で同等か、それ以上のものを作るしかないです。まぁ、だから日本にはまだ市場があるんだけどね。
多くの事項は、Mercurial入門の日本語の本にあります。ぜひこれを買いましょう!話は戻って、SubversionとMercurial、Gitはなにが違うのか。それは情報の集積のやり方です。SubversionなどのCVSは中央集権的、Mercurialは分散型です。
中央集権的なSubversionは、すべてを管理するRepositoryがあります。個々のRepositoryをもつことは一般的ではありません。分散的なMercurialもRepositoryはあります。しかし個々のRepositoryがあるのです。中央集権的に振舞わせることもできますが、それではよさが活きません。分散型のよさは、中央が死んでいても、個々のレベルで情報を共有して、コード管理できます。これは、結構開発現場ではいいことなのです。たとえば、サーバがなにかの障害で使えなくなっても、個人のソースコードはいつもどおり管理できますし、中央を介せず、個々のレベルでもソースコードの同期を取れます。そのたびにマージがおきますが、このマージの方法も実に合理的です。
Subversionでは、UpdateしてMergeしてCommitします。MercurialはCommitしてPullしてMergeしてCommitしてPushします(たしか
重要なのは、自身の変更結果を自身でも保持しているので、途中で自分の変更がなくなったりしないのです。Subversionは結構マージでてこずると、マージ前に戻したいのに、戻せないことに気づきます。これは、ある意味絶望です。成果がパーなので。
ここらへんで、Mercurialの話は終わりますが、一番重要なのは、SubvesrsionとMercurialは共存できます。だから個人でMercurialを導入しても問題ありません。
そして、これはあくまで手段です、より効率よくソースコードを管理できるのであるならば、別の方法を採用するべきでしょう。というか、ちゃんとそこを理解しないと頭悪い感じになるなぁ。

0 件のコメント:

コメントを投稿