加载存储库的转储部分没有任何效果

Posted

技术标签:

【中文标题】加载存储库的转储部分没有任何效果【英文标题】:Loading dumped part of repository does't take any effect 【发布时间】:2009-12-27 10:00:12 【问题描述】:

我想将文件夹从一个存储库移动到另一个存储库(当然,同时保留所有历史记录)。我关注了问题“How to move a single folder from one Subversion repository to another repository?”的一些答案,特别是我尝试了命令:

svnadmin.exe dump H:\Repositories\RepSource > W:\temp\RepSource.dump
svndumpfilter.exe include "trunk\Sources\folderToMove" --drop-empty-revs --renumber-revs --preserve-revprops < W:\temp\RepSource.dump > W:\temp\RepSource_filtered.dump    
svnadmin.exe load "H:\Repositories\RepDest" < W:\temp\RepSource_filtered.dump

RepDest 是我为测试而创建的一个空存储库。倾倒运行成功;根据输出进行过滤,这表明所有文件夹都被删除,但指定的文件夹除外。加载有一些问题;它有输出:

“theFile.mxml”是“folderToMove”文件夹内的文件。

我注意到了一些神奇之处:在 svndumpfilter 中,我在包含路径的末尾添加了一个反斜杠:

svndumpfilter.exe include "trunk\Sources\folderToMove\" --drop-empty-revs --renumber-revs --preserve-revprops < W:\temp\RepSource.dump > W:\temp\ RepSource_filtered.dump

输出如下:

>>

>>

>>

>>

>>

>>

>>

>>

>>

>>

>>

>>

>>

>>

>>

这似乎是成功的,但是当我查看 RepDest 存储库(使用 TortoiseSVN->Repo 浏览器或 VisualSVN 服务器管理器)时,里面什么都没有。它保持为空。 HEAD 修订号为 0。但如果我查看此存储库:

svnlook tree H:\Repositories\RepDest -r 5

我再次看到空存储库,但它识别出修订号。从 1 到 15 的所有修订号都得到了正确处理。为了测试,“-r 16”会导致 svnlook 告诉我这个版本不存在。

我还检查了 RepDest 存储库文件夹的大小——加载前后是一样的。

这里有什么问题?有什么想法吗?

【问题讨论】:

另外,我注意到以下问题:仅当“trunk\Sources\folderToMove”包含文件和子文件夹时才会出现此问题。如果它仅包含文件,则导入将成功。我试图在包含选项中指定以空格分隔的子文件夹和文件,但我得到相同的结果“找不到文件” 【参考方案1】:

查看svnadmin load 命令的帮助。您在存储库中加载目录时是否指定了--parent-dir 参数?否则会进入错误的目录。

您必须通过--parent-dir 参数将该目录加载到当前存储库中不存在的目录中。从您显示的命令来看,您似乎没有指定该目录的位置。我不记得了,但我也相信你必须在加载之前在你的存储库中创建这个空的父目录。

当然,在执行svnadmin load 之前备份并关闭 Subversion。

【讨论】:

以上是关于加载存储库的转储部分没有任何效果的主要内容,如果未能解决你的问题,请参考以下文章

如何克隆 SVN 存储库的一部分?

svndumpfilter - 不支持的转储文件版本

如何将 SVN 转储文件导入 SourceForge?

如何导出具有依赖项的 SVN 存储库的一部分?

确认延迟加载 linq 到我的存储库的实体 [简单]

Apache Lucene 存储库的 SVN 转储