Git:定期将回购复制到公司外部无法获得的另一个回购中

Git:定期将回购复制到公司外部无法获得的另一个回购中,git,azure-devops,Git,Azure Devops,我们正在我们公司做一个项目;该项目在Azure DevOps(带有git的“在线”版本)中管理。 让我们为C1公司调用Azure DevOps中的项目P1 只要您具有正确的凭据,就可以从任何地方访问此公司DevOps 项目P1拟交付给另一家公司;我们称之为C2 C2还有一个Azure DevOps公司网站,其中包含一些回购协议 C2希望每天根据自己的Azure管道(命名约定、代码覆盖率等)验证开发 最简单的方法是将P1从C1镜像到C2,然后仅在C2/P1中工作。问题是,在公司领域之外禁止访问C2

我们正在我们公司做一个项目;该项目在Azure DevOps(带有git的“在线”版本)中管理。
让我们为C1公司调用Azure DevOps中的项目P1

只要您具有正确的凭据,就可以从任何地方访问此公司DevOps

项目P1拟交付给另一家公司;我们称之为C2

C2还有一个Azure DevOps公司网站,其中包含一些回购协议

C2希望每天根据自己的Azure管道(命名约定、代码覆盖率等)验证开发

最简单的方法是将P1从C1镜像到C2,然后仅在C2/P1中工作。问题是,在公司领域之外禁止访问C2,而且大多数开发人员都不在C2大楼中开发

我们有以下想法:

  • 每天,在C2大楼的开发人员计算机上,对C1/P1执行拉操作
  • 紧接着,执行从本地到C2/P1的推送
不幸的是,这种方法只有在没有合并冲突、开发人员的计算机始终处于运行状态等情况下才有效

是否有某种git方法允许C1/P1每天完全复制到C2/P1


谢谢。

您可以创建另一个管道来运行git命令以克隆C1/P1并推送到C2/P1。请检查以下详细步骤:

1,在C1/P1中创建一个新管道,以将C2/P1与C1/P1同步。(在经典UI管道中)。在管道编辑页面上,单击获取源检查不同步源以跳过按代理作业克隆C1/P1

2、添加要在脚本下运行的powershell任务。下面的脚本将克隆C1/P1,然后将远程url更改为C2/P1,然后将代码推送到C2/P1。您需要使用PAT来进行提示。选中以生成具有代码读写范围的PAT

- powershell: |

   git clone https://{PAT for C1/P1}@dev.azure.com/{org}/{proj}/_git/EmptyTestYaml

   cd EmptyTestYaml #cd the code folder

   git remote set-url origin https://{PAT for C2/P1}@dev.azure.com/{org}/{proj}/_git/CrossMicRepo2

   git push -u origin --all -q

  displayName: 'PowerShell Script'
3、单击触发器选项卡以启用持续集成。因此,通过以上步骤。当任何更改提交到C1/P1时,C1/P1将自动同步到C2/P1

选项:

如果C2不必在其C2/P1中包含源代码,则对于C1/P1,将向所有具有正确凭据的用户开放。C2可以创建其管道,源代码repo指向C1/P1。这样,C1/P1源代码就不必与C2/P1同步,C2仍然可以每天根据自己的Azure管道验证开发

以下是将C2/P1管道的源回购配置为C1/P1的详细步骤

1,从C2/P1管道编辑页面,单击获取源,选择其他Git,单击新建服务连接(如果之前未配置,则添加连接)

2,在提示窗口中,输入C1/P1的azure回购url和C1/P1的PAT

3,然后单击触发器选项卡以启用持续集成。然后,当向C1/P1提交任何更改时,将触发C2/P1的管道

您还可以从C2/P1的项目设置页面添加服务连接。查看详细信息


希望以上帮助

git clone--bare
git push--mirror
还不够吗?谢谢你的详细回答!我马上就去试试。我只是有点担心C1向C2/P1的推进,因为C2/P1无法从公司外部访问。但是从AzureDevOps到另一个AzureDevOps,也许它是有效的!我会告诉你最新情况的。嗨@benichka进展如何?请确保您从C2处获得PAT,读取和写入代码scopeHey Levi;对不起,迟了答复。客户端的Azure DevOps回购协议可能要到3月中旬才能使用。当我按照您描述的方式配置它时,请确保我会让您知道。再次感谢!