Blog
ZEROTOPブログ

株式会社ZEROTOPのスタッフブログです

バージョン管理システムまとめ

弊社では、バージョン管理システムを導入し、プロジェクト単位でデータファイル、ソースなどを管理しています。
バージョン管理システムは様々ありますので、それらをまとめてみたいと思います。

バージョン管理システムを導入する目的

弊社では単純に、複数人での開発になるので、同じファイルを更新しても、前の人の作業が飛んでしまうようなことを防ぐためにバージョン管理システムを導入しています。
とのプロジェクトでは、アカウントを共有して開発することが多いので、そのために使い慣れておく必要もあります。
オープンソースの開発の場合では、ネットワークを通じて広くソースコードをリリースするためにも使われています。

バージョン管理システムの使い方

管理したいソースやその他ファイルを一箇所に集中し、そこに対してファイルを預けたり取り出すことで、ファイルを管理できます。
ファイルを管理する場所を「リポジトリ」、ファイルを預けることを「コミット」、ファイルを取り出すことを「チェックアウト」と呼びます。

ファイルを編集する時には、「ロック」を取得し、その他の開発者にそのファイルを更新させないようにすることができます。
ファイルをロックせずに複数人で同じファイルを更新することもできます。その場合、システムが複数の更新箇所をまとめてくれます。これを「マージ」と呼びます。
誰かと誰かが同じ箇所を更新してしまった場合はファイルの「衝突」が起きます。
システムがマージしようとしたときに、同じ箇所が更新されていたらどちらが正しいのか分からないので、どちらか正しい方をコミットしてくれと訴えます。その場合は正しい更新にしてコミットします。

リビジョンのルートではtrunk,tags,branchesという3つのディレクトリに分けるのが一般的です。
trunkでは主流となっているファイルを管理します。branchesでは、主流とは分岐させる開発版などのソースを管理する。tagsでは、リリースしたバージョンをセットで入れておく。こうすることで特定のバージョンが取り出しやすくなる。

様々なバージョン管理システム

バージョン管理システムには集中型と分散型がある。
集中型では、リポジトリを一つしか持たず、そこだけでバージョンを管理します。
一方、分散型では、中央のリポジトリに加え、開発者一人一人が中央リポジトリのクローンを持ちます。これをローカルリポジトリと呼びます。
ファイルのバージョンを管理するのはローカルリポジトリ上で行い、どこかのタイミングで中央のリポジトリにファイルを預けます。また、中央のリポジトリから最新版を取り出すことも可能です。大きな特長は、ローカルリポジトリ同士でのファイルのやり取りが可能だという点です。
中央のリポジトリに反映させなくてもバージョンをアップデートできますし、中央とアクセスできなくても、ローカルで開発を行えます。
最近は分散型のバージョン管理を導入するプロ塾とが増えてきたが、ロック機能が使えなかったり、Windows用のツールが成熟していなかったりなど、問題点もある。

Subversion
代表的なバージョン管理システム。中央集中型。
SSHによる通信を標準でサポートしているので、インターネット経由で利用してもセキュリティを保つ事が可能。
CVS
Subversion登場前に代表的であったバージョン管理システム。中央集中型。
ファイル名やディレクトリの変更削除、バイナリファイルをうまく扱えない欠点がある。
Git
分散型。
Linuxカーネルのソースコード管理を目的として開発されたが、近年導入されるケースが増えている。
Yahoo! UI Library,Perl,Androidといったプロジェクトに導入実績がある。
Mercurial
分散型。
最近Google Codeで導入された。

excel,word,pptの衝突を防ぐ

MS製品は複数人で編集するとすぐに衝突します。
これを防ぐにはロック機能を使うことで対応できます。
svnクライアントであるTortoiseSVNであれば、ロックせずにこれらのファイルを更新できないようにすることが可能です。
TortoiseSVNで設定→一般で、[編集]をクリック。
textが開いたら、以下を追加する。
[auto-props]を探し、下記を追加します。

*.xls = svn:needs-lock=*
*.doc = svn:needs-lock=*
*.ppt = svn:needs-lock=*

コメントを残す

メールアドレスが公開されることはありません。

カテゴリー一覧