Partial Commits with Subversion

I have done this using TortoiseSVN.

The built in merge utility allows you to show a diff between the repository version and your working copy.

Use the create backup function of the diff utility

  1. Go to commit your file as if you were going to commit all your changes.
  2. In the commit window, double click the file to show a diff.
  3. In the diff settings, click the option to backup original file.
  4. Right-click the changes you don't want, and use select use other text block.
  5. Save the diff exactly once. The backup will be overwritten each time you save. This is why you only want to save once.
  6. Commit the change.
  7. Overwrite the original with the created .bak file (which will have all your original changes).
  8. Commit your file.

You should now have all your changes committed, using two separate commits.


With git-svn you can make a local GIT repository of the remote SVN repository, work with it using the full GIT feature set (including partial commits) and then push it all back to the SVN repository.

git-svn (1)


Tortoise SVN 1.8 now supports this with it's "Restore after commit" feature. This allow you to make edits to a file, with all of the edits being undone after the commit

Per the documentation:

To commit only the parts of the file that relate to one specific issue:

  1. in the commit dialog, right-click on file, choose "restore after commit"
  2. edit the file in e.g. TortoiseMerge: undo the changes that you don't want to commit yet
  3. save the file
  4. commit the file

Tags:

Svn

Git