我正在尝试使用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和注释