【问题标题】:Import repository from one azure devops organization to another through the API通过 API 将存储库从一个 azure devops 组织导入到另一个
【发布时间】:2020-12-31 15:50:01
【问题描述】:

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

通过 API https://docs.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

唯一的问题是当我将它添加到请求正文并设置为 true 时

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

我收到错误的请求消息,说明参数组合无效 如果我将其设置为 false,则在我尝试导入空存储库时它会起作用。如果存储库不是空的,我会收到一条错误消息,说我只能导入一个空的存储库。

所以看起来这个属性是为了我正在做的事情,但是当该属性设置为 true 以使请求成功时,似乎需要更多参数,但是这方面的文档缺乏。

任何帮助将不胜感激

【问题讨论】:

  • 下面的回答对你有帮助吗?

标签: c# git azure api devops


【解决方案1】:

我怀疑overwrite = true 给了你错误,因为你的后一个仓库中可能存在一些权限问题或身份验证问题。

或者,您可以分叉您的父存储库并仅同步提供的引用

卷曲:

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"
    }
  }
}

【讨论】:

  • 这是一个很好的建议,但是当我尝试这样做时,我收到一条错误消息,提示“不支持跨集合分叉。他们的集合是他们的新“组织”,我正在尝试从其中同步一个 repo组织到不同组织中的回购。
  • 你检查权限了吗?
猜你喜欢
  • 2019-12-14
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
相关资源
最近更新 更多