Alex Rivera | Logout

Delete file with all history from svn repository

Asked 2010-01-12T16:29:17.853
38

Is there any way to delete file from svn repository including all its history? This issue emerges when I want to get rid of large binary file residing in repo.

I know only one approach that might help in this situation:

  1. Dump all repo with the help of svnadmin utility.
  2. Filter dumped file with grep. Grep should use filename and write in to the other dump-file
  3. Import last dump-file with svnadmin

But this is too complicated and unreliable. Maybe there is another solution?

Edit
Report

1 Answer

33

This has recently become much more straightforward with the command svndumpfilter. Details are available in the subversion documentation here. Basically, to avoid conflicts (explained here), it takes a repo dump and redoes each commit, either including or excluding a given file prefix. Basic syntax:

svndumpfilter exclude yourfileprefix < yourdump > yournewdump

Exclude is probably what the question asker is looking for, but you can also use include to, say, extract a subtree of the repo so as to spin it off as its own repository.

The latest revision of subversion in subversion (very meta) can also take glob patterns. I recently had to remove all pdfs from a repo and it was very easily done like so:

svndumpfilter exclude --pattern '*.pdf' < dump > dump_nopdfs

Further usage information can be found by calling svndumpfilter help and svndumpfilter help exclude.

answered 2011-05-17T02:55:11.063

Your Answer