cvsにいい加減むかついていたのでsvnに移行することにした。~
ここはそのsvnのコマンドのメモや、はまったところなどを記録しているメモページです。~
----
**インストール [#kcc7fc49]
環境:w2k~
+Subversion1.3.2のバイナリをダウンロードしてきてコピーした。
+Subversion/binへパスを通した。
+日本語メッセージが文字化けしたのでAPR_ICONV_PATHを環境変数にセット。APR_ICONV_PATHはSubversion/iconv。

**cvsからの移行 [#bc59af6f]
cvsからの移行にはcvs2svnというツールを使うらしい。cvs2svn1.3.1を使ってみた(python2.4)。以下引っ掛かったところ。
-shiftjisをを使ってる場合は''--encoding SHIFT_JIS''なるオプションをつければよいらしい。
-sort -Tを呼び出してるとこでエラーになるので(windowsのsortコマンドでそのオプションがないのでエラーになる)、[[GNUのwin32ポートのsortコマンド:http://unxutils.sourceforge.net/]]を呼び出すように書き換えた。
-''cvs rcsfile co''コマンドの呼び出しで~
''cvs [rcsfile aborted]: -q or -Q must be specified before "rcsfile"''
みたいなわけのわからないエラーがでたので''--use-cvs''オプションでrcsfileを使わないようにした。

~
以上の修正で一応通ったような気がする。最終的にはsortの部分を書き換えた上で
 python cvs2svn --encoding SHIFT_JIS --use-cvs -s c:/temp/svn/tksqlite c:/doc/cvsroot/tksqlite
みたいな。最後まで滞りなく進むとかかった時間などのリポートが表示される。

**ディレクトリ構成 [#yfc45665]
svnではタグやプランチを管理するために、
 projname
     trunc
     trunk
     tags
     branches
のようなディレクトリ構成になっていて、開発はtruncで行うらしい。チェックアウトするときはこれらのパスに従い、svn co file:///path/to/projname/trunc とかsvn co file:///path/to/projname/trunc projnameとかいうふうにこのディレクトリへのパスを指定する。
のようなディレクトリ構成になっていて、開発はtrunkで行うらしい。チェックアウトするときはこれらのパスに従い、svn co file:///path/to/projname/trunk とかsvn co file:///path/to/projname/trunk projnameとかいうふうにこのディレクトリへのパスを指定する。

**コマンド [#h63134bc]
//svn co path

//**CVSROOT?
//**.cvsignore?
**とりあえず良く使うコマンド [#h63134bc]
-登録(リポジトリの作成)~
 svnadmin create /path/to/proj
 svn mkdir file:///path/to/proj/trunk
 svn mkdir file:///path/to/proj/tags
 svn mkdir file:///path/to/proj/branches
 cd path/to/proj/..
 svn import file:///path/to/proj/trunk proj proj
リポジトリのレイアウトの仕方は適当っぽい・・・。プロジェクト毎にリポジトリを作ってもいいし、一つのリポジトリに複数のプロジェクトを登録してもいい。どういうのが適切なのかよくわからんが、プロジェクト名の下にtrunk,tags, branchesを作るというのは一応広まってる慣習のようだ。上の例はプロジェクトごとにリポジトリを作る。どっちがいいのかについては[[「プロジェクトの追加」:http://subversion.bluegate.org/doc/ch05s04.html]]に両方の利点と欠点が書いてある。どっちがいいんだろうなあ・・・。


-チェックアウト~
 svn checkout(co) file:///path/to/proj/trunc
 svn checkout(co) file:///path/to/proj/trunc proj
パスはfile:///みたいなURLで書く。チェックアウトしたディレクトリ名はpathの最後のディレクトリ名だが、dirで出力先のディレクトリ名を変更することが出来る。~
タグ、ブランチはtags,branches以下にコピーしたリポジトリなので(慣習的にtags,branches以下にタグ、ブランチを作ることになってるらしい)、それらをチェックアウトする時はただ、そのパスを指定するだけ
 svn co file:///path/to/proj/tags/version1.0 proj
みたいな。


-ファイルやディレクトリの追加、削除、リネーム~
 svn add path              ファイルの追加
 svn mkdir path            ディレクトリを作成してaddする
 svn delete path           ディレクトリやファイルを削除する
 svn move oldname newname  リネーム、移動
deleteはファイルはすぐにワーキングディレクトリから消えるが、ディレクトリはコミットするまで残ってるらしい。deleteもmoveもリポジトリに反映させるにはコミットが必要。


-マージ~
 svn merge M:N file:///path/to/proj/branches/version0.9
 svn marge file:///path/to/revM file:///path/to/revN
上の例ではversion0.9のブランチでリビジョンMからNの差分をとって、それを現在のワーキングディレクトリに適用する。リビジョン番号を調べないといけないのがめんどくさい。下の例では、二つのマージ元の差分をとって現在のワーキングディレクトリに適用する。下の例はリビジョン番号を調べないでいいので、タグで管理するときに便利だと思う。


-コミット~
 svn commit 


-ワーキングディレクトリを最新に更新~
 svn update
これはcvs updateと違って、実際にファイルを更新してしまうので、
どれが更新されているか調べるだけの場合は、''svn status''を使う。


-ワーキングディレクトリを他のブランチに変更~
 svn switch path
ブランチを指定してcheckoutするのと同じだけど、差分だけやりとりするのでオーバーヘッドが少ないらしい。


-タグをつけたり~
 svn copy(cp) file:///path/to/proj/trunk file:///path/to/proj/tags/version1.0 -m "version1.0のタグ打ち"
コピーらしい。ブランチもタグも同じcopyらしいので、ブランチの場合は二つ目のパスのtagsのとこがbranchesになるのだろう。タグを付けて誤って上書きしちゃったりしたらどうなるのか(まあBASEに戻せばいいのだろうが)。とりあえずは基本は常にtrunkのHEADで作業して、タグやブランチを作る時はcopyしていけばいいのだろう。


-履歴を見る~
 svn log <option> file    基本はこんな感じ
 svn log -r 170           リビジョンを指定
 svn log -r 170:175       170から175までのリビジョンの履歴
 svn log -r {2006-07-01}  日付は{}でくくる
 svn log -r HEAD          リポジトリで最新
 svn log -r BASE          現在のワーキングディレクトリのベース
''-q''オプションでコメント無しの簡易表示。~
''-v''で変更のあったパスのリストも表示される。


-その他色々情報の取得~
 svn info       現在のワーキングディレクトリの情報を見る
 svn list(ls)   リポジトリ内のls. -Rで子も再帰
 svn status     ワーキングディレクトリの更新情報
 svn status -u  リポジトリの更新情報
 svn status -v  リビジョン番号情報
 svn ls file:///path/to/proj/tags タグの一覧はこうするしかない?


**CVSROOT? [#u07c0c3c]
パスを書くのがめんどくさい。CVSROOTみたいなのがあるのか無いのか調べ中。


**.cvsignore? [#pe363c67]
cvsignoreに相当する無視するファイルを設定する方法がないのか調べ中。


**リンク [#q959d60c]
-Subversion http://subversion.tigris.org/
-cvs2svn http://cvs2svn.tigris.org/
-UNIX USER 2003 8: Subversionで管理せよ (draft) http://ukai.jp/Articles/2003/uu-svn/


HTML convert time: 0.004 sec.