基于git 的补丁生成工具

教程 shanhuhai 868℃ 0评论

帮公安做一个小项目,因为是内网,用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 的补丁生成工具

付费咨询
喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址