Revision as of 17:27, 23 May 2012 by Tbrowder (talk | contribs) (finish first cut at the example)

Undoing an svn commit

Sometimes one may inadvertently commit a change that was not intended. For example:

$ svn ci test_vls.c
... revision: 9999

We want to "uncommit" the change. But if we don't want to lose the changes we made, we either need to copy the changed file(s) to an unversioned directory before we do the merge or save the differences before we commit the merged changes.

First get the URL of the trunk (shortened example):

$ svn info
Path: .
URL: https://brlcad/svnroot/trunk
Repository Root: https://brlcad/svnroot
Repository UUID: 2f96ce8b-6d43-0410-b8df-bffccc660ffb
Revision: 9999
Node Kind: directory
Schedule: normal
Last Changed Author: tom
Last Changed Rev: 9999
Last Changed Date: 2012-05-23 15:10:33 -0500 (Wed, 23 May 2012)

Save the changed file(s) if desired.

Do the merge:

$ svn svn merge -r9999:9998 https://brlcad/svnroot/trunk
U  test_vls.c

Check that the trunk has changed to the state before the bad commit:

$ svn diff

Save the diffs if desired.

Commit the change (caution: this will undo local changes that were originally committed!):

$ svn commit -m "Undoing change committed in r9999."
Sending        test_vls.c
Transmitting file data .
Committed revision 10000.