有没有办法在单个操作中通过TFS客户端库/ API创建带有链接工作项的git push / commit?

问题描述 投票:1回答:1

我想使用包含指定工作项的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);
}

虽然在创建的提交上没有工作项链接,但是已成功创建推送。

我试过了

  1. 将URL设置为https://docs.microsoft.com/en-us/rest/api/vsts/wit/work%20items/get%20work%20item?view=vsts-rest-4.1#workitem中的URL。
  2. 将其设置为在GitCommitRef.WorkItems ResourceRef中为具有相关工作项的提交实际返回的略有不同的工作项URL。

但无济于事。

我实际上可以达到预期的最终结果

  1. $"#{workitemId}"附加到提交注释字符串
  2. 或者通过向相关工作项添加提交链接

尽管如此,这两种解决方案都有一些小缺点(1 - 改变提交消息,2 - 可能的竞争条件与CI等),我宁愿避免。

基本上,有没有办法在一次操作中创建带有相关工作项的GitPush,还是我必须使用上述解决方法?

c# git tfs git-commit tfs-sdk
1个回答
1
投票

不,没有办法实现这一目标。即使您从TFS Web UI创建提交/推送,TFS仍然首先创建提交/推送,然后更新工作项以链接到推送。

© www.soinside.com 2019 - 2024. All rights reserved.