从dumpfile加载Svnadmin会导致“找不到文件错误”。救命?

时间:2010-03-01 22:08:59

标签: svn dump svnadmin

  

假设:

     

Repository_1 - 来源

     

Repository_2 - 目的地

我使用svnadmin和svndumpfilter的组合创建了Repository_1 / Folder1的转储文件

从转储文件从 Repository_1 / Folder1 加载到 Repository_2 / Trunk 时,一切都很好但是

Repository_1 / Folder1 / Sub-folder (为此创建另一个转储)加载到 Repository_2 / trunk 时,出现以下错误:

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

任何人都可以解释一下吗?

5 个答案:

答案 0 :(得分:34)

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

Repository_1 / Folder1 / Sub-folder (为此创建另一个转储)加载到 Repository_2 / trunk

  

你需要在中创建这个结构   SVN

     

<强> Repository_2 /中继/ Folder1中

注意:您只需要创建父项,而不是文件夹本身,所以不要创建 Repository_2 / trunk / Folder1 / Sub-folder

答案 1 :(得分:1)

如果有人从trunk / Folder1复制到trunk / Folder1 / Sub-folder,你会收到此错误。由于您只在转储中包含了trunk / Folder1 / Sub-folder,因此无法再从trunk / Folder1中找到所需的文件,并因此错误而停止。

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

答案 2 :(得分:1)

我刚遇到此错误,我追溯到最近的服务器升级和svnadmin dump/load周期。问题是我在与其创建的目录不同的目录中设置了存储库。

在旧计算机上,我使用inetd.conf来运行svnserve

svnserve -r /var/svn/main

并且存储库位于/ var / svn / main

然而,在新机器上我inetd.conf指向/var/svn

svnserve -r /var/svn

我已经从旧服务器进行了结帐,因此当我尝试提交目标路径时,由于我不小心在网址中添加了其他组件,因此svn://host/source/trunk变为svn://host/main/source/trunk

我可以通过移动目录来修复它,但我选择使用svn switch --relocate重写工作副本的URL。

注意:快速诊断以确定是否存在问题是更改到工作副本中的目录,键入svn info以获取存储库URL,然后键入svn ls <myUrl>。如果这出现No repository found错误,那么您就知道这是原因。

答案 3 :(得分:1)

正如this thread中所述,svnrdumpsvndump的工作方式不同。

svndump + svndumpfilter

  • 转储整个存储库历史记录,然后过滤所需的内容。这需要很长时间在大型存储库上,即使你只是抓住一个小子树。
  • 生成可能以多种方式损坏的转储文件,例如在不存在的目录中创建文件或从不存在的路径复制文件。

svnrdump

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

底线:svnrdump可能会更好。

答案 4 :(得分:0)

加载转储失败,因为trunk/Folder1创建已由svndumpfilter过滤。根据{{​​3}},转储需要这些步骤:

您可以通过编辑转储本身在转储中创建trunk / Folder1,并将以下块添加到第一个修订版中:

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

此块必须插入第一个修订版的道具块中。

然后可以使用svnadmin加载转储。