首页 > 解决方案 > 获取特定变更集的唯一文件列表

问题描述

有没有办法获取特定变更集的唯一文件列表?使用任何前端技术,如 jquery。例如 - 我想检索所有文件列表,其中更改集没有 2223、2224、2250 的路径,例如 -

tfs\prod\072418\yellow.aspx
tfs\prod\072418\bg.jpeg
tfs\prod\072418\sent.xml
tfs\prod\072418\home.cs

标签: visual-studio-2015tfs-2015tfvc

解决方案


您可以轻松地在特定变更集中获得整个工作区。您将映射一个新工作区,然后获取特定版本的源。

看起来您可能正在寻找“只是更改的文件”,基本上是更改集本身的内容。这实际上更难。它也可能是错误的追求。让我们先调查一下,好吗?

当您打开任何 TFVC 变更集的变更集详细信息时,您将看到与该变更集关联的文件列表。出于您的目的,任何editadd操作都将是更改的文件。但是任何deletemerge其他项目将导致文件内容未更改或文件不再存在。

如果您只对列出更改(而不是文件的内容)感兴趣,那么您可以从命令行使用:

C:\Users\JesseHouwing\Source\Workspaces\>tf changeset 29 /noprompt
Changeset: 29
User: Jesse Houwing
Date: Thursday, 14 September 2017 20:02:54

Comment:

Items:
  delete, source rename $/vsts-tfvc-tasks-test/changes.122204;X2
  rename                $/vsts-tfvc-tasks-test/changes.122204,old

它将列出所有项目以及对它们执行的操作类型。您可以使用以下方法保存单个文件tf vc view

C:\Users\JesseHouwing\Source\Workspaces\>tf vc view /output:changes.122204,old changes.122204,old /version:c29

没有内置命令只会获取单个变更集的文件。如果您愿意,可以使用 object 和 powershell相对VersionControlServer轻松地完成它。或者通过调用上述tf vc命令并解析它们的输出。


要通过 API 执行此操作,您有两种选择:

休息

如果您正在与最近的 TFS 服务器/VSTS 通话,则可以使用REST API 查询 TFVC 变更集以获取其详细信息。这是未来的首选方法。直接使用 WebClient (.NET) 或 Invoke-RestMethod (Powershell) 或任何其他 Web 客户端。开始使用 REST API的指南在此处。

SOAP 客户端

如果您正在使用旧的 TFS 服务器或需要同时支持新旧服务器,那么您可以使用客户端对象模型来访问 Changeset

var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(registeredProjectCollection);
var versionControl = projectCollection.GetService<VersionControlServer>();

推荐阅读