cvs2svn:将存储库转换并放置到现有 SVN 存储库的子目录中
Posted
技术标签:
【中文标题】cvs2svn:将存储库转换并放置到现有 SVN 存储库的子目录中【英文标题】:cvs2svn: Convert and Place Repository into a Sub-directory of Exisiting SVN Rrepository 【发布时间】:2012-12-16 18:14:51 【问题描述】:我在 Linux 机器上有一个现有的 SVN 存储库,名称为 /conf /db /hooks /locks format readme.txt
,签出后如下所示。
MainRepo
-trunk
-branches
-tags
我想使用 cvs2svn 进行一些 CVS 到 SVN 的转换,并保留历史并将新的存储库(ProjectA、ProjectB 等)放在MainRepo
下作为...
| MainRepo
-trunk
-branches
-tags
| SubRepo
| ProjectA
-trunk
-branches
-tags
| ProjectB
我该怎么做?我已经使用 svn mkdir
创建了子文件夹 /SubRepo/ProjectA 。
如何将转换后的 repo 放在它们下面?
【问题讨论】:
【参考方案1】:您是否尝试在配置文件中设置“trunk_path”(在“run_options.add_project”下)?
【讨论】:
不,我是新手。你能帮我解决我需要添加到选项中的参数吗? 他们的文档是here。您需要使用 options-file 方法。示例选项文件还包含文档。 我正在使用选项文件,虽然它为 ProjectA 正确执行...同时为 ProjectB 执行它给出错误。svnadmin: File already exists: filesystem '/opt/svn/MainRepo/db', transaction on '1912-4', path 'trunk'
【参考方案2】:
使用trunk_path 不适用于ProjectB(即trunk_path=SubRepo/ProjectB/trunk
)的原因是它导致cvs2svn 尝试创建SubRepo
和SubRepo/ProjectA
路径。但是 SubRepo
路径在您导入 ProjectA 时已经存在,这会导致 svnadmin load
失败。
导入其余项目的最简单方法是导入convert each project,就好像它将成为***项目一样(具有***/trunk
、/branches
和/tags
目录) ,但将输出写入转储文件(使用 cvs2svn 的 --dumpfile
选项)。然后使用类似的命令将转储文件加载到现有存储库中
svnadmin load --parent-dir SubRepo/ProjectB <DUMPFILE
【讨论】:
没错,最后我不得不这样做...感谢您解释我所面临错误的原因。以上是关于cvs2svn:将存储库转换并放置到现有 SVN 存储库的子目录中的主要内容,如果未能解决你的问题,请参考以下文章