subversionは、無償で公開されているバージョン管理システムであり、一般にCVSの後継と見なされています。つまり、通常、CVSに導入済みの機能はsubversionにも組み込まれています。特に、CVSの長所を考慮しても短所を補いきれないと思われる場合に使用することをお勧めします。この種の機能のほとんどについては、既に項47.1.3. 「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. 「関連資料」を参照してください。
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列目が最も重要です。
変更はありません。
オブジェクトには追加マークが付いています。
オブジェクトには削除マークが付いています。
オブジェクトは変更されています。
オブジェクトは競合しています。
オブジェクトは無視されました。
オブジェクトはバージョン管理対象ではありません。
オブジェクトは欠落としてレポートされています。このフラグが表示されるのは、オブジェクトが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.
...
最初に、http://subversion.tigris.org/にアクセスしてsubversionプロジェクトのホームページを参照してください。パッケージsubversion-docによってディレクトリfile:///usr/share/doc/packages/subversion/html/book.htmlにインストールされるマニュアルも非常に参考になります。このマニュアルはhttp://svnbook.red-bean.com/svnbook/index.htmlでも入手できます。