在 Azure DevOps 上成功拉取请求后维护与 bitbucket 同步的 Azure DevOps 存储库

Maintaining an Azure DevOps repo in sync with bitbucket after a successful pull request on Azure DevOps

我正在使用 bitbucket 存储库,并且我有一个管道(我们称之为 P1),当用户提交到 bitbucket 上的存储库时会触发该管道。 P1 完成的主要任务是将 bitbucket 存储库中的代码与 Azure DevOps 存储库同步。

我直接在 Azure DevOps 上执行了我们的第一个拉取请求,从功能分支到主分支,我压缩了拉取请求中包含的所有提交。因此,我在 Azure DevOps 上的存储库现在位于 bitbucket 存储库之前,我需要同步它们。我创建了一个新的管道 (P2),它只运行一个 powershell 脚本,并根据 手动触发它。

P2 执行成功,但不是来自拉取请求的单个提交,只有拉取请求中的第一个提交被保存在 bitbucket 上。现在,触发 P2 成功,但它告诉我存储库是最新的。

我该如何解决这个问题?

此外,如果您对我的方法有任何建议,请继续!我本可以在 bitbucket 上完成拉取请求,我认为这可能会避免所有这些混乱。如果我也不会将提交压缩为单个提交,但它会更干净...

好吧,我终于设法通过强制推送 master 使它工作(我找不到我使用的确切命令,如果有人能提醒我,我会更新这个答案)。

虽然存储库历史有点混乱(下面解释),但至少它在工作,即使历史不完全同步,文件也是如此。


Azure DevOps 存储库历史记录

提交 XXX

提交 AAA

Bitbucket 回购历史

提交 XXX

提交 YYY

提交 AAA


对于使用类似配置的人,我建议确保拉取请求是在 bitbucket 上完成的,而不是在 Azure DevOps 上完成的。这样,管道将始终在主存储库和 bitbucket 发生更改后触发,而不会反过来。

我也遇到了与权限相关的问题,即:

Pushes to this branch are not permitted; you must use a pull request to update this branch.

我按照这些 guidelines

设法修复了它