我正在使用Git来控制交付给生产的修补程序。
当开发团队想要对生产进行一些更改时,他们会创建一个称为修补程序的文件包,然后发送给生产团队。修补程序由其ID标识,例如HF1, HF2, ..., HF6
。
生产团队负责审核每个修补程序并确认它们在生产中进行部署,我们正在尝试使用git来跟踪这些修补程序的状态,假设我们的git历史记录就像
O-HF1-HF2-HF3 (production)
\-HF4-HF5-HF6-HF7-HF8-HF9 (delivery)
其中production
分支具有已确认为生产的所有修补程序,delivery
分支具有开发团队提供的其余修补程序但未确认生产。
现在假设HF8的更改已发送为SomeJavaClass.class
,我们迫切需要将此修补程序部署到生产环境,而我们还没有完成对HF4-HF7的审核。我们会这样做
使用git rebase -i HF3
并重新排序传递分支,以便HF8成为HF3旁边的第一个项目
通常这会导致冲突,因为HF4-HF7中会有一些文件有HF8所依赖的变化。我们必须找到所有这些修补程序并将它们重新组合在一起。对于exameple,假设HF5和HF7在SomeJavaClass.class
中也有变化,因此是HF8的依赖关系,我们会将历史改为
O-HF1-HF2-HF3 (production)
\-HF5-HF7-HF8-HF4-HF6-HF9 (delivery)
将production
分支合并到HF8
O-HF1-HF2-HF3-HF5-HF7-HF8 (production)
\-HF4-HF6-HF9 (delivery)
是否有一个git命令可以帮助我在执行rebase之前找到HF4-HF7之间的所有修补程序,这是HF8的依赖?
注意:我的目的是开发一个shell脚本,在给定HFX作为输入的情况下,执行rebase并将HFX及其所有依赖修补程序合并到delivery
分支到production
分支。