将许多 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 存储库的主要内容,如果未能解决你的问题,请参考以下文章