TFS API 待处理项目、排除列表、包含列表

Posted

技术标签:

【中文标题】TFS API 待处理项目、排除列表、包含列表【英文标题】:TFS API Pending Items, Exclude list, Include List 【发布时间】:2020-04-01 03:29:00 【问题描述】:

背景

我正在制作一个 TFS 合并工具来满足开发和分支需求。

有了这个工具,我就有了一个使用 Microsoft.Teamfoundation.ExtendedClient 包的业务对象层。

我有什么

我目前有一个功能可以检查我的待处理项目

“更改”对象包含我的所有更改。包含和排除

 Workspace workspace = _vcs.GetWorkspace(_workspaceName, _workspaceOwner);
 WorkItemCheckinInfo checkInInfo = new WorkItemCheckinInfo(pbi, WorkItemCheckinAction.Associate);
 PendingChange[] changes = workspace.GetPendingChanges();
 ChangesetID = workspace.CheckIn(changes, checkInComment, null, new WorkItemCheckinInfo[]  
 checkInInfo , null);

我需要什么 我只需要获取他的“包含”待定更改列表。

有些人建议使用,但这失败了,因为 ITS 只有零行。

//get all candidate changes and promote them to included changes
PendingChange[] candidateChanges = null;
string serverPath = workspace.GetServerItemForLocalItem(_workspaceName);
List<ItemSpec> its = new List<ItemSpec>();
its.Add(new ItemSpec(serverPath, RecursionType.Full));
workspace.GetPendingChangesWithCandidates(its.ToArray(), true, out candidateChanges);

    foreach (var change in candidateChanges)
    
      if (change.IsAdd)
      
        //ws.PendAdd(change.LocalItem);
      
      else if (change.IsDelete)
      
        //ws.PendDelete(change.LocalItem);
      
    

我也试过这个,但是 SavedCheckin = null 并且我得到了一个异常。

    SavedCheckin savedCheckin = workspace.LastSavedCheckin;
    //  Create a list of pending changes.
    var pendingAdds = new List<PendingChange>(workspace.GetPendingChanges());
    List<PendingChange> excludedChanges = new List<PendingChange>();
    for (int i = 0; i <= changes.Length - 1; i++)
    
      if (savedCheckin.IsExcluded(changes[i].ServerItem))
      
        excludedChanges.Add(changes[i]);
      
      Console.WriteLine(changes[i].LocalItem.ToString() + " Change  " + changes[i].ChangeType)
    

所以我要么需要遍历“更改”列表并删除“排除”项目

或者这里肯定缺少一些东西。

提前致谢

艾伦

【问题讨论】:

这能回答你的问题吗? how do I determine what items are included pending check-ins programatically? 【参考方案1】:

在 Visual Studio/Team Explorer 中没有仅获取 Included changesIncluded/Excluded changes 部分的 TFS API。 Visual Studio 会检测您在系统外所做的更改。

你需要的是Visual Studio Extension API --IPendingChangesExt Interface,你可以参考下面的文章或者在Visual Studio Extension端开一个案例。

https://www.mztools.com/articles/2015/MZ2015007.aspx

【讨论】:

以上是关于TFS API 待处理项目、排除列表、包含列表的主要内容,如果未能解决你的问题,请参考以下文章

排除 youtube api 播放列表中显示“视频不可用”的所有视频

Paypal API 获取包含项目的发票列表

是否有用于TFS警报查询的括号值的列表或说明?

Lambda排除包含字符串列表的值[重复]

TFS 2010 从门控签入中排除文件类型

尝试从 Excel 2013 批量导入到 TFS 时,如何将我的平面列表转换为树列表?