我只是在考虑编写一个 shell 脚本,以一种易于实现的方式(在外部,使用建议的方式,但自动化)来实现 obliterate 功能。
这是我的想法:
在客户端
svn list -R > file-list
.- 以 grep 等多种方式过滤文件列表以创建文件“要删除的文件”,类似于一组
grep XXX file-list>>files-to-delete
. - 使用 scp传输
files-to-delete
到服务器。
在服务器上
- 转储存储库
svnadmin dump /path/to/repos > repos-dumpfile
,这也可以作为备份保存。 - 过滤转储文件,对于“要删除的文件”中的每个单词,执行以下操作:
cat repos-dumpfile | svndumpfilter exclude $file > new-dumpfile
- 创建一个新存储库并将新文件加载到其中
svnadmin create new-name; svnadmin load new-name < new-dumpfile
这行得通吗?怎么会失败?还有其他想法吗?