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

在SVN中的独立存储库之间移动文件

  •  3
  • KOGI  · 技术社区  · 16 年前

    经过一些研究,我发现可以将文件从一个回购协议中移出,再移到另一个回购协议中,分离回购协议,并保持相关的历史记录。该过程包括将整个repo转储到文件,为所需的路径/文件过滤该转储文件(假设不希望移动所有内容),然后将所述转储文件加载到目标repo。

    我在前两个步骤中找到了成功,但在最后一个步骤中遇到了障碍——装载。

    从SVN手册中,有一个示例表明,在加载过程中将创建目标回购中的任何非现有路径:

    svnadmin load --parent-dir new/subdir/for/project /var/svn/restored < repos-backup
    <<< Started new txn, based on original revision 1
    * adding path : test ... done.
    * adding path : test/a ... done.
    

    但是,当我自己运行命令时(当然是使用不同的路径),我会得到以下信息:

    <<< Started new transaction, based on original revision 78
    svnadmin: File not found: transaction '990-tj', path 'myFolder/trunk/templates/default/fireWood'
    * adding path : myFolder/trunk/templates/default/fireWood ...
    

    然后我立即被踢到一个提示-不清楚这个过程是否成功。检查存储库时,没有创建新目录,也没有加载任何文件。什么都没有。

    有什么想法吗?

    4 回复  |  直到 16 年前
        1
  •  3
  •   Flexo - Save the data dump sunny moon    14 年前

    我最终明确地创造了 整个的 目标目录结构,然后导入筛选的转储。既然目标目录都存在,导入就成功运行了。

        2
  •  2
  •   MytyMyky    16 年前

    我只是在整理我的报告,重新组织它们的时候运行这种类型的命令。我基本上是将所有内容从一个repo移动到另一个repo中的一个新文件夹,加入类似的项目。

    我用过

    svnadmin dump d:\repoPathToMove > d:\backupFolder\repoName.dump
    

    并使用

    svnadmin load d:\pathToNewRepo --parent-dir InternalFolder < d:\backupFolder\repoName.dump
    

    在d:\path to new repo是到目标repo的路径,internalfolder是存放加载文件的新文件夹。如果我在加载之前创建了InternalFolder,这将起作用。我使用目标浏览器上的svn的repobrowser创建了内部文件夹。

    刚尝试在不创建文件夹的情况下运行加载,但得到的错误与您提出的相同。所以我想简单的方法是添加一个命令来创建丢失的父目录。

    我在这里没有使用任何过滤。你也可以通过写一个接一个的转储和加载来简化它:

    svnadmin dump d:\repoPathToMove | svnadmin load d:\pathToNewRepo --parent-dir InternalFolder
    

    避免创建转储文件

        3
  •  0
  •   sbi    16 年前

    有什么想法吗?

    虽然我无法帮助您处理错误,但我的想法是尝试在不提供路径的情况下加载。这些东西将在顶级结束,但有了SVN,你可以随时移动它以后。

    (您确实有一些存储库的副本来尝试所有这些操作,不是吗?)

        4
  •  0
  •   fglez    16 年前

    问题可能在过滤中。svendumpfilter不处理所有类型的依赖关系,在某些情况下会自动忽略必要的修改。

    在这种特殊情况下,请在添加文件之前检查是否在转储文件中正确创建了所有目录。

    推荐文章