有没有办法在单个操作中通过 TFS 客户端 libraries/API 创建带有链接工作项的 git push/commit?
Is there a way to create git push/commit with linked workitems through TFS client libraries/API in a single operation?
我想使用包含指定工作项的 TFS git client libraries 创建推送。
代码基本上是:
public static async Task<GitPush> CreatePush(
this GitHttpClient git,
GitRepository repo,
GitRefUpdate branchUpdateRef,
GitChange change,
String comment,
IEnumerable<Int32> workitems = null)
{
workitems = (workitems ?? Enumerable.Empty<Int32>()).ToList();
var commit = new GitCommitRef
{
Comment = comment,
Changes = new[]
{
change
},
WorkItems = workitems
.Select(wi => new ResourceRef
{
Id = wi.ToString()
// Perhaps one should also set an URL of some kind
})
.ToList()
};
var push = new GitPush
{
Commits = new[]
{
commit
},
RefUpdates = new[]
{
branchUpdateRef
},
Repository = repo
};
return await git.CreatePushAsync(
push,
project: repo.ProjectReference.Id,
repositoryId: repo.Id);
}
推送已成功创建,但创建的提交上没有工作项 link。
我试过了
- 将 URL 设置为 https://docs.microsoft.com/en-us/rest/api/vsts/wit/work%20items/get%20work%20item?view=vsts-rest-4.1#workitem 中的那个。
- 将其设置为略有不同的工作项 URL,该工作项实际上在
GitCommitRef.WorkItems
ResourceRef
中针对具有相关工作项的提交返回。
但是没有用。
我其实可以通过
达到想要的最终结果
- 将
$"#{workitemId}"
附加到提交注释字符串
- 或者通过将提交 link 添加到有问题的工作项
不过,这两种解决方案都有我希望避免的小缺点(1 - 更改提交消息,2 - 可能与 CI 竞争条件等)。
基本上,有没有一种方法可以在单个操作中创建具有关联工作项的 GitPush
,或者我是否必须使用上述解决方法?
不,没有任何方法可以做到这一点。即使您从 TFS Web UI 创建 commit/push,TFS 仍会先创建 commit/push,然后将工作项更新为 link 以推送。
我想使用包含指定工作项的 TFS git client libraries 创建推送。
代码基本上是:
public static async Task<GitPush> CreatePush(
this GitHttpClient git,
GitRepository repo,
GitRefUpdate branchUpdateRef,
GitChange change,
String comment,
IEnumerable<Int32> workitems = null)
{
workitems = (workitems ?? Enumerable.Empty<Int32>()).ToList();
var commit = new GitCommitRef
{
Comment = comment,
Changes = new[]
{
change
},
WorkItems = workitems
.Select(wi => new ResourceRef
{
Id = wi.ToString()
// Perhaps one should also set an URL of some kind
})
.ToList()
};
var push = new GitPush
{
Commits = new[]
{
commit
},
RefUpdates = new[]
{
branchUpdateRef
},
Repository = repo
};
return await git.CreatePushAsync(
push,
project: repo.ProjectReference.Id,
repositoryId: repo.Id);
}
推送已成功创建,但创建的提交上没有工作项 link。
我试过了
- 将 URL 设置为 https://docs.microsoft.com/en-us/rest/api/vsts/wit/work%20items/get%20work%20item?view=vsts-rest-4.1#workitem 中的那个。
- 将其设置为略有不同的工作项 URL,该工作项实际上在
GitCommitRef.WorkItems
ResourceRef
中针对具有相关工作项的提交返回。
但是没有用。
我其实可以通过
达到想要的最终结果- 将
$"#{workitemId}"
附加到提交注释字符串 - 或者通过将提交 link 添加到有问题的工作项
不过,这两种解决方案都有我希望避免的小缺点(1 - 更改提交消息,2 - 可能与 CI 竞争条件等)。
基本上,有没有一种方法可以在单个操作中创建具有关联工作项的 GitPush
,或者我是否必须使用上述解决方法?
不,没有任何方法可以做到这一点。即使您从 TFS Web UI 创建 commit/push,TFS 仍会先创建 commit/push,然后将工作项更新为 link 以推送。