47.5. subversionの概要

subversionは、無償で公開されているバージョン管理システムであり、一般にCVSの後継と見なされています。つまり、通常、CVSに導入済みの機能はsubversionにも組み込まれています。特に、CVSの長所を考慮しても短所を補いきれないと思われる場合に使用することをお勧めします。この種の機能のほとんどについては、既に項47.1.3. 「subversion」で簡単に紹介しています。

47.5.1. Subversionサーバのインストール

サーバにレポジトリーデータベースをインストールする処理は比較的簡単です。subversionには、そのための専用管理ツールが用意されています。新規レポジトリの作成コマンドは、次のとおりです。

svnadmin create /path/to/repository

svnadmin helpを使用すると、その他のオプションをリストできます。CVSとは異なり、subversionはRCSベースではなくBerkeley Databaseベースです。レポジトリはNFS、AFS、またはWindows SMBのようなリモートファイルシステムにインストールしないでください。データベースにはPOSIXロックメカニズムが必要ですが、これらのファイルシステムではこのメカニズムがサポートされていません。

コマンドsvnlookを実行すると、既存のレポジトリに関する情報が表示されます。

svnlook info /path/to/repository

異なる複数のユーザに対してレポジトリへのアクセスを許可するには、サーバを設定する必要があります。WebDAVとともにApache Webサーバを使用するか、subversionに含まれているサーバパッケージsvnserve を使用します。svnserveを起動すると、svn://またはsvn+ssh://というURLでレポジトリにアクセスできるようになります。svnを呼び出すときに自己認証が必要なユーザは、etc/svnserve.confで設定できます。

Apacheとsvnserveのどちらを使用するかについては、さまざまな判断基準があります。これについては、subversionのマニュアルを参照することをお勧めします。詳細については、項47.5.3. 「関連資料」を参照してください。

47.5.2. 使用方法と操作

subversionレポジトリにアクセスするには、コマンドsvn(cvsに類似)を使用します。対応するレポジトリに合わせて適切に設定されたサーバから提供されるコンテンツには、どのクライアントからも次のいずれかのコマンドを使用してアクセスできます。

svn list http://svn.example.com/path/to/project

または

svn list svn://svn.example.com/path/to/project

既存のプロジェクトを現行のディレクトリに保存(チェックアウト)するには、コマンドsvn checkoutを使用します。

svn checkout http://svn.example.com/path/to/project nameofproject

チェックアウトすると、クライアント上に新規のサブディレクトリnameofprojectが作成されます。これで、そのサブディレクトリに対して操作(追加、コピー、名前の変更、削除)を実行できます。

svn add file
svn copy oldfile newfile
svn move oldfile newfile
svn delete file

これらのコマンドは、ディレクトリにも使用できます。subversionでは、ファイルやディレクトリのプロパティも記録できます。

svn propset license GPL foo.txt

この例では、プロパティlicenseの値GPLを設定しています。プロパティを表示するには、svn proplistを使用します。

svn proplist --verbose foo.txt
 Properties on 'foo.txt':
 license : GPL

変更内容をサーバに保存するにはsvn commitを使用します。他のユーザはsvn updateを使用してサーバと同期させることで、変更内容を自分の作業ディレクトリに取り込むことができます。

CVSとは異なり、svn statusを使用すると、レポジトリにアクセスしなくてもsubversionの作業ディレクトリのステータスを表示できます。ローカルの変更は5列に表示され、1列目が最も重要です。

''

変更はありません。

'A'

オブジェクトには追加マークが付いています。

'D'

オブジェクトには削除マークが付いています。

'M'

オブジェクトは変更されています。

'C'

オブジェクトは競合しています。

'I'

オブジェクトは無視されました。

'?'

オブジェクトはバージョン管理対象ではありません。

'!'

オブジェクトは欠落としてレポートされています。このフラグが表示されるのは、オブジェクトがsvnコマンドを使用せずに削除または移動された場合です。

'~'

ファイルとして扱われていたオブジェクトがディレクトリで置換された、またはその逆の処理が発生しました。

2列目はプロパティのステータスを示します。他の各列の意味については、subversionのマニュアルを参照してください。

コマンドパラメータの説明を表示するには、コマンドsvn helpを使用します。

svn help proplist
proplist (plist, pl): List all properties on files, dirs, or revisions.
usage: 1. proplist [PATH...]
       2. proplist --revprop -r REV [URL]

  1. Lists versioned props in working copy.
  2. Lists unversioned remote props on repos revision.
...

47.5.3. 関連資料

最初に、http://subversion.tigris.org/にアクセスしてsubversionプロジェクトのホームページを参照してください。パッケージsubversion-docによってディレクトリfile:///usr/share/doc/packages/subversion/html/book.htmlにインストールされるマニュアルも非常に参考になります。このマニュアルはhttp://svnbook.red-bean.com/svnbook/index.htmlでも入手できます。