现在有一个文件位于项目的CVS存储库中,需要使用SVN将其移动到另一个项目。我想保留提交的历史。
有办法吗?
答案 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