帮公安做一个小项目,因为是内网,用git 更新不方便,只能打补丁, 所以写了一个补丁生成工具,代码分享给大家。
#!/bin/bash
# 获取传入的两个参数
commit_xxx=$1
commit_yyy=$2
# 检查参数是否为空
if [ -z "$commit_xxx" ]; then
echo "请提供起始版本号"
exit 1
fi
# 如果结束版本号为空,则设置为最新提交的版本号
if [ -z "$commit_yyy" ]; then
commit_yyy=$(git rev-parse HEAD)
fi
# 获取文件列表并创建zip文件
files=$(git diff --name-only $commit_xxx $commit_yyy | grep -Ev 'encrypt\.php|gen_en_version\.sh')
zip_file="patch-$(date +"%Y%m%d%H%M%S").zip"
if [ -z "$files" ]; then
echo "在给定的提交范围内没有文件发生变化。"
exit 1
fi
echo "正在创建补丁文件:$zip_file"
echo "$files" | xargs zip $zip_file
echo "完成!生成的补丁文件为:$zip_file"
将以上代码保存为 gen_patch.sh 放到代码顶层目录即可,必须是 git 仓库哦。
这个工具可以接收两个参数, 第一个参数是从那个 commit id 开始, 第二个参数是从那个 commit id 结束,第二个也可以不填,不填就是到最后一条。
例如 gen_patch.sh ca9e194d0e912f9ef7f852ef557d39b9d74cfbfc
就是将 commit id 为ca9e194d0e912f9ef7f852ef557d39b9d74cfbfc 以后的所有提交记录改动的文件到打包到一个 zip文件中。
PHPstorm里右键提交记录就可以复制 commit id
转载请注明:大后端 » 基于git 的补丁生成工具