Remove files from the revision history of SVN repository

When we work on a private repository which is used for our personal testing or development, we may upload some private data. The unwanted file uploads in multiple commits will drastically increase the repository size. Once the development work is over and when we decide to make the repository public, we will have to consider removing the private data committed to repository in the development phase.

We can easily remove it from the application at our development machine and give a commit to the repository. But the data still remains in the previous commits. Here we have to find a solution for removing the files from revision history. If we get a fine method to do this, we can also help our customers with their repository quota management, also other Application Maintenance and Support.

I have done some testing with the ‘svndumpfilter’ option and could succeed to find a solution for removing files from the revision history of SVN repository. If anyone face an issue with svn repository over quota or interested in removing unwanted files from the history, you can follow the steps given below:

1. Take a dump of your repository.

     svnadmin dump /var/svn/REPOSITORY > dumpfile

2. Filter the dump file.

     svndumpfilter exclude /path/of/file/to/remove < dumpfile > newdumpfile

This will remove the file “/path/of/file/to/remove”. You can remove multiple files at a time like this:

     svndumpfilter exclude file1 file2 < dumpfile > newdumpfile

3. Create a new repository.

     svnadmin create /var/svn/REPOSITORY_NEW

4. Import the dumpfile in the new repository.

     svnadmin load /var/svn/REPOSITORY_NEW < newdumpfile

5. Replace the old repository with the new one.

    mv /var/svn/REPOSITORY /var/svn/REPOSITORY_OLD

    mv /var/svn/REPOSITORY_NEW /var/svn/REPOSITORY

To check this, browse your history and see one of the files you removed, you will get an error that the file could not be found. You might need to make a fresh checkout and a commit to see whether everything works as expected. If everything works fine, we can remove the dump files and old repository backup.

Source: Railscarma


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s