cvs と svn の違い

ちょっと svn を使ってみた限りでは,どーも svn は履歴付きファイルシステムと捉えた方が良い気がしてきた.

cvs は CVSROOT というディレクトリ以下にモジュールがあり,そのモジュールに対してファイルを追加削除して利用する.一方,svn は モジュール自体も単なる1ディレクトリだと考えた方が良さげ.さらに,最新版を入れるディレクトリは trunk, ブランチしたソースは branches におくようにルールを決めてあるみたい.

さらに tag も, 単なるファイルのコピーを tags というディレクトリ以下におくだけと理解すれば良いみたい.実際 svn で,タグを付ける場合は

$ svn copy trunk tags/release_1

のように "copy" コマンドを使うみたい.さらに

$ svn list  repo

とすると repo以下にあるディレクトリの一覧が見える.なるほど.



というわけで, project というディレクトリ以下を svn で管理するには,リポジトリにある /project/trunk 以下にファイルを置くと考えて

$ svnadmin create /path/to/repos
$ mkdir -p /tmp/project/branches/
$ mkdir -p /tmp/project/tags/
$ mkdir -p /tmp/project/trunk/
$ svn import /tmp/project  file:///path/to/repos/project

と, "リポジトリ/porject" に import したほうが良いみたい.

そして,チェックアウトするときは

$ svn   co   file:///path/to/repos/project/trunk    project

とし, project/trunk を 作業コピー project として取り出すと良いみたい.