您可以轻松地在特定变更集中获取整个工作区。您将映射一个新工作区,然后获取特定版本的源代码。
看起来您可能正在寻找“只是更改的文件”,基本上是更改集本身的内容。这实际上更难。它也可能是错误的追求。让我们先调查一下,好吗?
当您打开任何 TFVC 变更集的变更集详细信息时,您将看到与该变更集关联的文件列表。出于您的目的,任何edit 和add 操作都将是更改的文件。但是任何delete 或merge 或其他项目都会导致文件内容未更改或文件不再存在。
如果您只对列出更改(而不是文件的内容)感兴趣,那么您可以从命令行使用:
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
没有内置命令只会获取单个变更集的文件。如果您愿意,可以使用 the VersionControlServer object 和 powershell 相对轻松地完成它。或者通过调用上面提到的tf vc 命令并解析它们的输出。
要通过 API 执行此操作,您有两种选择:
休息
如果您正在与最近的 TFS 服务器/VSTS 通信,则可以使用 REST API to query TFVC changesets to get to their details。这是未来的首选方法。直接使用 WebClient (.NET) 或 Invoke-RestMethod (Powershell) 或任何其他 webclient。 guidance to get started with the REST API is here。
SOAP 客户端
如果您使用的是较旧的 TFS 服务器或需要同时支持新旧服务器,则可以使用Client Object Model to get access to the Changeset。
var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(registeredProjectCollection);
var versionControl = projectCollection.GetService<VersionControlServer>();