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