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 尝试创建SubRepoSubRepo/ProjectA 路径。但是 SubRepo 路径在您导入 ProjectA 时已经存在,这会导致 svnadmin load 失败。

导入其余项目的最简单方法是导入convert each project,就好像它将成为***项目一样(具有***/trunk/branches/tags 目录) ,但将输出写入转储文件(使用 cvs2svn 的 --dumpfile 选项)。然后使用类似的命令将转储文件加载到现有存储库中

svnadmin load --parent-dir SubRepo/ProjectB <DUMPFILE

【讨论】:

没错,最后我不得不这样做...感谢您解释我所面临错误的原因。

以上是关于cvs2svn:将存储库转换并放置到现有 SVN 存储库的子目录中的主要内容,如果未能解决你的问题,请参考以下文章

cvs2svn 转换?

cvs2svn 迁移

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

cvs2svn转换失败,状态=1

如何使用 cvs2svn 工具从 CVS 迁移到 SVN?

多项目布局中的逐步 cvs2svn 迁移