【问题标题】:Solving svnadmin error E160020 on trunk解决中继上的 svnadmin 错误 E160020
【发布时间】:2014-09-17 11:04:50
【问题描述】:

上下文

我正在将旧的 CVS 存储库迁移到 SVN。我们有一个用于企业组件的存储库,另一个用于所有公司项目。对于公司项目,每个项目都计划手动迁移,我们选择使用多解决方案布局

-solution1
    -branches
        -
        -
        -
    -tags
        -
        -
        -
    -trunk
        -component1
        -component2

相反,对于核心组件,我们选择了单方案-多项目布局

-branches
    -
    -
    -
    -
-tags
    -
    -
    -
-trunk
    -compv1
    -compv2
    -compv3
    -tools
    -utils
    -etc

(不同的主要版本被视为单独的项目并进行维护)

工具

现在,由于预计核心组件的迁移是一次性事件,因此我准备了一个脚本,将所有内容迁移到专用的 SVN 存储库。根据我在其他项目中所做的,我创建了一个脚本以使用 project-name 参数启动

#!/bin/bash
PROJECT_NAME=$1
TARGET_REPO=$2
PROJECT_ROOT=/tmp/cvs_copy

sudo -u apache cvs2svn --dumpfile=/tmp/$PROJECT_NAME.dump --trunk=trunk/$PROJECT_NAME --branches=branches --tags=tags --tmpdir=/tmp/cvs2svn --encoding=windows-1252 --dry-run $PROJECT_ROOT/$PROJECT_NAME/

sudo -u apache cvs2svn --dumpfile=/tmp/$PROJECT_NAME.dump --trunk=trunk/$PROJECT_NAME --branches=branches --tags=tags --tmpdir=/tmp/cvs2svn --encoding=windows-1252 $PROJECT_ROOT/$PROJECT_NAME/

sudo -u apache svnadmin load /srv/svn/repos/phoenix/ < /tmp/$PROJECT_NAME.dump

问题

我可以成功迁移第一个项目,但是到了第二个的时候,我显然收到以下错误

svnadmin: E160020: File already exists: filesystem '70ce675a-1390-4203-9115-015d7d1d3a47', transaction '155-4b', path '/trunk'

显然 因为仔细想想,转储包含一个创建根 trunk 目录的事务,这与当前存储库布局冲突:在 T-0 上,它是空的;在T-1上,导入项目1后,包含trunk,由于trunk已经存在,无法进化到T-2。

问题

我想告诉svnadmin load,当trunk 目录存在时,它可以优雅地跳过创建它。我不是 parent-dir 标志的主人,但我认为它会在 parent-dir 下创建所有内容,这就是我在上面显示的第一个布局中想要的。

您能否提供有关执行此迁移的建议?

【问题讨论】:

    标签: svn cvs cvs2svn


    【解决方案1】:

    svnadmin load 总是重新创建整个树,存储在转储中的存储库中。 --parent-dir 只允许在加载时更改此树的根的“挂载点”。 F.e - 转储/trunk/,加载--parent-dir somedir,将在新存储库中生成/somedir/trunk/...

    在您的情况下,您至少有两种方法:

    • 使用 --parent-dir 将每个转储恢复到另一个干净的位置,稍后在附加修订版中将子树移动到 /trunk/component*(在所有加载之后,您可以重复加载-转储循环,跳过“移动”修订以优化历史记录)
    • 如果创建 /trunk 在单独的修订版中执行(仅 mkdir,未添加文件),您可以在加载时跳过此修订版,使用 svnadmin load 上的 -r 参数:尝试阅读和理解转储文件的文本

    【讨论】:

      猜你喜欢
      • 2015-05-22
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      相关资源
      最近更新 更多