我可以将单个文件从CVS迁移到SVN吗?

时间:2010-09-03 15:49:58

标签: cvs cvs2svn

现在有一个文件位于项目的CVS存储库中,需要使用SVN将其移动到另一个项目。我想保留提交的历史。

有办法吗?

1 个答案:

答案 0 :(得分:2)

如果这是一个新的Subversion存储库,那么它是微不足道的:只需创建一个包含单个文件的虚假CVS存储库(如下所述)并使用cvs2svn进行转换。

如果Subversion存储库已经存在,并且新文件是该存储库中新子项目的开始,那么您可以转换为Subversion转储文件(使用cvs2svn的--dumpfile选项),然后将其加载到使用

的现有存储库
$ svnadmin load --parent-dir=/newproject /path/to/svnrepo <dumpfile.out

这将在Subversion中创建一个新的子项目,包括目录/ newproject / trunk,/ newproject / branches和/ newproject / tags,以及(例如)文件的trunk版本将位于/ 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