Work Item Query Policy to check workitems match on merge

248 Views Asked by At

With our TFS 2015 source control we require developers to check-in changes against work items.

However, we've had a couple of instances where a developer has checked in against one work item within our development branch, but then when merging to our QA branch they've checked in the merged changes to a different work item. An example of this is where a bug has been created underneath a PBI, the changes in dev have been checked in against a task under the bug, but then merged to QA against the PBI itself. This causes us issues with traceability.

I've seen that it's possible to add a check-in policy of "Work Item Query Policy". I'm just wondering if there is a way to write a query that will determine if the work item of a check-in after a merge matches the work item of the source changesets? I'm not necessarily after the exact query (though it would be lovely if someone could provide one :) ), really I'm just wondering whether it's possible or not to have a query to do this - i.e. is the information available to queries in TFS?

1

There are 1 best solutions below

2
On

You can't do this with the existing policies, you'd need to build a custom policy.

So, technically this is possible. You can access the VersionControlServer object through the PendingChanges object:

this.PendingCheckin.PendingChanges.Workspace.VersionControlServer

You can use that to query the history of the branch in question and grab the work items associated to the check-ins in that branch.

You can check the associated workitems to the current workitem:

this.PendingCheckin.WorkItems

You could probably even provide the option to auto-correct by adding the correct work items to the checkin upon validation.

One of my policies provides an example on using the VersionControlServer from a policy.