2010-08-17 51 views
4

我正在嘗試獲取兩個版本之間的所有工作項目。我只能看到完成這項工作的一種方法 - 獲取開始和結束更改集並獲取每個工作項。 我遇到的問題是從內部版本號中獲取變更集。 我已經嘗試使用獲取相關的變更集,但這不起作用,因爲它只獲取該構建的變更集,而不是之前的變更集。獲取特定版本之間的變更集

任何人都可以幫忙嗎?

+0

它看起來像一個答案來就這個問題詢問提供:http://stackoverflow.com/questions/3821734/show-all-changesets -between-兩個標籤。 – 2012-01-24 01:28:48

+1

您使用的是TFS嗎? – JBone 2012-02-18 15:50:34

回答

3

該代碼會得到兩個標籤之間的所有的變更:

Console.WriteLine("Enter the first build label:"); 
var firstVersion = Console.ReadLine(); 
Console.WriteLine("Enter second build label:"); 
var secondVersion = Console.ReadLine(); 

var server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("TFS SERVER INSTANCE")); 
var hyperlinker = server.GetService<TswaClientHyperlinkService>(); 

var versionService = server.GetService<VersionControlServer>(); 
var changesets = versionService.QueryHistory(@"$/EntDev", VersionSpec.Latest, 0, RecursionType.Full, null, 
         VersionSpec.ParseSingleSpec("L" + firstVersion, null), 
         VersionSpec.ParseSingleSpec("L" + secondVersion, null), 
         Int32.MaxValue, 
         false, 
         false); 
var workItems = new List<WorkItem>(); 
foreach (Changeset changeset in changesets) 
{ 
    var link = hyperlinker.GetChangesetDetailsUrl(changeset.ChangesetId); 
    Console.WriteLine("#" + changeset.ChangesetId.ToString() + " - " + changeset.Comment + " - " + link.ToString()); 

    workItems.AddRange(changeset.WorkItems); 
} 
foreach (var item in workItems) 
{ 
    var link = hyperlinker.GetWorkItemEditorUrl(item.Id); 
    Console.WriteLine("WI#" + item.Id + " - " + item.Title + " - " + link.ToString()); 
} 
Console.ReadLine();