我只是想编写一个shell脚本来以易于实现的方式实现删除功能(外部,使用建议的方式,但是自动化).
这就是我的想法:
在客户端
svn list -R > file-list
.
过滤文件列表有几种方式,比如grep来创建一个文件"files-to-delete",类似于一组grep XXX file-list>>files-to-delete
.
files-to-delete
使用scp 传输到服务器.
在服务器上
转储存储库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
这会有用吗?怎么会失败?还有其他想法吗?
是的,那个脚本可行.但通常你不会删除那么多文件.通常只有在您意外提交机密信息时才需要删除.
你确定要对这么多文件使用删除吗?
我认为这cat new-dumpfile | svndumpfilter exclude $file > new-dumpfile
是一个危险的例子.new-dumpfile将不会被完全处理,它的内容可能会丢失,不是吗?
从下面的评论:new-dumpfile肯定会丢失,因为即使在启动命令之前shell也会破坏它(截断为零长度).