У меня было похожее, но чуть более сложное требование. Несколько сотен ревизий в прошлом, некоторые очень большие (> 1 ГБ) образцы файлов данных были переданы в хранилище. Затем они были перемещены и в конечном итоге удалены из головы. Однако они все еще были в истории изменений, что делало хранилище громоздким. Я не мог использовать svn list -R
, так как файлы больше не появлялись в рабочей копии.
Однако, svn list
может быть задан аргумент ревизии. Я не был уверен точно, когда были проверены большие файлы, но я знал, что это было когда-то после ревизии 2000. У меня также был список имен файлов. Поэтому я использовал простой цикл и uniq для генерации моего files-to-delete
:
cd $working_copy
for rev in {2000..2437}; do
svn ls -R -r$rev | grep -f ~/tmp/big-file-names >> ~/tmp/file-paths;
done
cat ~/tmp/file-paths | sort | uniq > ~/tmp/files-to-delete
cd ~/tmp
# You should inspect "files-to-delete" to see if it looks reasonable!
cat dumpfile | svndumpfilter exclude `cat files-to-delete` > dumpfile.new