从SVN存储库导出单个项目

时间:2009-02-27 17:21:19

标签: svn migration merge

我在同一个SVN存储库下存储了几个项目。我按照手册进行了操作:svnadmin dump c:\repository | svndumpfilter include <my project> > myproject.dump

我的问题是,svndumpfilter因错误“无效的复制源路径”而窒息,因为我们不久前将该特定项目从分支移回另一个文件夹。

有没有人成功处理过这个问题?

我目前正在考虑以块的形式转储主存储库,跳过可能导致错误的修订。然后,我将每个块加载到新的存储库中,每个块都在一个文件夹下,然后使用Eclipse将它们合并。这听起来对你有用吗?你觉得它有什么问题吗?

2 个答案:

答案 0 :(得分:0)

这个项目是如何移动的?有一个svn move命令可用于移动文件/目录,更重要的是,让Subversion知道所述文件/目录已被移动。

svn move -m "Moved old/dir to new/dir" file:///url/to/old/dir file:///url/to/new/dir

由于您已经移动了它,我建议您尝试在项目的旧位置使用svn delete。此强制Subversion删除对旧位置的引用:

svn delete -m "Project was moved some time ago, reflecting in repository" file:///url/to/old/dir

答案 1 :(得分:0)

语法为:

svnadmin dump c:\repository | svndumpfilter include project > myproject.dump

这将包括项目下的所有内容。

有关详细信息,我添加了svndumpfilter帮助。

$ svndumpfilter help include
include: Filter out nodes without given prefixes from dumpstream.
usage: svndumpfilter include PATH_PREFIX...

Valid options:
  --drop-empty-revs        : Remove revisions emptied by filtering.
  --renumber-revs          : Renumber revisions left after filtering.
  --skip-missing-merge-sources : Skip missing merge sources.
  --targets ARG            : Pass contents of file ARG as additional args
  --preserve-revprops      : Don't filter revision properties.
  --quiet                  : Do not display filtering statistics.