如何克隆SVN存储库的一部分?
我有一个SVN存储库,里面有很多目录。现在我想克隆这个存储库,只留下一个特定的目录。当然,我不需要在这个新存储库中与其他目录相关的任何修订。我该怎么做?谢谢。
没有找到相关结果
已邀请:
3 个回复
谷起
是用于此目的的通用工具。有关示例,请参阅subversion书的本章。
部窖空
镶骄册筷
的项目文件夹,它已经在历史的某个时间重命名为
。另一个名为
的文件随后从位置
下复制到
。一个基本的树结构可能看起来像这样。
您希望
拥有自己的新存储库。因此,您将存储库转储到文件并使用svndumpfilter仅包含
,因为这是您在HEAD修订版中看到的项目的名称。
不幸的是,你从svndumpfilter得到了这个错误
那是因为
曾经被称为
,并且在过去的一些修订中它被重命名。由于重命名本质上是一个删除和复制,因此svndumpfilter无法找到创建
的副本的来源并且正确地出现错误。所以我们再次尝试使用包含
的以下命令
Svndumfilter现在出现了另一个错误。
是的,这是因为
从
复制到
。因此我们必须包含此文件,否则我们无法将其复制到“TheProject”。让我们再试一次。
操作成功!第三次幸运似乎! 让我们尝试将过滤后的转储文件加载到存储库。
毕竟没那么幸运!加载过程中出现以下错误
啊!这是因为我们忘了包含
,因为它是
的父文件夹
好的,这个命令有效,加载也有效。不幸的是,我们现在也包括了
。结论是使用
并不真正起作用,因为它没有给我们提供我们所追求的粒度。我们必须使用
做所有事情,试图排除我们不需要的所有东西,从而最终得到一个包含我们需要的文件的存储库。可以说,它充满了自己的一系列问题。例如,排除存储库中实际需要的文件非常容易。如果人们想要一个这样的例子,我可以扩展这个答案。 肯定有更好的办法。事实证明,这是一个商业产品。我们开发了一个名为Subdivision的工具,专门从subversion存储库中提取文件和文件夹。它还可以从subversion存储库中删除(或删除)文件,以及将存储库拆分为两部分,同时保证不会从两个存储库之一中遗漏任何文件。 Subdivision的亮点在于它拥有整个存储库的内存视图,并运行解决上述示例中遇到的所有问题所需的算法。这意味着您只需在保存用户时间的同时获取正确文件的必要粒度,因为操作在一次传递中完成。