現在、プロジェクトの CVS リポジトリにあるファイルがあり、SVN を使用して別のプロジェクトに移動する必要があります。そして、コミットの履歴を保持したいと思います。
そうする方法はありますか?
これが新しい Subversion リポジトリである場合、簡単です: 単一のファイルを含む偽の CVS リポジトリを作成し (以下で説明)、cvs2svnを使用して変換します。
Subversion リポジトリがすでに存在し、新しいファイルがそのリポジトリの新しいサブプロジェクトの開始になる場合は、Subversion ダンプファイルへの変換を行い (cvs2svn の --dumpfile オプションを使用)、それを既存のリポジトリにロードできます。使用して
$ svnadmin load --parent-dir=/newproject /path/to/svnrepo <dumpfile.out
これにより、ディレクトリ /newproject/trunk、/newproject/branches、および /newproject/tags を含む Subversion に新しいサブプロジェクトが作成され、(たとえば) ファイルのトランク バージョンは /newproject/trunk/myfile に配置されます。
新しいファイルの履歴は、Subversion リポジトリに既にあるコミットに加えて、単一の一連の Subversion コミットとして移行されることに注意してください。したがって、Subversion のコミットはおそらく時系列ではなく、Subversion リポジトリでの日付ベースの検索が機能しなくなります。
いずれにせよ、単一のファイルを含む偽の CVS リポジトリを作成することから始める必要があります。
$ CVSREPO=$HOME/fakecvs
$ mkdir $CVSREPO
$ mkdir $CVSREPO/CVSROOT # This directory is needed by cvs2svn but can be empty
$ mkdir $CVSREPO/proj
$ cp /path/to/myfile,v $CVSREPO/proj/
次に、 cvs2svnを使用してパス $CVSREPO/proj から変換します。
$ cvs2svn [options...] $CVSREPO/proj