Search code examples
svnrevisionrevertsvn-trunk

SVN Revert Trunk, remove a revision as if it never existed?


Is it possible in the svn server to remove a revision as if it never existed?

So we have the following revisions:

1004 // Commit of some bogus code that broke the build and was just wrong
1003 // Change 1.2
1002 // Change 1.1
1001
1000 *** Initial checkin

Can we we remove the 1004 in svn and revert back to 1003 as if 1004 never existed?

Forgive my ignorance, I'm still learning how to use SVN.


Solution

  • VCS systems are designed specifically to make this as complicated as possible. You usually do not want to do this.

    That being said, from the official documentation:

    There are special cases where you might want to destroy all evidence of a file or commit. (Perhaps somebody accidentally committed a confidential document.) This isn't so easy, because Subversion is deliberately designed to never lose information. Revisions are immutable trees which build upon one another. Removing a revision from history would cause a domino effect, creating chaos in all subsequent revisions and possibly invalidating all working copies.

    The project has plans, however, to someday implement an svnadmin obliterate command which would accomplish the task of permanently deleting information. (See issue 516.)

    In the meantime, your only recourse is to svnadmin dump your repository, then pipe the dumpfile through svndumpfilter (excluding the bad path) into an svnadmin load command. See chapter 5 of the Subversion book for details about this.

    http://subversion.apache.org/faq.html#removal