我想使用包含指定工作项的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);
}
尽管创建的提交上没有工作项链接,但推送创建成功。
我尝试过
GitCommitRef.WorkItems
ResourceRef
中返回的工作项URL稍有不同。但无济于事。
我实际上可以通过
达到预期的最终结果$"#{workitemId}"
附加到提交注释字符串尽管如此,这两种解决方案都有一些我想避免的小缺点(1-更改提交消息,2-可能与CI发生竞争等)。
基本上,有没有一种方法可以在单个操作中创建带有关联工作项的GitPush
,还是我必须使用上述解决方法?
答案 0 :(得分:1)
不,没有任何方法可以实现这一目标。即使从TFS Web UI创建提交/推送,TFS仍会先创建提交/推送,然后更新工作项以链接到推送。