How to subscribe to checkins not under a particular path

Nick Kirchem, who works on the TFS web access team, recently answered a question on how email subscriptions on checkin alerts.  The question was, how do I subscribe to checkin alerts not under a particular folder?

Here’s how to do it.

bissubscribe /eventType CheckinEvent /address /deliveryType EmailHtml /server http://myserver:8080/tfs/DefaultCollection "’Artifacts/Artifact[@ArtifactType=\"VersionedItem\"][not(starts-with(translate(@ServerItem, \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\", \"abcdefghijklmnopqrstuvwxyz\"), \"$/devdiv/feature/build/qa\"))]’ <> null"

Let’s break it down.

  • /eventType – Here we want CheckinEvent.  There are others.  Rather than list them, I’d recommend the Alerts Explorer that is part of the Team Foundation Server Power Tools.  You can use it to discover more, as each different type has different things you can filter on.
  • /address – The email address to use.
  • /deliveryType – We want HTML-formatted email.
  • /server – Here I’ve used the URL to the default collection on a TFS 2010 server.  You’ll need to edit it to match the server and collection you need to use.
  • expression – The expression is somewhat hard to read.
    • The path we want to filter out is listed last, which $/devdiv/feature/build/qa in this case.  You must use lowercase for your path.
    • The translate XPath function is used to normalize the casing of the server path to be all lower case.  This is important because XPath is case sensitive.
    • The starts-with XPath function tests to see if the path is one we are interested in (in this case to filter out).
    • The not XPath function inverts the test to see if it is not under the path we want to filter out.
    • The quotation marks are escaped so that they can be inside quotation marks on the Windows command prompt.

I recommend using the Alerts Explorer power tool rather than doing this by hand.  However, in this case, the Alerts Explorer does not support this.

Nick has also written a feature for TFS 11 to allow you to edit alerts inside the product through the web interface.  An early version of it is in the TFS 11 CTP release that came out in concert with the Windows’ //build conference.  Here’s a screen shot of it.  Note that you can only see it in the UI if you enable email in the TFS Administration Console.  Since then he’s made it easier to use and made it so that you can administer other user alerts, if you are an administrator.


Related post: Adding a path filter to a CheckinEvent subscription using bissubscribe

Comments (3)

  1. Simon B says:

    We are using the tfseventsubscription which we have updated to work against TFS 2010.

    It lets you view all alerts not just the ones you have created.

  2. Ted says:

    Will the VS 2012/TFS suite have a file compare tool that correctly compares files and does not flag white space as a file difference (like VS2010/TFS does)?   The diff algorithm has been around since the 1980s with System V and works much better than VS/TFS compare.   Please fix this in VS/TFS and not defer to a third party tool that provides a lower level of support and longevity than Microsoft does for TFS/VS.

  3. buckh says:

    Ted, the next version of TFS has a completely new diff/merge experience built in.  See…/merge-enhancements-in-tfs-11.aspx for details.