編集部からのお知らせ
ZDNet Japanが新しくなりました!
New! 懸念高まる産業機器のセキュリティ

開発者の注目集める分散バージョン管理システム(DVCS)--その理由とは

文:Justin James(Special to TechRepublic) 翻訳校正:村上雅章・野崎裕子

2010-09-28 08:00

 バージョン管理は、ほとんどの開発者が日常的に行っている作業のはずだ。開発工程において、バージョン管理にまつわる大きな失敗を避けようとすれば、バージョン管理システムを使用する必要が出てくる。しかし、これは使いこなすことが難しく、また使うだけで素晴らしい毎日を送れるようになるものでもないのである。

 バージョン管理について開発者の口から出てくるのは、たいていが不満であり、その不満は特に従来のシステムに対するものが多い(開発やサポートが終了し、世の中から姿を消そうとしているものに不満が集中しているのは、不幸中の幸いと言えるかもしれない)。しかし筆者は、尊敬している知人たちが分散バージョン管理システム(DVCS)の良さを口にしているのを耳にしたため、このシステムについて調べてみることにした。そこで本記事では、DVCSについて筆者が今回調査した内容に基づき、従来のバージョン管理システムとの違いや、多くの開発者たちに好まれている理由について説明する。

DVCSと従来のバージョン管理システムは、どこが違っているのか

 DVCSと従来のバージョン管理システムの主な違いは、リポジトリを配備する場所にある。

 従来のバージョン管理システムでは、中央リポジトリにすべてのファイルのマスターコピーが格納されている(場合によっては、パフォーマンスや冗長性といった観点から複数のノードにミラーリングされている)。このため開発者は、自らのローカルディスク上に個人的なコピーを作成し(チェックアウト)、その内容をマスターコピーに反映したい際にはチェックインを行うようになっている。ユーザーはリポジトリ上のファイルにロックをかけることで、ファイルの内容が変更中である旨を他者に知らせることができる。そしてファイルが複数のユーザーによって個別に変更されている場合、リポジトリにチェックインする時点で、サーバ上にある該当ファイルの内容と、チェックインする内容の差分を解決する必要がある。何らかの実験を行ったり、異なるバージョンを作成したいという場合には、コードツリーを分岐させることで、まったく異なったコピーを作成することができる。また、最終的に2つのツリーを1つにマージすることもできるものの、その際にもそれら2つのツリーの差分を解決する必要がある。

 DVCSはこういったやり方を変えることになる。中央サーバ上に中央リポジトリを配備するのではなく、開発者それぞれが自らのリポジトリを保持することになる(このため「分散化」と呼ばれるわけだ)。この形態はピアツーピアのネットワークに似ている。これにより、従来のバージョン管理システムよりも冗長性を高くすることが可能になる。このこと自体は目新しい考え方ではない。大きな違いはチェックインに対するアプローチである。従来のシステムでは単にファイルを置き換え、新たなバージョン番号を付与するようになっているのに対して、DVCSではチェンジセットというものを用いるようになっている。このチェンジセットはチェックインを行うたびに1つ作成される。このため、ツリー中にある最初の(同じ)ペアレントに対して2人の開発者が個別に変更を加える場合、並行した2つのブランチが自動的に作成される。このようにすることでシステムは、2つのブランチ間における実質的な違いの内容を把握できるようになるため、バージョン番号が異なった2つのファイルを単に比較することになるシステムに比べると、簡単にマージが行えるというわけだ。このトピックについては、MercurialのWikiに詳しい説明があるので、参考にしてもらいたい。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

Special PR

特集

CIO

セキュリティ

スペシャル

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNet Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]