将许多 CVS 模块转换为单个 SVN 存储库

Posted

技术标签:

【中文标题】将许多 CVS 模块转换为单个 SVN 存储库【英文标题】:Converting many CVS modules into a single SVN repository 【发布时间】:2010-09-30 19:35:20 【问题描述】:

我有一个相当大的 CVS 存储库,我希望仅将少数模块转换为单个 Subversion 存储库。我已被正确指导使用cvs2svn 进行转换,甚至已经构建了我自己的选项文件。我不需要保留标签或分支,但我想保留修订历史。我的问题是我希望我的模块位于单个主干文件夹下,例如svn/trunk/module1 和 svn/trunk/module2 而不是 svn/module1/trunk 和 svn/module2/trunk。当我将路径设置为空时,它会引发关于路径为空白的错误。有什么建议吗?

【问题讨论】:

【参考方案1】:

我的问题是我希望我的模块位于单个主干文件夹下,例如svn/trunk/module1 和 svn/trunk/module2 而不是 svn/module1/trunk 和 svn/module2/trunk。 [...] 有什么建议吗?

为什么不按原样导入结构并稍后在存储库中移动内容?毕竟,移动事物的能力是 SVN 相对于 CVS 的最大优势之一。 (事实上​​,这种结构的变化在历史上实际上可以被视为一个优势。)

【讨论】:

+1 用于在 svn 中保留导入和重组的结构。【参考方案2】:

最简单的做法是制作 CVS 存储库的副本,然后(在副本中)按照您希望它们在生成的 Subversion 存储库中结束的方式移动目录。然后转换为单个项目,将 cvs2svn 指向重新排列的存储库中的适当目录。例如:

mkdir $CVSCOPY/proj
mv $CVSCOPY/path/to/module1 $CVSCOPY/proj/module1
mv $CVSCOPY/another/path/to/module2 $CVSCOPY/proj/module2
cvs2svn [OPTIONS] $CVSCOPY/proj

(如果您的子模块已经以所需的方式排列,则可能甚至不需要复制和重新排列。)

【讨论】:

以上是关于将许多 CVS 模块转换为单个 SVN 存储库的主要内容,如果未能解决你的问题,请参考以下文章

cvs2svn 转换?

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

使用 CVS 时需要将项目主干转换为分支

cvs2svn迁移后的svn合并问题

cvs2svn转换失败,状态=1

如何在将一个巨大的存储库拆分为单独的存储库时将 SVN 转换为 GIT?