从subversion提交中删除数据?

时间:2011-12-27 17:07:58

标签: svn

我最近将信息提交给了一个文件。只有几行高度机密的代码。我需要从subversion存储库COMPLETELY中删除此信息。如果不恢复和丢失更改,我该怎么做?它只在一个文件中?那么,是否可以删除对该文件的所有引用,然后重新提交正确的引用?

4 个答案:

答案 0 :(得分:1)

我认为你必须

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

svnadmin create /path/to/newrepos

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

答案 3 :(得分:0)

你能等到Subversion 1.8出来吗?那是当高度要求的删除命令被实现的时候(当然,除非他们决定将它移到Subversion 1.9或2.0)。

没有。正确?

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

我已经好几次了。这没什么好玩的,特别是当你必须在凌晨2点这样做时,因为当开发人员忙于使用它时你无法取下你的存储库。