代码之家  ›  专栏  ›  技术社区  ›  Chicago

从转储文件加载svnadmin会导致“找不到文件”错误。帮助?

  •  27
  • Chicago  · 技术社区  · 16 年前

    鉴于:

    存储库\1-源

    存储库\2-目的地

    我使用svnadmin和svndumpfilter的组合创建了一个存储库1/folder1的转储文件

    从转储文件加载时 存储库1/文件夹1 进入之内 存储库\2/主干 一切都很好 但是

    从加载时 存储库_1/folder1/sub-folder (为此创建了另一个转储)到 存储库\2/主干 我得到以下错误:

    svnadmin: File not found: transaction '267-89', path 'trunk/Folder1/Sub-folder'
    

    有人能解释吗?

    5 回复  |  直到 9 年前
        1
  •  34
  •   Chicago    16 年前

    结果发现目标中的结构(空文件夹)需要预先创建。 所以, 如果您想这样做:

    从加载时 存储库_1/folder1/sub-folder (为此创建了另一个转储)到 存储库\2/主干

    您需要在 视觉神经网络

    存储库_2/trunk/folder1

    注意:您只需要创建父文件夹,而不需要创建文件夹本身,因此不要创建 存储库_2/trunk/folder1/sub-folder

        2
  •  1
  •   stmax    16 年前

    如果有人将某些内容从trunk/folder1复制到trunk/folder1/sub文件夹,则会出现此错误。由于转储中只包含trunk/folder1/sub文件夹,因此它无法再从trunk/folder1中找到所需的文件,并因此错误而停止。

    要解决这个问题,您必须确保包含转储中作为副本源的所有内容。

        3
  •  1
  •   the_mandrill    15 年前

    我刚刚经历了这个错误,我跟踪到最近的服务器升级和 svnadmin dump/load 循环。问题是我在一个不同的目录中设置了存储库,而它是在一个不同的目录中创建的。

    在旧机器上,我使用 inetd.conf 运行 svnserve :

    svnserve -r /var/svn/main
    

    存储库在/var/svn/main中

    但是在我的新机器上 inetd.conf文件 指向 /var/svn :

    svnserve -r /var/svn
    

    我已经从旧服务器中签出了一个,所以当我试图提交时,目标路径不存在,因为我意外地向URL添加了另一个组件,所以 svn://host/source/trunk 成为 svn://host/main/source/trunk .

    我可以通过移动目录来修复它,但是我选择用 svn switch --relocate .

    注意:要快速诊断是否存在问题,请切换到工作副本中的目录,键入 svn info 要获取存储库URL,然后键入 svn ls <myUrl> . 如果这给了 No repository found 错误,那么你就知道这就是原因。

        4
  •  1
  •   Chris Jones    9 年前

    如中所述 this thread , svnrdump 工作方式不同于 svndump .

    Svendump公司 + svndumpfilter :

    • 转储整个存储库历史记录,然后筛选所需内容。在大型存储库中,这需要很长时间,即使您只是在获取一个子树。
    • 生成一个转储文件,该文件可能以多种方式中断,例如在不存在的目录中创建文件或从不存在的路径复制文件。

    Svnrdump公司 :

    • 生成自一致的转储文件。
    • 如果要执行等效的 svndumpfilter include . 例如, svnrdump https://server.example.com/svn/repo/branches/1.4 将获取影响/分支/1.4的所有修订。
    • 可能需要额外的 | svndumpfilter include / --drop-all-empty-revs --renumber-revs .

    底线: Svnrdump公司 可能会更好。

        5
  •  0
  •   CharlesB Craig McQueen    9 年前

    加载转储失败,因为 trunk/Folder1 创建被svendumpfilter筛选。根据 this blog post ,需要在转储上执行以下步骤:

    您可以在转储中创建trunk/folder1,方法是编辑转储本身并将以下块添加到第一个修订:

    Node-path: trunk/Folder1
    Node-action: add
    Node-kind: dir
    Prop-content-length: 10
    Content-length: 10
    PROPS-END
    

    此块必须插入第一次修订的PROPS块中。

    然后可以用svnadmin加载转储。