我在一个结构严重的svn repo中有一个分支,需要被剥离并移动到另一个svn存储库。 (我正试图清理它)。
如果我执行svn log
而不是停止复制/重命名,我可以看到我关心的所有3427次提交。除了编写一些主要的脚本之外,有没有办法将修订版转出?
我会遵循this question中的建议,但这个分支已被移动到所有地方,我也想保留这些动作。
答案 0 :(得分:2)
我想这可能与@ZacThompson(和@Pekka)的意思相似:我认为svndumpfilter
是你的朋友。
根据你的问题,我认为你已经知道它的意图是什么,但却在整个地方复制/移动分支机构?我可以在前面提到的SVN Documentation中找到答案:
此外,复制的路径可以给你一些 麻烦。 Subversion支持复制 存储库中的操作,其中a 通过复制一些来创建新路径 已存在的路径。有可能的 在生命的某个阶段 您的存储库,您可能已复制 某个位置的文件或目录 那个svndumpfilter被排除在外 它包含的位置。要做 转储数据自给自足, svndumpfilter还需要显示 添加新路径 - 包括 由...创建的任何文件的内容 复制 - 并不代表该添加 作为来自不会的来源的副本 存在于过滤的转储数据中 流。但是因为Subversion 存储库转储格式仅显示内容 在每次修订中都改变了 复制源的内容可能不会 随时可用。如果你怀疑 你有这种副本 在您的存储库中,您可能想要 重新考虑你的被包含/被排除的一组 路径,可能包括路径 作为你的来源 麻烦的复制操作也是如此。
含义:make svndumpfilter
包含分支所在的所有路径。或者我错过了什么?
另一种可能性是@compie在您链接的主题中提到的svndumpfilter2
虽然我认为它甚至没有必要(我不知道@compie或svndumpfilter2
)。< / p>
答案 1 :(得分:1)
您需要使用以下组合:
如果你想做整个分支,你可能甚至不需要svndumpfilter。但如果你这样做:
http://svnbook.red-bean.com/nightly/en/svn.reposadmin.maint.html#svn.reposadmin.maint.filtering
答案 2 :(得分:0)
还有另一个非常简单的解决方案,可以解决“保留动作”问题。请参阅Apache Subversion FAQ条目"How do I completely remove a file from the repository's history?"的最后一段。该解决方案不依赖于svndumpfilter
。
您可以执行以下步骤:
将path-based authorization规则配置为拒绝 USERNAME 帐户对该文件的 PATHS 的读取权限要从存储库历史记录中删除的文件夹。
请注意复数名词路径。您要删除的文件或文件夹可以具有不同的名称,也可以位于存储库历史记录的不同位置。设置拒绝规则时请考虑这一点。
创建一个空存储库,
使用svnsync
工具将源存储库复制到帐户 USERNAME 下的目标存储库。有关与svnsync
存储库同步的详细信息,请参阅SVNBook章节"Repository Replication"。
与svndumpfilter
不同,svnsync
会自动将svn copy
操作与不可读的源路径转换为正常添加,如果历史记录涉及复制操作且仍需要过滤,则此操作非常有用。 :)
答案 3 :(得分:-2)
您需要使用HotCopy备份存储库目录。那么它应该只是简单地恢复存储库。