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;
}
我正在将 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;
}