删除颠覆历史

Rob*_*rto 5 svn

我有一些包含bin文件(图像,流量跟踪转储等)的subversion仓库。问题是对那些文件的几次提交导致了一个很大的存储库。由于我们仅出于历史目的保留回购协议,是否有可能重置回购协议的历史记录?我基本上是在寻找一种简单的替代方法来导出内容并重新创建存储库。

Vah*_*ian 5

根据Rob-Delete subversion history的一部分,例如,您要删除版本9000以下的所有内容(您的存储库现在为10000版本),因此可以尝试此操作

 svnadmin dump /path/to/current/repo -r9000:10000 > svn.dump
 svnadmin create /path/to/new/repo
 svnadmin load /path/to/new/repo < svn.dump
Run Code Online (Sandbox Code Playgroud)


Dav*_* W. 4

无法从 Subversion 存储库中删除历史记录1 。

使用 Subversion 或任何源代码控制系统的标准方法是不存储从您自己的源文件构建的文件。例如,如果我构建一个可执行文件,我应该将源代码存储在 Subversion 中,而不是可执行文件。

相反,请将您构建的工件存储在发布服务器上。这可以像 Maven 存储库一样复杂,或者只是远程计算机上的目录布局,您可以在其中以任何需要这些构建工件的项目都可以轻松访问的方式存储这些内容。这需要一些工作,但您不会最终得到臃肿的源存储库。

我的建议是首先重构您的构建过程以使用某种发布存储库。您没有提及您的环境,但如果是 Java,请查看 Maven 存储库,例如ArtifactoryNexus。您不需要使用 Maven。如果您正在使用 Ant,请查看Ivy,它与 Ant 集成得非常好。或者,仅用于<wget>获取您需要的工件。

如果您处于 C/C++ 世界,则可以使用ftpscpcurlwgetNFS从发布存储库获取并复制所需的工件。

一旦你设置了发布存储库,就可以执行 Subversion 转储/过滤/加载来删除无关的二进制文件,庆幸的是你再也不用这样做了。


1.嗯,没有简单的方法。然而,您已经提到您知道钻取、转储、过滤、加载。