获取问题的所有更改#

时间:2016-10-07 00:53:25

标签: visual-studio tfs

如果我去工作项目 - >所有工作项 - >编辑查询,并查找特定问题,我可以打开该问题并查看所有链接,这是该问题的所有更改集。如果我查看每个变更集,我可以找出哪些文件已更改。

但如果问题有很多变更集,这可能会令人困惑。我真正想要的是在问题下已经更改的所有文件的综合列表,能够在该问题下运行最新版本与该问题之前该文件的版本之间的差异。

这可能吗?

1 个答案:

答案 0 :(得分:1)

这不能通过工作项查询或tf命令简单地实现。您可能必须使用TFS API。

详细步骤应该是为TFS服务器获取工作项,然后可以修改并与此工作项关联的所有文件/项从链接集合中获取所有变更集(工作项中的链接) ,列出这些changsets中的所有文件。

/// <summary>
 /// Get all of the Files/Items that were modified and associated with a Work Item
 /// </summary>
 /// <param name="teamProject">Name of the Team Project</param>
 /// <param name="workItemID">The work item ID</param>
 /// <returns>List of changes</returns>
 public List<FileItem> GetAllFilesModifiedForWorkItem(string teamProject, int workItemID)
 {
  WorkItemCollection workItems = GetWorkItems(teamProject, workItemID);

  if (workItems.Count == 0)
  {
   Console.WriteLine("No Items found for Work Item ID: " + workItemID);

   return null;
  }

  WorkItem item = workItems[0];

  Console.WriteLine("Work Item {0} has {1} Links", workItemID, item.Links.Count);

  if(item.Links.Count == 0)
   return null;

  List<Changeset> lstChangesets = GetChangesets(item.Links);

  Console.WriteLine("Work Item {0} has {1} Changesets", workItemID, lstChangesets.Count);

  if (lstChangesets.Count == 0)
   return null;

  List<FileItem> lstItems = GetItemsForChangeset(lstChangesets);

  Console.WriteLine("Work Item {0} has {1} Items (changes)", workItemID, lstItems.Count);

  if (lstItems.Count == 0)
   return null;

  return lstItems;
 }

整个代码和更多详细信息请参阅此博客:How to get all files modified for a work item in TFS

此外,您还可以尝试使用TFS Sidekicks,它还会返回该工作项的所有更改。详细方法请参考jagberg在这个问题中的答案:get all changed files for a TFS workitem