Shelve in TortoiseSVN?

Viewed 40463

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've read nothing that gives a very simple experience to "shelve" work.

Ideally, I'd like extra items added to the TortoiseSVN context menu - "Shelve" & "Unshelve". "Shelve" would remove the current shelve-set, and upload the working directory under a suitable path defined by user options. "Unshelve" would merge the set with the working copy.

Does something like this exist? Can anyone suggest any ways to "hack" this feature in the GUI?

Note: The following link doesn't really achieve the user experience I was looking for:

Shelving Subversion

One of the greatest things about TFS Shelve is how easy it is to use...

8 Answers

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.

Support Feature

SVN supports for shelves is experimental means, it doesn't promise backward compatibility for future releases, either its disabled by default.

it has been started with version 1.10

but the shelves create with 1.10 & 1.11 is not supported by newer version, as it didn't promises so.

so there are different underlying and you have to pay attention that this is an experimental feature and is going to be improved over the time.

the 1.10 shelve commands start with svn shelve but the 1.11 & 1.12 starts with svn x-shelve.

Commands

the commands for new shelve are:

    svn x-shelf-diff
    svn x-shelf-drop
    svn x-shelf-list, x-shelves
    svn x-shelf-list-by-paths
    svn x-shelf-log
    svn x-shelf-save
    svn x-shelve
    svn x-unshelve

Activating

for activating using this feature you have to run the command by setting the enviourment variable:

#Shelving-v3, as introduced in 1.12
SVN_EXPERIMENTAL_COMMANDS=shelf3
#Shelving-v2, as introduced in 1.11
SVN_EXPERIMENTAL_COMMANDS=shelf2

further information can be found here:

https://subversion.apache.org/docs/release-notes/1.14.html#shelving

Related