【问题标题】:Fork a repo from one Azure DevOps Org to another Org using the API使用 API 从一个 Azure DevOps Org 将 repo 分叉到另一个 Org
【发布时间】:2021-12-05 11:00:20
【问题描述】:

是否可以使用 Azure DevOps API 将 SourceOrganization 的私有项目中存在的存储库分叉到 DestOrganization 的另一个项目中?

【问题讨论】:

标签: azure-devops azure-devops-rest-api azure-repos


【解决方案1】:

不,这不可用。

您链接到的问题将允许您创建另一个存储库的一次性镜像,但您不会有任何功能,如拉取请求、差异/合并等。

您可以执行导入请求以在另一个组织中创建克隆,但它完全忽略了存储库之间的关系,并且您无法跨组织执行任何拉取请求。

代码分两步:

  1. 使用对源组织至少具有Code (Read) 访问权限的 PAT 创建一个临时端点。
POST https://dev.azure.com/{{ORG}}/{{PROJECT}}/_apis/serviceendpoint/endpoints

{
    "authorization":{
        "parameters":{
            "password":"{{PAT WITH ENOUGH PERMISSIONS}}",
            "username":"."
        },
        "scheme":"UsernamePassword"
    },
    "name":"{{RANDOM UNIQUE NAME}}",
    "type":"git",
    "url":"{{CLONE URL OF SOURCE REPO}}"
}

它将以端点 ID 响应:

{
   "data":{},
   "id":"72d574f0-05f1-481f-af15-f78579b374d4",
   "name":"wv1w1",
   "type":"git"
   ...
}
  1. 然后创建导入:
POST https://dev.azure.com/{{ORG}}/{{PROJECT}}/_apis/git/repositories/{{NEW REPO NAME}}/importRequests

{
   "parameters":{ 
      "deleteServiceEndpointAfterImportIsDone":true,
      "gitSource":{
          "overwrite":false,
          "url":"{{CLONE URL OF SOURCE REPO}}"
      },
      "tfvcSource":null,
      "serviceEndpointId":"{{ID FROM PREVIOUS REQUEST}}"
    }
}

它也不能用于在不同组织之间同步资源。

您可以使用 Azure Pipeline 拼凑一些东西,将更改从一个组织推送到另一个组织。同样,没有“分叉”,而实际上只是同步。

【讨论】:

  • 知道了。一个问题。您能否确认私有项目中是否存在源代码库({{CLONE URL OR SOURCE REPO}})?
  • 只要您为私人项目设置了具有适当访问权限的 PAT,我的工作就不会出现问题。
  • 谢谢。您能否明确提及(在您的回答中)必须在 Source Org/Project 中创建 PAT,以便每个人都清楚? :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多