連載
オープンソースで始めるバージョン管理&タスク管理

第1回 Subversionを利用したイケてる.NET開発

株式会社アークウェイ 黒石 高広
2008/06/24
Page1 Page2 Page3 Page4

2. バージョン管理ソフトウェア「Subversion」

Subversionの特徴

 前述のとおり、Subversionはオープンソースのバージョン管理ソフトウェアである。SubversionはもともとCVS(Concurrent Version System)という別のオープンソースのバージョン管理ソフトウェアの改良版として開発がスタートした経緯があるため、CVSの特徴を備えていて、かつCVSが抱えていた問題点(ファイル名やディレクトリ名の変更ができないなど)を解消している。

 Subversionの一番の特徴は、バージョン管理されたリソースを編集するときに、そのリソースを「ロックしない」という点にある。この特徴のおかげで、ロックするタイプの(要するに、編集するたびにファイルをチェックアウトし、そのファイルがチェックインされるまでほかの人が編集できない)バージョン管理ソフトウェアが抱える潜在的な問題を回避している。

 ロックするタイプでは、例えばチェックインを忘れたまま帰ってしまう人がいると、そのファイルをほかの人が編集できずに作業が止まってしまうといったことがあり得る。こうなると、開発者の待ち時間が増えてしまい、開発のスピードを遅くしやすいのだ。

 一方、ロックしないタイプのSubversionでは、ほかの開発者の作業にブロックされることなく作業を進められるという利点がある半面、(開発者間で編集したファイル内容に)競合が発生した場合にマージ(=統合)することが難しいといった問題点を抱えている。そのため、バージョン管理へコミットするタイミングを短くするといった工夫が必要となるのだが、このような運用上の注意点については次回で説明していく。

Subversionのインストール

 では、Subversionのインストール方法について見てみよう。Subversionは.EXEファイル形式のインストーラが提供されているので、ウィザード形式でインストールすることが可能だ。インストーラは下記のサイトより最新版を入手することができる。

 このサイトの[Windows binaries]というリンクを開き、[Windows]欄の[CollabNet (Certified binaries)]というリンクをクリックしたページから「CollabNet Subversion Server and Client」をダウンロードすればよい(クライアントだけの場合は「CollabNet Subversion Command Line Client」の方をダウンロードすればよい)。

【コラム】SubversionとWebサーバの連携
Subversionは、WebDAV(HTTP)を利用してApacheやIISなどのWebサーバと連携することも可能だ。ApacheやIISとの連携については下記のサイトを参考にするとよいだろう。

Subversionコマンドの利用方法(インポート)

 SubversionはWindowsエクスプローラやVisual Studioを使ったバージョン管理がフロントエンドとしたバージョン管理が可能だが、ここではまず「コマンドラインでも使える」ということを知っていただくために、コマンドラインでの簡単な使用例を示す。

 Subversionでは、任意のフォルダ(内に含まれるすべてのソース・ファイル群)をSubversionリポジトリ(=バージョン管理用のデータベース。「svnリポジトリ」とも呼ぶ。以下、単に「リポジトリ」)にインポートできる(リポジトリはあらかじめ作成しておく必要があるが、ここではその説明は割愛する)。インポートとは、バージョン管理したいファイルをSubversionに登録する作業である。

 まずはコマンド・プロンプトから「svn importコマンド」を使用し、Visual Studioソリューションのフォルダをリポジトリへインポートしてみよう。実際にこれを行っているのが次の画面だ。

svn import(インポート)コマンドの実行
この例ではカレント・フォルダである「C:\work\projectx」フォルダ(画面では「.」と記述)のソース・ファイル群を、「http://trac.archiway.co.jp/svn-repos/sandbox/trunk」というリポジトリ(=svnリポジトリ)にインポートしている。インポートする際のコメントとして、「Add My Solution」というメッセージも付加している。

 これで、リポジトリにインポートされたソース・ファイル群をほかの開発者が参照/編集できるようになる。

【コラム】リポジトリのURLについて
Subversionでは、ローカル環境やイントラ・ネットワーク上にあるリポジトリの場合も、以下の例のようにURL形式で指定する必要がある。

ローカル環境の例:file:///C:/ProjectFolder/
ネットワーク上の例:file://ComputerName/ProjectFolder/

上記の例のURLについて簡単に説明しておくと、「file」はプロトコルを示し、その後に続く「//<コンピュータ名>」はコンピュータを示す。具体的には「//」と「//ComputerName」の部分である(ローカルの場合は<コンピュータ名>は省略できるので「//」のみとなる)。それに続けて「/」で区切りながらディレクトリをつなげていく。具体的には「/C:/ProjectFolder/」と「/ProjectFolder/」の部分である。

Subversionコマンドの利用方法(チェックアウト)

 次に、ほかの開発者がリポジトリのソース・ファイル群を実際に参照/編集するには、チェックアウト(=リポジトリからソース・ファイル群を取得すること)が必要になる(ちなみにインポートした開発者もいったんチェックアウトしなければならない)。これを行うのが「svn coコマンド」(coはCheckOutの略)だ。次の画面は実際にこのコマンドを実行している例。

svn co(チェックアウト)コマンドの実行

 上の画面のようにsvn coコマンドを実行すると、リポジトリから(指定されたパスの)最新のソース・ファイルがローカル環境にダウンロードされ(=チェックアウトされ)、編集できるようになる。

 前述したように、Subversionでのチェックアウト操作は、リポジトリ内のファイルに「ロックをかける意味ではない」点にも注意していただきたい。Subversionでのチェックアウトは、「バージョン管理された状態でソース・ファイル群を取得する」という意味である。

Subversionコマンドの利用方法(コミット)

 次に、チェックアウトしたソース・ファイル群を編集し、それらをリポジトリにコミット(=チェックアウトの反対で、ソース・ファイル群の変更内容をリポジトリへ反映させること。「チェックイン」ともいう)してみよう。コミットには「svn commitコマンド」を使用する。次の画面は実際にこれを行っている。

svn commit(コミット)コマンドの実行

 これで、Subversionを利用して「リポジトリへソリューションをインポートし、インポートされたソリューションをほかのユーザーがダウンロード、編集する」といった一連の流れを確認できた。

 Subversionでは上記のようにコマンド・ベースでも操作できる。Subversionのコマンド・ベースでの操作に引いてしまっている読者の方は安心していただきたい。次に紹介するTortoiseSVNを利用すれば、GUI(Windowsエクスプローラ)を利用してSubversionを操作することが可能だ。


 INDEX
  [連載]オープンソースで始めるバージョン管理&タスク管理
  第1回 Subversionを利用したイケてる.NET開発
    1.はじめに(バージョン管理ソフトウェアが必要な理由)
  2.バージョン管理ソフトウェア「Subversion」
    3.Windowsエクスプローラ用クライアント「TortoiseSVN」
    4.Visual Studio用クライアント「AnkhSVN」

インデックス・ページヘ  「オープンソースで始めるバージョン管理&タスク管理」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間