【问题标题】:Git: periodically replicate a repo into another one not reachable from outside the companyGit:定期将回购复制到公司外部无法访问的另一个回购
【发布时间】:2020-02-20 15:07:41
【问题描述】:

我们正在公司开展一个项目;该项目在 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 clone --baregit push --mirror 还不够吗?

标签: git azure-devops


【解决方案1】:

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

1,在 C1/P1 中创建一个新的管道,将 C2/P1 与 C1/P1 同步。(在经典 UI 管道中)。在管道编辑页面上,点击 Get sourceCheck Don't sync sources 跳过代理作业克隆 C1/P1。

2,添加一个powershell任务以在脚本下运行。下面的脚本将克隆 C1/P1,然后将远程 url 更改为 C2/P1,然后将代码推送到 C2/P1。您将需要使用 PAT 进行验证。检查here 以生成具有代码读写范围的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 可以使用指向 C1/P1 的源代码存储库创建其管道。这样,C1/P1 源代码不必同步到 C2/P1,C2 仍然可以每天针对自己的 Azure 管道验证开发。

下面是配置C2/P1管道源repo到C1/P1的详细步骤。

1、在C2/P1管道编辑页面,点击get Source并选择Other Git,点击New service connection(或添加如果之前未配置连接)。

2、在提示窗口中,输入C1/P1的azure repo url和C1/P1的PAT。

3、然后点击Triggers选项卡启用持续集成。然后,当 C1/P1 有任何更改提交时,C2/P1 的管道将被触发。

您也可以从 C2/P1 的项目设置页面添加服务连接。详情请查看here

希望以上有所帮助!

【讨论】:

  • 感谢您的详细解答!我马上试试。我只是有点担心从 C1 推送到 C2/P1,因为无法从公司外部访问 C2/P1。但是从 Azure DevOps 到另一个 Azure DevOps,也许它可以工作!我会及时通知您。
  • 嗨@benichka 怎么样?请确保您从 C2 获得具有代码读写范围的 PAT
  • 嘿列维;对不起,迟到的答案。客户端的 Azure DevOps 存储库似乎要到 3 月中旬才会使用 -_-。当我按照您描述的方式配置它时,请确保我会通知您。再次感谢!
猜你喜欢
  • 2013-08-13
  • 2013-07-18
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 2013-07-25
  • 2020-03-02
相关资源
最近更新 更多