2

介绍

我正在使用 Git 来控制交付给生产的修补程序。

当开发团队想要将一些更改交付给生产时,他们会创建一个称为修补程序的文件包,然后发送给生产团队。修补程序由其 ID 指示,例如HF1, HF2, ..., HF6.

生产团队负责审查每个修补程序并确认将它们部署到生产环境中,我们正在尝试使用 git 来跟踪这些修补程序的状态,假设我们的 git 历史是这样的

O-HF1-HF2-HF3 (production)
           \-HF4-HF5-HF6-HF7-HF8-HF9 (delivery)

其中productionbranch 具有已确认生产的所有修补程序,而deliverybranch 具有由开发团队交付但未确认生产的其余修补程序。

现在假设 HF8 已交付更改SomeJavaClass.class,我们迫切需要将此修补程序部署到生产中,而我们尚未完成对 HF4 - HF7 的审查。我们会做如下

  1. 使用git rebase -i HF3并重新排序交付分支,以便 HF8 成为 HF3 旁边的第一个项目

  2. 通常这会导致冲突,因为 HF4 - HF7 中的某些文件会更改 HF8 所依赖的内容。我们必须找到所有此类修补程序并将它们重新组合在一起。例如,假设 HF5 和 HF7 也有变化SomeJavaClass.class,因此是 HF8 的依赖项,我们会将历史变基为

    O-HF1-HF2-HF3 (production)
               \-HF5-HF7-HF8-HF4-HF6-HF9 (delivery)
    
  3. 合并production分支到 HF8

    O-HF1-HF2-HF3-HF5-HF7-HF8 (production)
                           \-HF4-HF6-HF9 (delivery)
    

问题

是否有一个 git 命令可以帮助我在执行 rebase 之前找到 HF4 - HF7 之间的所有修补程序,这是 HF8 的依赖项?

delivery注意:我的目的是开发一个 shell 脚本,给定 HFX 作为输入,在分支到分支中执行变基和合并 HFX 及其所有依赖修补程序production

4

0 回答 0