58
votes

We just moved to use TFS 2012 which seems to be a huge upgrade for 2008 in usability with VS2012.

However, there is a very annoying feature with "My Work" feature if you connect your work with a certain task. After you have connected the task with your work item, any checkin to any branch will mark the task to "done" status. How can I disable this? I'd like to have the development branch so that I can make small commits during development but with this feature I cannot connect the task with my current work if I do so. The only way to do this (which I know) is to select the task for my current work just before I merge all small commits from my personal branch to master. Yes this is doable but it isn't as nice workflow as it may be.

With taskboard feature in scrum template moving tasks to done after work is done is anyway trivial and common part of workflow. Automatic done movement is pretty annoying automation which shouldn't be there.

So my questions are: How to disable this? Is this feature part of template or some much more deeper integration with TFS work item management?

We are using Scrum 2.0 template from Microsoft.

3

3 Answers

77
votes

When you are in the Pending Changes panel ready to check in your fix and you associate you work item with the changeset you should change "Resolve" to "Associate" (or what ever it is in Scrum).

Pending Changes


To make this the Default is more complicated.

You will need to edit the Work Item Template definition for the types of work items you are using (Bug, Task, etc.).

One option is to remove the "Resolve" option altogether, you can do this as follows:

Open the XML for your Work Item Type (or the GUI in the Power Toys if you prefer): Find and remove the:

  • <ACTION> <ACTION value="Microsoft.VSTS.Actions.Checkin" /> </ACTION>

section from your template - it will be in the <TRANSITIONS> against a particular transition between 2 states.

Doing this means TFS will never transition your work item as part of your checkin, you will have to do it every time.

The other option is to add a new work item "State" (e.g. "Under Development") that doesn't have an ACTION of Checkin. You can then transition you work items to this state whist working on them and then back to "Assigned" (or whatever) before checking them in in and "Resolving" them.

The Professional Team Foundation Server 2010 book from Wrox will help with WIT editing.

There are probably more ways to do this, it all depends on the team and environment you work in :).


There is also another way to do this that only affects your client machine:

To make “Associate” the default action (instead of “Resolve”), set the registry key

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\TeamFoundation\SourceControl\Behavior\ResolveAsDefaultCheckinAction to False.

N.B. Replace 12.0 (for VS2013) with 14.0 for VS2015, 11.0 for VS 2012 or 10.0 for VS 2010.

35
votes

Now you can upgrade to VS2015 (if already didn't do so) and uncheck the new checkbox Tools > Options > Source Control > Visual Studio Team Foundation > "Resolve associated work items on check-in". After that, "Associate" becomes the default option and you won't need to change it manually on commit

1
votes

In Visual Studio 2015, this can be done by unchecking 'Resolve associated work items on check-in' in the Options menu.

Tools > Options > Source Control > Visual Studio Team Foundation Server

Visual Studio Screenshot

edits: typos