移动没有历史记录的 Subversion 存储库

Posted

技术标签:

【中文标题】移动没有历史记录的 Subversion 存储库【英文标题】:Move Subversion repository without history 【发布时间】:2011-12-08 15:23:24 【问题描述】:

有很多关于使用版本历史移动 Subversion 历史的帖子,但我想做一些不同的事情。

基本上,我们有一个已用作概念证明的存储库,我们希望将其存档。然而,我们想用一些代码的最新版本创建一个新的存储库,但保存了作者历史,但这是一个新的开始,所以我们对保留版本历史不感兴趣。另外,我们正在努力减小存储库的大小,因为过去保存的二进制文件会导致存储库太大。

同时我还想删除一些我认为可以使用转储过滤器的文件夹?

因为我想保持用户信息签出并重新签入新位置不是首选选项。

【问题讨论】:

你在自相矛盾。你想要作者历史,但你不想要历史?澄清。 我想他只想要每个文件的头部修订版 @ChristofferHammarström 我已经澄清了。基本上我想要最新的作者,但没有版本控制历史。猜这有点奇怪,但我不希望每个文件都说我上次签入它们。也许我正在寻找错误的解决方案来解决将二进制文件存储在其中的问题。 【参考方案1】:

要获得最新版本的文件及其作者、提交日期和提交消息,您必须使用 svnadmin dump 从您的存储库创建转储文件,并使用 svndumpfilter 过滤掉您没有的修订想保留。

使用 svndumpfilter 通常是一项非常令人沮丧的练习,您可能需要依赖派生程序(通常维护不善),例如 svnfiltereddump、svndumpsanitizer、svndumpfilter2 或 svndumpfilter3。

最后你应该问自己这个问题,历史上的清理是否真的值得付出努力。

【讨论】:

不幸的是,存储库超过 600MB,我知道这在事物方案中并没有那么大,但仅适用于少数应用程序,它们主要是源代码,因此它应该小得多。但是,这是因为过去提交的二进制文件会增加存储库的大小,如果没有您提到的工具,似乎没有简单的方法可以删除这些文件 您可以创建转储并从转储文件中删除二进制文件的 base64 字符串。 (这是一个纯文本文件。)【参考方案2】:

您可以简单地为您想要继续拥有的项目创建一个svn export,然后在新存储库上创建一个svn import。在导入之前,只需删除您不想导入的文件。

【讨论】:

以上是关于移动没有历史记录的 Subversion 存储库的主要内容,如果未能解决你的问题,请参考以下文章

操纵SVN历史记录

如何将分支内容移动到另一个存储库保留历史记录并避免复制原始存储库的完整历史记录?

将 Git 存储库内容移动到另一个存储库,保留历史记录

搜索颠覆历史(全文)

CVS 到 Subversion 的转换:磁盘空间问题

将Git存储库内容移动到保留历史记录的另一个存储库