0

我继承了一个基本网站的 Mercurial 系统,但我是 Mercurial 的新手,在我们找到比我更有能力的人之前,我只是临时的网站保姆。但与此同时,我可以使用指针来说明我们如何将功能开发与快速错误修复分开。

目前,我们有 3 个基本环境:个人开发环境、登台和生产环境。每个环境都有自己的本地 Mercurial 存储库。单个 bitbucket 存储库充当每个环境推送和提取的主存储库。

问题是当有人正在处理未完成的代码但需要提交需要快速部署的快速错误修复时。如果开发人员已提交对未完成代码的更改并提交快速错误修复并进行推送,则所有代码都会进入 bitbucket 存储库。

从我迄今为止的研究来看,我可以通过一个开发 bitbucket 存储库(用于较慢的开发)和一个“稳定”的 bitbucket 存储库(用于现在需要进行的修复)来解决问题

在这种情况下,在我们的开发机器上,我们会在本地开发存储库中执行大部分较慢的开发代码,这些代码将从本地稳定存储库克隆。当我们想要共享未完成的代码时,我们会推送/拉取到 bitbucket dev。其他开发人员可以从他们的本地开发人员推/拉到 bitbucket 开发人员,以保持他们的本地开发环境同步或合并代码。

当我们准备好将其推入生产环境时,我们会将代码从我们的开发环境推入 bitbucket main,然后将其拉入 staging 进行测试。如果它看起来不错,我们会将 bitbucket 主存储库投入生产。稍后,我们会将 bitbucket 主仓库拉入我们的个人稳定仓库以保持同步,然后从个人主仓库拉入个人开发仓库以使其同步。

如果我们的开发环境中的代码不完整,但必须快速修复一些错误。我们会在我们的个人稳定存储库中进行错误修复,其中应该没有任何不完整的代码,将本地存储库推送到 bitbucket stable,然后将其投入生产。然后我们会将 bitbucket stable 引入我们的个人开发环境,以使其与生产环境保持同步,但仍保留我们未完成的代码。

感觉有一种更简单的方法可以做到这一点,我不明白。任何建议将不胜感激。

4

1 回答 1

2

问题是当有人正在处理未完成的代码但随后需要提交需要快速部署的快速错误修复时。

这是一个使用过的工作流程和(缺少)管理的问题,抱歉。我看到当前状态至少有 3 个弱点

  • (不相关)为什么 3 个 repos 而不是具有特殊命名分支的单个 repo?
  • 为什么在切换任务工作方式的情况下,MQ 扩展不被用作强制工具?
  • 为什么所有开发都发生在默认分支中并且不使用命名分支?

我,作为这种情况下的 PM 将评估两种可能的方式并在测试任何一种(或两者的组合)后实施

  • 单分支模式的 MQ 扩展必须用于任何WIP。只有完成和测试的更改才能转换为更改集(因此,可以推送到公共)
  • 单分支模式替换为“每个任务的分支”工作流程(任何任务 - 开发人员仓库中的新命名分支,稍后合并为默认)和默认推送模式“所有分支”替换为“仅推送指定的分支”:仅...-b default在以下情况下单独的存储库,-b default -b STAGING -b PROD如果单个存储库具有每个目标/DEVEL、STAGING、PROD/ 的单独分支。在 -b 的情况下,只有选定的分支和来自另一个命名分支(即合并的分支)的这些分支中的变更集的父级将被推送到公共,未完成(且未合并)的分支将保持在本地
于 2013-05-20T03:25:08.790 回答