我有一个正在审核的应用程序。每个月,我都会被要求提交已部署到生产中的提交列表。
我有三个主要分支:master;UAT和PROD。开发是在主分支或特定分支中进行的,UAT有QA服务器中的代码,PROD有在生产中部署的代码。
有时,用户验收测试阶段需要超过一个月的时间(上一次在生产中部署是在六个月前开发的(,这就是我的问题开始的地方。
使用命令git log --pretty=format:"%h";"%an";"%ai";"%cn";"%ci";"%s" PROD --since='2022-01-01'
,我可以获得自1月1日以来提交的提交列表,但是,我无法获得已合并到PROD分支但在该日期之前提交的提交。
有没有一个简单的查询来获取自1月1日以来合并到PROD分支的提交的完整列表,而不管它们的提交日期如何?
TL;DR
不,Git不能为你做这件事。但也有解决办法。
详细信息
Git本身并不跟踪您要查找的信息。在一个分支的历史中,它无法知道在过去的任何一个特定日期它实际指向的是哪一个承诺。
可能的解决方案
如果你在开始约会之前就知道PROD在哪里,比如在OLDPROD,你可以使用
git log OLDPROD..PROD
因此,以下是我对OLDPROD可用方式的建议:
- 由于您每月都在运行此报告,请保存上次运行报告时的提交PROD,以便下次运行报告时可以使用它
- 如果你有一个一致和定期的工作流程,例如,每次合并到PROD都必须通过PR合并到PROD来完成,你可以检查日志,并在开始日期之前找到最近的合并:那就是OLDPROD
- 根据你使用的Git服务器,它可能会保存推送操作的日志:在你开始日期之前,最后一次推送到PROD将是OLDPROD
- 如果你一直在使用PR,那么Git服务器上的PR历史也应该提供足够的信息来推断OLDPROD