从subversion提交中删除数据



我最近向一个文件提交了信息。只有几行高度机密的代码。我需要完全从subversion存储库中删除此信息。如何在不恢复和丢失更改的情况下做到这一点?只在一个档案里?那么,是否有可能删除对该文件的所有引用,然后重新提交正确的文件?

我想你不得不

  • 记录错误提交和每个后续提交作为一个或多个补丁
  • 转储存储库
  • 创建新的存储库
  • 将错误提交之前的所有修订从转储导入到存储库
  • 按顺序重新应用每个补丁,(并在提交前删除几行机密信息)

SVN提供了一个名为svndumpfilter的命令,它允许您转储存储库并从中排除路径。然后,将该转储文件加载到新的存储库中,该文件将消失。

从http://www.principia-it.co.uk/tools-n-tips/subversion/subversion-faq/7-subversion/10-how-do-i-permanently-remove-paths-from-my-repository

svnadmin dump /path/to/repos > dump.file
svndumpfilter exclude path/to/remove < dump.file > newdump.file
svnadmin load /path/to/newrepos < newdump.file

唯一的解决方案是在服务器端过滤存储库。你应该使用这样的命令:

svnadmin create /path/to/newrepos
svnadmin dump /path/to/repos --incremental | svndumpfilter excdlude path/to/remove | svnadmin load /path/to/newrepos

你能等到Subversion 1.8出来吗?这就是实现高要求的obliterate命令的时候(当然,除非他们决定将其移动到Subversion 1.9或2.0)。

。对吧?

您唯一可以做的就是关闭存储库,执行svnadmin dump,使用svndumpfilter过滤它以删除更改,并使用svnadmin load重新加载存储库。这可以在单个管道中完成,但根据您的存储库大小,这可能意味着关闭几个小时。

我已经做过好几次了。这一点也不好玩,尤其是当你不得不在凌晨2点做这件事的时候,因为当你的开发人员忙于使用它的时候,你不能关闭你的存储库。

最新更新