使用PRid使用Cherry-pick api时出现的问题

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

我正在尝试在Power Shell中使用Git-Cherry API,以通过PRid自动挑选PR的过程。

$Body = @{
"generatedRefName" = "refs/test";
"ontoRefName" = $BranhcName;
"repository" = $RepoName;
"source" = $PRid #Prid is an integer value
}
#Cherr-Pick: https://docs.microsoft.com/en-us/rest/api/azure/devops/git/cherry%20picks/create?view=azure-devops-rest-6.0#gitasyncrefoperationsource
Invoke-WebRequest @req -Method POST -Uri "${baseuri}/git/repositories/${RepoName}/cherryPicks?${api}" -Body ($Body|ConvertTo-Json)

当我尝试以这种方式选择时,出现如下问题,

Invoke-WebRequest:{“ $ id”:“ 1”,“ innerException”:null,“ message”:“”必选指定。“,” typeName“:” Microsoft.TeamFoundation.Git.Server.GitAsyncRefOperationInvalidSourceException,微软团队undation.Git.Server“,” typeKey“:” GitAsyncRefOperationInvalidSourceException“,” errorCode“:0,” eventId“:3000}在线:99字符:1+调用WebRequest @req-方法POST -Uri“ $ {baseuri} / git / repositories ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~+ CategoryInfo:InvalidOperation:(System.Net.HttpWebRequest:HttpWebRequest)[Invoke-WebRequest],WebException+ FullyQualifiedErrorId:WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

这是什么错误? -根据我的理解,我只提供一个来源。

git github azure-devops azure-devops-rest-api cherry-pick
1个回答
0
投票

请求正文中的repositorysource参数是对象类型。但是我看到你给他们分配了字符串和整数。请参阅其余api here(单击下面的屏幕快照中突出显示的内容以查看对象类型的详细信息)。

enter image description here

您应将repositorysource定义为对象类型。参见以下示例:

$Body = @{
"generatedRefName" = "refs/heads/dev-on-master";
"ontoRefName" = "refs/heads/master";
"repository" = @{
                  "name"= $RepoName
                };
"source" = @{
               "pullRequestId"= $PRid
             } 
}

更新:

我在单个commitId下面进行了测试。工作正常。

$Body= @{
"generatedRefName" = "refs/heads/commit-on-master";
"ontoRefName" = "refs/heads/master";
"repository" = @{
                  "name"= $RepoName
                };
"source" = @{
               "commitList"= @(
               @{
               "commitId" = "5cedf148826ed783786e5b9b6932cc07ec9d745e"
               }
               )
             } 
}

以上请求正文需要转换为更深的json:-Body ($Body|ConvertTo-Json -Depth 100)

Invoke-WebRequest @req -Method POST -Uri "${baseuri}/git/repositories/${RepoName}/cherryPicks?${api}" -Body ($Body|ConvertTo-Json -Depth 100)

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