TFS Aggregator Common Use Cases

Saturday, July 7, 2018

After receiving several questions about my previous post about Meeting the TFS Aggregator I decided to go deeper in this topic with a new post. The idea is to expose some common use cases and their implementation for them that are getting started. Before reading the post I highly recommend reading the official documentation to understand the syntax basics.   Let's implement the following use cases: Update PBI state to "Committed" when any child gets moved to "In Progress" Update PBI state to "Done" when all childrens get moved to "Done" or "Removed" Set a "calculated" field in a Task Create new work items and links Update...

Configure a CI build for each commit

Monday, February 5, 2018

By default in TFS/VSTS, the CI build configuration is used to trigger a build after each push. Additionally there is a option to "batch changes" (queue a build with all the changes since the last build instead of queue a build for each push). However there are some cases where you want to build each introduced commit separately. It's true that there is no way to do it automatically OOB, but in this post I want to share a way to achieve it with a little creativity (and code).   The Idea Create two different build definitions: - Listener Definition: Catch every push,...

TFS Powershell Module

Friday, February 2, 2018

A couple of months ago I started to write a Powershell Module to use the TFS Rest API from Powershell scripts. You can find and download it from GitHub. I personally use it for builds, releases and for integration/automation tools. The module helps me to create a much cleaner, shorter and easier scripts to interact with TFS/VSTS. Most of the functions works for TFS 2015.3 and above (including VSTS) but there are a couple of functions (lock git branch for example) that were introduced in later versions. The module is strongly documented and each function has a detailed explanation about...

Microsoft ALM User Group – What’s new in TFS 2018

Monday, January 29, 2018

Last Wednesday 09/01/18 I gave a talk about the new features in TFS 2018 in Microsoft Raanana as part of the ALM User Group. In this talk we reviewed the new features and improvements introduced in TFS 2018, upgrade considerations and general Q&A. Many thanks to all for coming and I hope you enjoyed it as much as I did. If you have any questions, you know how to contact me. See you next time, Leon Jalfon   PDF: WhatsNewInTFS2018.pdf  
no comments

Change TFS 2017 Theme Color (for test environments)

Wednesday, November 8, 2017

(First of all it’s important to make clear that this technique is not supported by Microsoft so PLEASE DON’T TRY THIS AT PRODUCTION)   It’s quite common in medium and big companies to have a TFS test environment to safely test plugins, test third party tools and show customizations before implementing them in production environment. However, because the test server is an exact copy of the production it may happen that we unintentionally perform the tests on the wrong server (in fact the only difference between them is the url so is easy to get wrong).  So, how can we avoid this...
no comments

Microsoft ALM User Group – Migrating To Git And Staying Alive

Wednesday, September 6, 2017

Last Wednesday 06/09/17 I gave a talk about Migrations from TFVC to Git in Microsoft Raanana as part of the ALM User Group. In this talk we discussed the advantages and disadvantages of Git in comparison to TFVC (TFS Version Control), we reviewed the implications and points to take into account when migrating to Git, we analyzed the keys to a successful migration, we saw how to plan it, how to perform it and finally how to get used to Git once we have migrated. All of this from a theoretical point of view as well with a practical...

Avoid Excessive Database Growth for Git-TFS Users

Monday, June 5, 2017

Let’s see some tips to avoid the excessive growth of the database if you are using Git in TFS...   Keep in mind that in Git-TFS there is not “git gc” implemented in the server side This means that once you push a change to the database it will remain in the database forever (yes, forever). The only way to remove it is to delete the whole repository Nevertheless this fact allows us to recover at any moment any thing that we have deleted (see how here)   Avoid to push the same...
no comments

Recovering Deleted Branches/Commits In Git-TFS

Monday, May 29, 2017

In Git TFS there is not “git gc” implemented in the server side. At first sight this can be a big problem because once you push a change to the database it will remain in the database forever (yes, forever). The only way to remove it is to delete the whole repository. Nevertheless this fact allows us to recover at any moment any thing that we have deleted. Let’s see how achieve this…   1) Get the Internal Repository ID: SELECT Name, InternalRepositoryId FROM .. ORDER BY InternalRepositoryId   2) Search the deleted branch in the reflog using the following query: SELECT DISTINCT...
no comments

Meeting the TFS Aggregator

Thursday, February 23, 2017

The TFS Aggregator is undoubtedly one of the most known and most useful tools for TFS. This comes to fill all the needs that can’t be covered using the traditional work item rules. Basically allows you to execute your own rules after each save.   Installation and Deployment The TFS Aggregator is an open source project stored in https://github.com/tfsaggregator/tfsaggregator. You can download the code and deploy it by yourself or simply use the installer provided by the project. The installer will detect your TFS version and install for you the console app and the plugin.   How the Plugin Works? A TFS Plugin is a...
no comments

Change TFS 2015 Theme Color (for test environments)

Tuesday, January 24, 2017

(First of all it’s important to make clear that this technique is not supported by Microsoft so PLEASE DON’T TRY THIS AT PRODUCTION) It’s quite common in medium and big companies to have a TFS test environment to safely test plugins, test third party tools and show customizations before implementing them in production environment. However, because the test server is an exact copy of the production it may happen that we unintentionally perform the tests on the wrong server (in fact the only difference between them is the url so is easy to get wrong).  So, how can we avoid this...