Displaying all branch hierarchies in TFS 2010


If you are utilizing the new TFS 2010 branch folder feature you can easily list the branch hierarchy in source control using the code below:

   1: using System;
   2: using Microsoft.TeamFoundation.Client;
   3: using Microsoft.TeamFoundation.VersionControl.Client;
   4:  
   5: namespace DisplayAllBranches
   6: {
   7:     class Program
   8:     {
   9:         static void Main(string[] args)
  10:         {
  11:             string serverName = @"http://[SERVERNAME]:8080/tfs";
  12:  
  13:             //1.Construct the server object
  14:             TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(serverName));
  15:             VersionControlServer vcs = tfs.GetService<VersionControlServer>();
  16:  
  17:             //2.Query all root branches
  18:             BranchObject[] bos = vcs.QueryRootBranchObjects(RecursionType.OneLevel);
  19:  
  20:             //3.Display all the root branches
  21:             Array.ForEach(bos, (bo) => DisplayAllBranches(bo, vcs));
  22:             Console.ReadKey();
  23:         }
  24:  
  25:         private static void DisplayAllBranches(BranchObject bo, VersionControlServer vcs)
  26:         {
  27:             //0.Prepare display indentation
  28:             for (int tabcounter = 0; tabcounter < recursionlevel; tabcounter++)
  29:                 Console.Write("\t");
  30:  
  31:             //1.Display the current branch
  32:             Console.WriteLine(string.Format("{0}", bo.Properties.RootItem.Item));
  33:  
  34:             //2.Query all child branches (one level deep)
  35:             BranchObject[] childBos = vcs.QueryBranchObjects(bo.Properties.RootItem, RecursionType.OneLevel);
  36:  
  37:             //3.Display all children recursively
  38:             recursionlevel++;
  39:             foreach (BranchObject child in childBos)
  40:             {
  41:                 if (child.Properties.RootItem.Item == bo.Properties.RootItem.Item)
  42:                     continue;
  43:  
  44:                 DisplayAllBranches(child, vcs);
  45:             }
  46:             recursionlevel--;
  47:         }
  48:  
  49:         private static int recursionlevel = 0;
  50:     }
  51: }

The result of this code will be something like this:

blog

for a hierarchy like this:

blog3

Comments (2)

  1. Mayur says:

    Could you please share the demo code?

    mayur.bondre@volvo.com

  2. TFS newbie says:

    I used the above and got this error TF14045: The identity d375f8f9-4d1f-494a-9e36-1aafd660f64c is not a recognized identity. Do you have any idea? I searched online but didn't find much. I am using TFS 2012 and VS 2012. Any help is appreciated.