通过API将存储库从一个azure devops组织导入到另一个组织



我正在尝试自动化我们组织中的一些流程,其中包括能够将一个azure devops组织中的存储库转移到另一个组织(将其视为开发组织和测试组织,因此我们正在从开发推向测试(

通过APIhttps://learn.microsoft.com/en-us/rest/api/azure/devops/git/import%20requests/create?view=azure-devops-rest-6.0我正在尝试创建一个导入请求。

这就是我被难住的地方,文档中没有太多关于它的内容。

如果我使用像示例中那样的请求体:

{
"parameters": {
"gitSource": {
"url": "https://github.com/Microsoft/vsts-agent.git"
}
}
}

只要我导入到一个空的存储库中,导入请求就可以正常工作。但是,我需要能够同步现有的存储库。[文档中有一个名为overwrite的属性似乎是用于此目的的][1]:https://i.stack.imgur.com/ezCB3.png

唯一的问题是当我将其添加到请求主体并设置为真正的时

{
"parameters": {
"gitSource": {
"url": "https://github.com/Microsoft/vsts-agent.git",
"overwrite": true
}
}
}

我收到错误的请求消息,说参数组合无效如果我将其设置为false,那么如果我试图导入到一个空的存储库,它就会起作用。如果存储库不是空的,我会收到一个错误,说我只能导入到一个空的repo中。

因此,这个属性似乎正是用于我正在做的事情,然而,当该属性设置为true时,为了使请求成功,似乎需要更多的参数,但这方面缺乏文档。

如有任何帮助,将不胜感激

我怀疑overwrite = true给您带来了错误,因为您的后一个repo中可能存在一些权限问题或Auth问题。

或者,您可以派生父存储库,并仅同步提供的refs

CURL:

POST https://dev.azure.com/{organization}/_apis/git/repositories?sourceRef=users/heads/master&api-version=6.0

请求正文:

{
"name": "forkRepositoryWithOnlySourceRef",
"project": {
"id": "3b046b6a-d070-4cd5-ad59-2eace5d05b90"
},
"parentRepository": {
"id": "76b510af-7910-4a96-9902-b978d6226bee"
}
}

示例响应(HTTP 201(:

{
"id": "29230c30-9125-459b-a3f6-ffab329053bd",
"name": "forkRepositoryWithOnlySourceRef",
"url": "https://dev.azure.com/fabrikam/MyFirstProject/_apis/git/repositories/29230c30-9125-459b-a3f6-ffab329053bd",
"project": {
"id": "3b046b6a-d070-4cd5-ad59-2eace5d05b90",
"name": "MyFirstProject",
"url": "https://dev.azure.com/fabrikam/_apis/projects/3b046b6a-d070-4cd5-ad59-2eace5d05b90",
"state": "wellFormed",
"revision": 12,
"visibility": "private",
"defaultTeamImageUrl": null
},
"size": 0,
"remoteUrl": "https://dev.azure.com/fabrikam/MyFirstProject/_git/forkRepositoryWithOnlySourceRef",
"sshUrl": "git@ssh.dev.azure.com:v3/fabrikam/MyFirstProject/forkRepositoryWithOnlySourceRef",
"isFork": true,
"_links": {
"forkSyncOperation": {
"href": "https://dev.azure.com/fabrikam/_apis/git/repositories/29230c30-9125-459b-a3f6-ffab329053bd/forkSyncRequests/7"
}
}
}

最新更新