查询历史记录,了解特定信息的TFS中的一系列变更集

sce*_*ler 1 c# tfs

我正在尝试使用C#和TFS从TFS中的变更集的注释中获取发布日志.

我有这个代码:

        const string tfsURL = "http://dev.ger.test.com:8080/tfs";

        var tpc = new TfsTeamProjectCollection(new Uri(tfsURL));

        VersionControlServer vcs = (VersionControlServer)tpc.GetService(typeof(VersionControlServer));
        var tp = vcs.GetTeamProject(@"MyCollection");
        var path = tp.ServerItem;
        path += @"/Project/Subproject";

        var q = vcs.QueryHistory(path, VersionSpec.Latest, 0, RecursionType.Full, null, null, null, 1, true, true, false, false);

        foreach (var item in q)
        {
            Console.WriteLine(item);
            Logger(item.ToString(), false);
        }
Run Code Online (Sandbox Code Playgroud)

哪个有效,但它只返回最新的变更集和此变更集内的所有信息.

所以我的问题是:

如何在查询历史中指定一个变更集范围,如VersionSpec.1000到VersionSpec.Latest?

如何在foreach循环中操作项目以显示item.Comment等特定信息?

任何帮助是极大的赞赏!

编辑:我编辑了QueryHistory

var q = vcs.QueryHistory(path, VersionSpec.Latest, 0, RecursionType.Full, null, new ChangesetVersionSpec(23618), VersionSpec.Latest, 1, true, true, false, false);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这没什么改变.

小智 6

它应该是这样的:

var changes = vcs.QueryHistory(
    path, 
    VersionSpec.Latest, 
    0, 
    RecursionType.Full, 
    null, 
    VersionSpec.ParseSingleSpec("C100", null), // starting from changeset 100
    VersionSpec.ParseSingleSpec("C200", null), // ending with changeset 200
    int.MaxValue, 
    true, 
    false);

 foreach(Changeset change in changes)
 {
     Console.WriteLine("{0} {1}", change.ChangesetId, change.Comment);
 }
Run Code Online (Sandbox Code Playgroud)

它将为您提供100到200的变更集并列出其ID和注释