VSTS Rest API return 来自变更集的特定项目 API

VSTS Rest API return specific item from Changeset API

我正在将 REST API 调用到 return 从特定变更集更改的所有文件,我真正想做的只是 return URL 属性 具有已知路径的特定项目。

所以我现在拥有的是变更集 API 调用

https://someplace.visualstudio.com/_apis/tfvc/changesets/19483/changes

这 return 类似于

{
  "count": 10,
  "value": [
    {
      "item": {
        "version": 19483,
        "size": 882,
        "hashValue": "ACWU0KSlO+jbsSJB5IwU4Q==",
        "path": "$/WaveDatabases/MasterData/Custom Scripts/2017-07-17-120218 28 user/MigrationScript.sql",
        "url": "https://someplace.visualstudio.com/_apis/tfvc/items/$/WaveDatabases/MasterData/Custom%20Scripts/2017-07-17-120218%2028%20user/MigrationScript.sql?versionType=Changeset&version=19483"
      },
      "changeType": "add, edit, encoding"
    },
    {
      "item": {
        "version": 19483,
        "size": 55,
        "hashValue": "Wur9rYW/rRYcvRWoVUZO7A==",
        "path": "$/WaveDatabases/MasterData/Custom Scripts/2017-07-17-120218 28 user/ReadonlyMetadata.json",
        "url": "https://someplace.visualstudio.com/_apis/tfvc/items/$/WaveDatabases/MasterData/Custom%20Scripts/2017-07-17-120218%2028%20user/ReadonlyMetadata.json?versionType=Changeset&version=19483"
      },
      "changeType": "add, edit, encoding"
    },
    {
      "item": {
        "version": 19483,
        "size": 379,
        "hashValue": "vHCQymsTXiZVuLMpeoShNg==",
        "path": "$/WaveDatabases/MasterData/Tables/Cust.test.sql",
        "url": "https://someplace.visualstudio.com/_apis/tfvc/items/$/WaveDatabases/MasterData/Tables/Cust.test.sql?versionType=Changeset&version=19483"
      },
      "changeType": "edit"
    }
  ]
}

这 return 是该变更集中所有文件的数组。我知道在这个变更集中,总会有一个名为 MigrationScript.sql 的文件位于某个未知文件夹下。我想要做的是找到一种方法,只 return 数组中包含 MigrationScript.sql 的第一个元素。另外,我只想 return url 属性 用于那 1 个元素。

这需要通过URL来完成,因为要使用它的工具我无法编写代码来解析结果。

您不能直接通过 Changeset REST API URL 来完成它。

您可以构建一个 web API 应用程序来使用 REST API 检索数据,然后 return 您想要的相应数据,之后您可以指定 web API URL 在该工具中。

简单代码(使用Microsoft Team Foundation Server Extended Client package

var u = new Uri("https://starain.visualstudio.com");
     VssCredentials c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.VssBasicCredential(string.Empty, "[personal access token]"));           
 var connection = new VssConnection(u, c);
            var tfvcClient = connection.GetClient<TfvcHttpClient>();
           var changes= tfvcClient.GetChangesetChangesAsync(id: 1130).Result;
            foreach(var currentChange in changes.Where(ci=>ci.Item.Path.EndsWith("UnitTest1.cs")))
            {
                string url = currentChange.Item.Url;
            }