【问题标题】:Migrate svn from Assembla to Atlassian将 svn 从 Assembla 迁移到 Atlassian
【发布时间】:2024-01-22 02:19:01
【问题描述】:

我正在尝试将我的 subversion 存储库迁移到 Atlassian。 Atlassian 要求导入的 repo 转储具有与每个项目密钥的项目同名的根目录。假设我在 Atlassian 中的项目键是 FOOBAR,那么 repo 转储应该包含所有修订版的 /FOOBAR。它还应该包含主干、分支和标签子目录。

为了重写 Assembla svn 转储,我这样做了:

cat foobar-assembla.dump | svn-dump-reloc "/" "FOOBAR" > foobar-atlassian.dump

然后我尝试测试它:

svnadmin create test
cat foobar-atlassian.dump | svnadmin load test

这产生了一条错误消息:

svnadmin: File not found: transaction '0-0', path 'FOOBAR/trunk'
 * adding path : FOOBAR/trunk ...

有什么想法吗?

【问题讨论】:

    标签: svn assembla


    【解决方案1】:

    我认为这是因为转储文件不包含任何会创建 FOOBAR 目录本身的事务。

    尝试在 svnadmin load test 之前运行 svn mkdir file://$PWD/test/FOOBAR

    为了给予应有的荣誉,我从http://dotslashstar.blogspot.com.au/2011/06/svn-hack-insert-missing-trunk-root.html得到了这个提示

    【讨论】:

    • +1:虽然我使用文本编辑器 (nano) 找到了自己的方法,但我可以看到 svn mkdir 之前 svnadmin load 可能会如何工作。
    【解决方案2】:

    以下对我有用。

    使用关闭所有转换选项的文本编辑器:

    1. 将所有Node-path: trunk 实例替换为Node-path: FOOBAR/trunk
    2. 在创建FOOBAR/trunk 的修订版中,在添加FOOBAR/trunk 创建FOOBARFOOBAR/branchesFOOBAR/tags 的条目之前手动添加一个条目。

    我了解这在某些情况下可能不起作用,例如当 Node-path: trunk 出现在文件本身中时。但它适用于这种情况,并且应该适用于大多数其他情况。

    【讨论】: