【发布时间】:2010-10-08 07:44:56
【问题描述】:
我只是想编写一个 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
这行得通吗?怎么会失败?还有其他想法吗?
【问题讨论】:
-
如下所述,cat new-dumpfile | svndumpfilter exclude $file > new-dumpfile 将不起作用,因为它会破坏 new-dumpfile。永远不要使用同一个文件进行读写(应该很明显......)。
标签: svn svnadmin svndump svndumpfilter