Я хочу импортировать репозиторий git из другой учетной записи Azure DevOps в свою новую учетную запись. Я использую REST API в Power-Shell для их импорта. Скрипт, который я использую для этого, находится здесь:
$TargetTokenName = 'TokenName'
$TargetPAT = 'PAT'
$base64AuthInfoTarget = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "$TargetTokenName","$TargetPAT")))
$BaseTargetUri = 'https://dev.azure.com/myOrg/myProj/_apis/'
$TargetRepoId = 'TargetRepositoryId'
$ServiceEndpointId = 'ServiceEndpointId'
$CreateImportReqRequest = '{
"parameters" : {
"gitSource": {
"url" : "' + $SourceRepoUrl + '",
}
}
}'
$CreateImportReqUri = $BaseTargetUri + 'git/repositories/' + $TargetRepoId + '/importRequests?api-version=5.0-preview.1'
$CreateImportReqResponse = Invoke-RestMethod -Method Post -ContentType application/json -Uri $CreateImportReqUri -Body $CreateImportReqRequest -Headers @{Authorization=("Basic {0}" -f $base64AuthInfoTarget)}
echo $CreateImportReqResponse
Но при вызове появляется ошибка Bad request. Я могу создать пустое целевое репо и конечную точку службы через REST.
В первой ссылке ниже тело запроса содержит дополнительный параметр для serviceendpointid, но он также дает ошибку.
Invoke-RestMethod : The remote server returned an error: (400) Bad Request.
Я взял следующие ссылки: https://www.codewrecks.com/blog/index.php/2016/10/08/import-a-git-project-with-rest-api-between-vsts-team-projects/ https://docs.microsoft.com/en-us/rest/api/azure/devops/git/import%20requests/create?view=azure-devops-server-rest-5.0
Неправильный запрос был результатом неправильного PAT в конечной точке службы.
Запрос теперь успешен с этой структурой запроса: