最近工作中遇到一个问题,想要获取到git每次上测试的增量包,给大家看看我的解决方法。
通过git自带命令导出分支差异包
git diff-tree -r --no-commit-id --name-only a9fb6b9 | xargs tar -rf /e/202109090.tar
#获取单次commit增量包
git diff-tree -r --no-commit-id --name-only a9fb6b9..a857bd2 | xargs tar -rf /e/202109090.tar
#获取多次commit之间增量包(建议获取超前一次的commit)
这样虽然解决了导出增量包的问题,可是工作所需的.zip包,而windows不支持通过管道输出.zip包,解决方法详见《.tar和.zip之间的转换》。
然而这种导包方式并不会导出删除的文件,这样即使代码中删除了文件,但是环境上还是没有删除此文件,我通过导出commit的日志信息来查看是否有删除的文件,从而实现代码与环境同步。
git show --name-status a9fb6b9 >>/e/20210909.csv
#获取单次commit日志信息
git show --name-status a9fb6b9..a857bd2 >>/e/20210909.csv
#获取多次commit日志信息
#导出参数可变,可根据需要信息选择导出的参数
#.csv文件说明
#D删除文件
#M修改文件
#A新增文件
#R重命名文件
注:可搭配jenkins实现较为方便的导包方式。
为大家介绍一篇文章,关于git生成diff原理,叫做《git生成diff原理:Myers差分算法》里面介绍的非常好,感兴趣可以的朋友可以研究一下。