バージョン管理システムは、集団の開発のみならず個人利用でも大変便利そうだ。CVSの後継という位置づけのsubversionなるものを使ってみる。cygwin同梱ver.1.0.6を使用した。
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
お疲れさまでした。
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 # 作業コピーを最新のものに更新。
作ったリポジトリの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