Subversion Obliterate功能

Osa*_*eed 22 svn svndumpfilter svnadmin svndump

我只是想编写一个shell脚本来以易于实现的方式实现删除功能(外部,使用建议的方式,但是自动化).

这就是我的想法:

在客户端

  1. svn list -R > file-list.
  2. 过滤文件列表有几种方式,比如grep来创建一个文件"files-to-delete",类似于一组grep XXX file-list>>files-to-delete.
  3. files-to-delete使用scp 传输到服务器.

在服务器上

  1. 转储存储库svnadmin dump /path/to/repos > repos-dumpfile,这也可以作为备份保存.
  2. 过滤转储文件,对于"要删除的文件"中的每个单词,执行: cat repos-dumpfile | svndumpfilter exclude $file > new-dumpfile
  3. 创建一个新的存储库并将新文件加载到该存储库 svnadmin create new-name; svnadmin load new-name < new-dumpfile

这会有用吗?怎么会失败?还有其他想法吗?

Ste*_*fan 7

是的,那个脚本可行.但通常你不会删除那么多文件.通常只有在您意外提交机密信息时才需要删除.

你确定要对这么多文件使用删除吗?


mar*_*ark 6

我认为这cat new-dumpfile | svndumpfilter exclude $file > new-dumpfile是一个危险的例子.new-dumpfile将不会被完全处理,它的内容可能会丢失,不是吗?

从下面的评论:new-dumpfile肯定会丢失,因为即使在启动命令之前shell也会破坏它(截断为零长度).

  • 我认为,对于大文件,阅读和同时写入它将无法正常工作.我想即使是小文件,不是吗?"cat file | do_something> file"看起来会覆盖自身,这可能会在完全处理之前发生.依我看. (2认同)