1

在这篇文章之后,我试图从变更集中提取分支历史记录。但是,我注意到 Changeset 有一个名为 IsBranch 的属性,这不是本文描述的检查 changeset 是否为分支的方式。

以下检查有什么区别:

VersionControlServer vcs = tpc.GetService<VersionControlServer>();
Changeset cs = vcs.GetChangeset(changeset.ChangesetId);

Console.WriteLine("Changeset: {0}", cs.ChangesetId);

// Get History
foreach (var change in cs.Changes)
{
     if (change.Item.IsBranch)
     {
     }

VersionControlServer vcs = tpc.GetService<VersionControlServer>();
Changeset cs = vcs.GetChangeset(changeset.ChangesetId);

Console.WriteLine("Changeset: {0}", cs.ChangesetId);

// Get History
foreach (var change in cs.Changes)
{
     if ((change.ChangeType & ChangeType.Branch) == ChangeType.Branch)                    
     {
     }
4

2 回答 2

3

Item 类的 IsBranch 属性是 2010 年新增的,因此第二种方式是您在以前版本的 TFS 中所做的方式。

2010级成员

2008级成员

于 2011-02-18T15:56:14.153 回答
2

要让 TFS 设置属性的值,您需要通过在调用时传递标志item.IsBranch来告诉VersionControlServer您想要项目的分支信息。GetItemsOptions.IncludeBranchInfoGetItem()

例子:

using (var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(uri))
{
    tfs.EnsureAuthenticated();
    var vcs = tfs.GetService<VersionControlServer>();
    var item = vcs.GetItem("$/Proj/Main/", VersionSpec.Latest, DeletedState.Any, GetItemsOptions.IncludeBranchInfo);
}
于 2012-04-23T16:39:13.890 回答