dumpfilter svn repo 中的一个项目

Posted

技术标签:

【中文标题】dumpfilter svn repo 中的一个项目【英文标题】:dumpfilter one project out of svn repo 【发布时间】:2014-10-09 14:46:39 【问题描述】:

我有整个 AFS svn 存储库的转储文件。我正在尝试从大型转储中过滤掉 hadoop 项目。这是我的命令:

svndumpfilter include --drop-empty-revs --skip-missing-merge-sources /hadoop < svn-asf-public-r0\:1164363 > hadoop_dumpfile1

然后我得到了这样的标准输出:

...
Revision 614268 skipped.
Revision 614269 skipped.
Revision 614270 skipped.
Revision 614271 skipped.
Revision 614272 skipped.
Revision 614273 skipped.
Revision 614274 skipped.
Revision 614275 committed as 614275.
Revision 614276 committed as 614276.
...

但问题来了:

Revision 614328 skipped.
svndumpfilter: E200003: Invalid copy source path '/lucene/hadoop/site'

我认为这可能是 repo 中的旧移动/复制操作,因为原始转储文件非常庞大。并且svn文件结构树可能有很多变化。我现在该怎么办?

【问题讨论】:

--skip-missing-merge-sources 必须避免所有合并源错误并允许继续过滤 但是你必须从运行正确的命令开始,现在你的语法又糟糕又丑陋。 svndumpfilter include hadoop --drop-empty-revs --skip-missing-merge-sources --renumber-revs &lt; dump 我事先尝试过不使用 --skip-missing-merge-sources,但它不起作用。 【参考方案1】:

修订版 614329 会影响这些路径:

hadoop/core/site/, lucene/hadoop/site/

所以你必须在你的svndumpfilter include 命令行中包含/lucene/hadoop/site

阅读 SVNBook!看来你遇到的问题在SVNBook | Filtering repository history中有描述:

另外,复制的路径会给您带来一些麻烦。 Subversion 支持复制 存储库中的操作,其中通过复制创建新路径 一些已经存在的路径。有可能在某个时间点 您的存储库的生命周期,您可能已经复制了一个文件或目录 从 svndumpfilter 排除的某个位置,到某个位置 它包括。为了使转储数据自给自足,svndumpfilter 仍然需要显示新路径的添加——包括 副本创建的任何文件的内容——并不代表 添加为来自过滤器中不存在的来源的副本 转储数据流。但是因为 Subversion 存储库转储格式 仅显示每个修订版中更改的内容,副本的内容 来源可能不容易获得。如果你怀疑你有 您的存储库中的任何此类副本,您可能需要重新考虑 您的一组包含/排除路径,可能包括 也成为您繁琐的复制操作的根源。

【讨论】:

以上是关于dumpfilter svn repo 中的一个项目的主要内容,如果未能解决你的问题,请参考以下文章

SVN中对repo中的某一目录设置钩子

任何人都可以绘制SVN分支的概念吗?

Windows 下的 git svn clone large repo:内存不足 - 不是大文件问题

如何重命名 SVN 分支并更新现有沙箱中的引用?

SVN:Git 中的外部等效项?

XCode:SVN中的提交失败:设备上没有剩余空间