我在结构不良的 svn 存储库中有一个分支,需要将其剥离并移至另一个 svn 存储库。(我正在尝试清理一些)。
如果我在复制/重命名时svn log
不停止,我可以看到我关心的所有 3427 次提交。除了编写一些主要脚本之外,是否有某种方法可以将修订版转储出去?
我会遵循这个问题中的建议,但是这个分支已经被移动到各处,我也想保留这些移动。
我在结构不良的 svn 存储库中有一个分支,需要将其剥离并移至另一个 svn 存储库。(我正在尝试清理一些)。
如果我在复制/重命名时svn log
不停止,我可以看到我关心的所有 3427 次提交。除了编写一些主要脚本之外,是否有某种方法可以将修订版转储出去?
我会遵循这个问题中的建议,但是这个分支已经被移动到各处,我也想保留这些移动。
我想这可能类似于@ZacThompson(和@Pekka)的意思:我认为svndumpfilter
是你的朋友。
从您的问题来看,我认为您知道它的目的是什么,但是在到处复制/移动分支时遇到了困难?可以在前面提到的SVN 文档中找到答案,我相信:
此外,复制的路径会给您带来一些麻烦。Subversion 支持存储库中的复制操作,其中通过复制一些已经存在的路径来创建新路径。可能在存储库生命周期的某个时刻,您可能已将文件或目录从 svndumpfilter 排除的某个位置复制到它包含的位置。为了使转储数据自给自足,svndumpfilter 仍需要显示新路径的添加——包括由副本创建的任何文件的内容——而不是将添加表示为来自您的文件中不存在的源的副本过滤转储数据流。但是由于 Subversion 存储库转储格式仅显示每个修订版中的更改内容,因此复制源的内容可能不容易获得。
含义:makesvndumpfilter
包含该分支曾经存在过的所有路径。还是我错过了什么?
@compie 在您链接的线程中可能svndumpfilter2
提到了另一种可能性,尽管我认为这甚至没有必要(而且我不知道 @compie 或svndumpfilter2
)。
您将需要使用以下组合:
如果你想做整个分支,你甚至可能不需要 svndumpfilter。但如果你这样做:
http://svnbook.red-bean.com/nightly/en/svn.reposadmin.maint.html#svn.reposadmin.maint.filtering
还有另一种非常简单的解决方案,可以解决“保留动作”问题。请参阅 Apache Subversion 常见问题解答条目的最后一段“如何从存储库的历史记录中完全删除文件?” . 该解决方案不依赖于svndumpfilter
.
您可以执行以下步骤:
配置基于路径的授权规则以拒绝USERNAME帐户对要从存储库历史记录中删除的文件或文件夹的PATHS的读取访问权限。
请注意复数名词路径。您要删除的文件或文件夹可能具有不同的名称,也可能位于存储库历史记录中的不同位置。请在设置拒绝规则时考虑这一点。
创建一个空的存储库,
使用工具将源存储库复制svnsync
到帐户USERNAME下的目标存储库。有关存储库同步的详细信息,svnsync
请参阅 SVNBook 章节“存储库复制”。
与 不同svndumpfilter
,svnsync
自动将svn copy
具有不可读源路径的操作转换为正常添加,如果历史记录涉及复制操作并且仍需要过滤,这很有用。:)
您需要使用 HotCopy 来备份存储库目录。那么它应该是简单地恢复存储库的问题。