我正在尝试创建一个SVN存储库的只读镜像,在这里我仅对两个顶级分支及其所有基础子目录感兴趣。即
/树干/*
/分支机构/评价/ *

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

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

我是在正确的轨道上吗,还是有人建议使用另一种方法?

谢谢,布伦特

最佳答案

如果您实际上是要复制的存储库,而不是上面建议的稀疏签出,那么我有一些建议。

首先,--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保持快乐所必需的。

希望这可以帮助!

关于svn - svn几个目录的部分复制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27111114/

10-13 08:51