使用 API 将一个存储库从一个 Azure DevOps 组织分叉到另一个组织

Fork a repo from one Azure DevOps Org to another Org using the API

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

不,这不可用。

您链接到的问题将允许您创建另一个存储库的一次性镜像,但您将没有拉取请求、diff/merge 等任何功能

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

代码分为两步:

  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 拼凑在一起,将更改从一个组织推送到另一个组织。同样,没有“分叉”,但实际上只是一个同步。