バージョン管理システムは、集団の開発のみならず個人利用でも大変便利そうだ。CVSの後継という位置づけのsubversionなるものを使ってみる。cygwin同梱ver.1.0.6を使用した。

*link
-[[svn book(日本語):http://subversion.bluegate.org/doc/book.html]]
-[[バージョン管理の実装「Subversion」(@IT):http://www.atmarkit.co.jp/flinux/special/webdav/webdav03c.html]]
-[[誰かのプレゼン:http://ukai.jp/Slides/2003/0521-lw2003/html/index.html]]
-[[Subversionでバージョン管理:http://www.02.246.ne.jp/~torutk/subversion/intro.html]]

*使い方
**基本中の基本 [#rad6fda3]

***ヘルプ
 svn help (arg.)
***リポジトリ新規作成
 svnadmin create (repository)


***パスの指定
 file:///(fullpath) <= ローカル
 svn://(repository path) <= svnserve経由
svnserveを使うならサービスを起動しておく('file:///'なら準備不要)。
 svnserve -d -r /cygdrive/e/for_svn
上記は、svnserveをデーモンモードで起動し、ルートとなるディレクトリを指定している。この時、/cygdrive/e/for_svn/testreposなるリポジトリは
 svn ls svn://localhost/testrepos/
などとしてアクセスできる。



**基本作業
まずはチェックアウト。いずれのコマンドには省略形があり、以下のいずれも可。今後は片方のみ記載する。
 svn checkout (repository)
 svn co (repository)
そして作業。適宜以下を実行。
 svn add (filename) -- ファイルの追加
 svn mkdir (dirname) -- ディレクトリ追加 <-- 実際のディレクトリも勝手に作ってくれた
 svn mv (file,dirname) -- ファイル・ディレクトリの移動
 svn delete (file,dirname) -- ファイル・ディレクトリ削除
さあコミットだ。ログ用エディタを$SVN_EDITORで指定しておく。
 svn ci
お疲れさまでした。

**こういう事もできないと不便だ
***既存のディレクトリhogeをリポジトリに追加
 svn import hoge (repository)
再帰的なコミット。この時hoge自身は作成されず、hogeより下の下層のファイル・ディレクトリが指定したリポジトリ(のディレクトリ)に追加されるみたい。

***差分
 svn diff

***ログ
コミット時にログが追加される。-mオプションでコマンドラインから打つもよし、--file オプションで(追加すべき)ログが書かれているファイルを指定するもよし。オプションが無い場合は $SVN_EDITOR で指定されたエディタを起動。両方とも怠ると怒られてコミットできなかった。

ログを見るには
 svn log
リビジョンの指定は
 svn log -r 3:15    ## -r は --revision の意
とか。


**こういう事ができるとより便利

 svn ls (repository) # リポジトリの中身
 svn info (filename, directoryname) # ファイル・ディレクトリ情報
 svn status # 作業コピーの変更状況確認
 svn revert # 作業コピーの復帰
 svn update # 作業コピーを最新のものに更新。

**svnserve
作ったリポジトリのconfディレクトリのsvnserve.confで設定する。

 [general]
 anon-access = none
 auth-access = write
 password-db = /path/to/repos/conf/svnusers

最後の行はユーザーの権限設定ファイル。

 [users]
 username = password

**キーワード置換

初期状態では
 svn propset svn:keywords Id myfile
として、キーワード置換に関するプロパティをファイル毎に設定する必要がある。キーワード一覧は以下(省略系)
|Date  | 日時               |
|Rev   | リビジョン          |
|Author| 編集者            |
|URL   | URL                |
|Id    | 上のキーワード詰合せ |

確かめる時には以下のコマンド
 svn propget svn:keywords myfile