I\'ve moved from TFS to SVN (TortoiseSVN) with my current company. I really miss the \"Shelve\" feature of TFS. I\'ve read various articles on how to \"Shelve\" with SVN, but I\
You can use a DVCS but in a way this is a kludge. 'Shelving' in a DVCS stores your changes locally only. Its useful only if you want to checkpoint your work to rollback if you break it with further work, but preferably you'd want to save your work on the server.
One way to do this in SVN without an explicit shelve command is to switch your working copy to a different svn location and commit there instead of on your main repo. This is effectively like creating a temporary branch and working on that for the duration of your work. I don't think you'll even have to merge as SVN will do it for you when you switch, as your local modifications will be kept.
Unfortunately, you cannot switch to a non-existent location, so the first time you do this, you'll have to create the 'branch' to shelve to. I guess the whole thing could be automated.
If you understand how SVN branches work, emulating Shelve in SVN is a no-brainer:
When you are ready to get back to your shelved changes ("unshelve"), simply merge the shelf branch back to your local copy.
If you don't know command-line SVN nor Tortoise SVN well enough to do the above, here's a super detailed step-by-step instruction on how to do it in Tortoise SVN:
http://server/repository/project1/branches/shelf1
http://server/repository/project1/trunk
See this link for even more details and the command-line equivalent of the above:
Shelves in Subversion
SVN have upgraded the shelving https://subversion.apache.org/docs/release-notes/1.11.html#shelving
The kinds of change you can shelve are committable changes to files and properties, except the following kinds which are not yet supported:
- copies and moves
- creating and deleting directories
I don't believe that SVN has this feature built into the server product. I also don't believe anything like this emulated in any clients that I have used, including TortoiseSVN.
To get around this problem, I have resorted to using a DVCS such as Git or Mercurial, to allow me to branch/merge/shelve locally before pushing the content back to SVN. It's arguably a bit of a kludge, but it works really well.
TortoiseSVN 1.10
now supports shelving
: https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-shelving.html
Shelving in SVN is starting to roll out with version 1.10, see Release Notes