The purpose of a shelveset

tfs

I've been using TFS for a while now but as a lone developer I haven't really used its features to its full extent. I've now been tasked with working with a couple of colleagues overseas and we will be using a shared version of TFS. One of their processes is shelving, however im not sure on the how to use this. I decided to have a play, but i'm unsure what to do after creating a shelve set. My process was as follows:-

I opened an existing project from TFS that was fully checked in and made a simple change to one of the files. I then created a shelve set. I then closed the project and reopened it from source control. I noticed the change i had made was not applied which was correct however the file was still checked out to me. Its at this point my confusion starts. If I create a shelve set am I supposed to do an undo pending changes so that the original files are checked back into TFS so my colleagues can use them or create a build from them.

Im a bit confused on the process.

Best Answer

In my experience shelvesets are typically used for 3 purposes:

  1. Switching Tasks before I'm ready to Check-In
  2. Getting help from colleagues on code that isn't working
  3. Code Reviews

When you create a shelveset you have a checkbox to choose whether you want to undo your pending changes at the same time or not.

For #1, I would want to check the box to undo my changes, as the entire purpose of shelving is to get a clean local workspace to start on the new task.

For #2, I would probably not undo my changes, as after the colleague has looked at my code and helped me I will want to continue working on those changes.

For #3 this is only applicable if the code review workflow is pre-checkin, in that case you would typically undo your pending changes so you can start working on the next item while waiting for the review and not comingling the changes.