8

我们有一个 Subversion 存储库,其中一个目录是:

  • 真的不需要超出 RCS 能力的版本控制
  • 未与存储库中的任何其他内容一起进行版本控制
  • 修改频率大约是存储库其余部分的六倍

虽然我知道高修订号不是问题,但我还是想将这个单一目录从我的主存储库中拉出,并放入第二个,理想情况下是新的。

最好的过程是什么?如果有所不同,SVN 存储库托管在(...检查...)FreeBSD 机器上。

值得注意的是,虽然我需要在新存储库中保留版本历史记录,但无需删除旧存储库中的内容;它可以坐在那里,我只关心它。

4

4 回答 4

6

你可以使用svnadmin dumpsvnadmin load从原来的仓库创建一个新的仓库;然后将不适合您的方案的目录复制到更好的位置,然后删除其他所有内容。在原始存储库中,您只需删除不合适的目录。这样可以保持所有历史记录完好无损,您最终会得到两个存储库。

可能有一种方法可以随后从历史中无用的部分(svndumpfilter)中清除两个存储库,但由于硬盘空间非常便宜,我认为这没有必要。无论如何,SVN 文档有关于它的所有信息。

于 2009-02-19T05:38:13.870 回答
1

推荐的方法是使用,然后使用该工具svnadmin dump过滤转储文件(请参阅svnbook)。svndumpfilter

例如,我有一个名为“Model”的顶级目录的仓库,我想将其移至自己的仓库:

svnadmin dump my_orig_repo | svndumpfilter include --drop-empty-revs --renumber-revs Model >model_only.svndump
svnadmin load my_model_repo < model_only.svndump

这将创建仅包含 Model 子目录的新存储库。

要从原始存储库中删除它,您只需执行svn rm. 这将从最新版本的 repo 中删除它,并且是最简单的方法。

但是,如果我的示例中的 Model 目录非常大,那么我可能希望将其完全从原始目录中删除。我可以通过重复该过程来创建另一个过滤的 svn 转储文件来排除它。然后我会用没有排除目录的新目录替换原来的目录。

于 2018-04-30T21:04:28.577 回答
-1

我会导出(而不是签出)目录,将其导入新的存储库,然后将其从原始存储库中删除(当然,日志消息会指示它的去向;-)。

这可能是也可能不是“最好”的方法......

于 2009-02-19T04:54:05.253 回答
-1

我不知道我是否理解正确,但有一个很好的解决方案。如果您的原始存储库位于 svn://domain,并且您经常使用的文件夹称为“文件夹”,我相信您可以简单地执行以下命令:svn co svn://domain/folder仅签出该文件夹。

于 2009-02-19T06:04:57.330 回答