A blog about software development, primarily in Java and about web applications.

Thursday, June 9, 2011

Reverting commits with Subversion

This is actually fairly straightforward, but to do, but it came up again today at work so I thought I would document how to do it.

If you commit some changes that you want to revert immediately after the commit (before anyone else has done anything), you simply find the revision number you want to go back to and run:

$ svn merge --dry-run -rHEAD:86540 .

$ svn merge -rHEAD:86540 .

$ svn commit -m "revert to revision 86540" .


A few comments about this. You are changing your local working copy. In the above example, I'm assuming your local copy has been updated to the HEAD of your repository.

The first command is a dry-run and will show you the changes that will occur. I'm using HEAD as a shortcut, you could also specify a specific SVN revision number. Generally speaking, using HEAD is a bad idea, because HEAD is a moving target if you ware working with a team of people. So it's always best to use the specific revision number your local working copy is updated with.

The second command is the actual merge. Since the changes are being done to your local working copy, the commit is done to save your changes. You could alternately revert if something went awry.

No comments: