svn几个目录的部分复制?

时间:2014-11-24 17:54:16

标签: svn version-control

我正在尝试创建一个SVN存储库的只读镜像,我只对两个顶级分支及其所有底层子目录感兴趣。即   /树干/*   /支链/评论/ *

我想忽略/分支下的其他几个分支。

我已经有svnsync工作来镜像站点之间的整个存储库。我只是想知道我是否可以使用--drop-emtpy-revs svnrdump管道进入svndumpfilter来包含两个分支模式或排除其他分支模式。一旦我只转储了trunk / *和reviews / *,那么我将加载它,svnsync init它并启动同步。

我是在正确的轨道上还是有其他任何人可能建议的方法?

谢谢,布伦特

1 个答案:

答案 0 :(得分:0)

如果你真的想要一个复制的存储库,而不是如上所述的稀疏结账,我有一些建议。

首先, - drop-empty-revs和svnsync不会很好; svnsync取决于完全相同的修订号,如果没有,你会得到这样的错误:

svnsync: E000022: Revision being currently copied (2018), last merged
revision (2017), and destination HEAD (1234) are inconsistent; have
you committed to the destination without using svnsync?

其次,将某些目录从存储库中拆分可能会遇到问题,通常是因为文件是从您选择的集合之外的分支复制的,如this question中所示。可以找到此问题的详细说明here

简要提及另一种制作部分副本以避免先前问题的方法in the SVN FAQ。这个解决方案对我来说很有用。因此,您需要做的是使用authz限制对存储库的访问,类似这样(请注意,您必须拒绝访问您不希望复制的内容):

[/]
myuser = r
[/trunk]
myuser = r
[/branches/reviews]
myuser = r
[/tags]
myuser =
[/branches/other]
myuser =

然后设置并运行你的svnsync,你所允许阅读的目录之外的任何东西都不会出现,这意味着你将有很多空的修订版,但是,正如我之前所说,这是需要保持的svnsync happy。

希望这有帮助!