Я хочу создать push-файл с использованием TFS git клиентских библиотек , который содержит указанные рабочие элементы.
Код в основном:
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);
}
Push создается успешно, хотя в созданном коммите нет ссылок на рабочие элементы.
Я пытался
- Установка 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}"
к строке комментария к коммиту
- Или добавив ссылку на коммит к рассматриваемому рабочему элементу
Тем не менее, оба эти решения имеют незначительные недостатки (1 - изменение сообщения о коммите, 2 - возможное состояние гонки с CI и т. Д.), Которых я бы предпочел избежать.
В принципе, есть ли способ создать GitPush
со связанными рабочими элементами в одной операции, или я должен использовать вышеупомянутые обходные пути?