How to programmatically get information about branches in TFS?

后端 未结 2 1173
别跟我提以往
别跟我提以往 2020-12-08 16:10

I need to programmatically find out information about branches in TFS. For instance the main thing i am interested is given root folder $/MyProject/Project1

2条回答
  •  情书的邮戳
    2020-12-08 16:41

    Ok, this was both easier and more difficult than I thought it would be. I was able to pull this together from a few different sources, but this seems to work. I will warn you, there's no error handling here, and if the itemSpec doesn't exist, it bombs with an exception.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.TeamFoundation.Client;
    using Microsoft.TeamFoundation.VersionControl.Client;
    
    static void Main(string[] args)
    {
        TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(
                                                new Uri("http://tfs:8080"));    
        string srcFolder = "$/ProjectName";    
        var versionControl = tfs.GetService();    
        ItemSpec[] specs = new ItemSpec[]{new ItemSpec(srcFolder, RecursionType.None)};
    
        System.Console.WriteLine(string.Format("Source folder {0} was branched to:",
                                               srcFolder));    
        BranchHistoryTreeItem[][] branchHistory =
            versionControl.GetBranchHistory(specs, VersionSpec.Latest);
    
        foreach (BranchHistoryTreeItem item in branchHistory[0][0].Children)
        {
            ShowChildren(item);
        } 
    
        System.Console.WriteLine();
        System.Console.WriteLine("Hit Enter to continue");
        System.Console.ReadLine();    
    }
    
    static void ShowChildren(BranchHistoryTreeItem parent)
    {
        foreach (BranchHistoryTreeItem item in parent.Children)
        {
            System.Console.WriteLine(
                string.Format("Branched to {0}", 
                              item.Relative.BranchToItem.ServerItem));
            if (item.Children.Count > 0)
            {
                foreach(BranchHistoryTreeItem child in item.Children)
                {
                    ShowChildren(child);
                }                       
            }
        }
    }
    

提交回复
热议问题