Linux 根据提交记录生成补丁及新旧文件对比

复制代码
#!/bin/bash

#解决/bin/bash^M: bad interpreter: Text file busy
#sed -i 's/\r$//' test1.sh

CMD1=$1
CMD2=$2
CMD3=$3
echo "CMD1 > $CMD1"
echo "CMD2 > $CMD2"
echo "CMD3 > $CMD3"
# 运行时的入参 CMD1提交记录1  CMD2提交记录2 CMD3输出目录 ../diff/$CMD3

if [ "$CMD1" == "" ];then
    echo "<<<<<<<<<<<<<<<<<<<<<< error"
    exit 0
fi

if [ "$CMD2" == "" ];then
    echo "<<<<<<<<<<<<<<<<<<<<<< error"
    exit 0
fi

if [ "$CMD3" == "" ];then
    CMD3="supplier"
fi

mkdir -p ../diff/$CMD3/old
mkdir -p ../diff/$CMD3/new
echo "mkdir"

git log $CMD1 -1 --name-only |grep '/'| awk '{print $1}' > ../diff/list.txt
# 查看$CMD1提交记录的文件列表

xargs -a ../diff/list.txt cp --parents -t ../diff/$CMD3/old
xargs -a ../diff/list.txt cp --parents -t ../diff/$CMD3/new
echo "cp files"

git diff $CMD2 $CMD1 > ../diff/$CMD3/list.diff
echo "new list.diff"
# 根据$CMD1提交记录对比前一条提交记录$CMD2生成差异文件

cd ../diff/$CMD3/old
patch -R -p1 <../list.diff
echo "patch list.diff"
# 打补丁

echo "<<<<<<<<<<<<<<<<<<<<<< finish"
exit 0

根据两个提交记录CMD1和CMD2生成差异文件list.diff,并根据CMD1的修改文件列表复制修改前的文件到old目录,修改后的文件到new目录

参考链接:

git导出差异文件及目录结构 - 我是橘子 - 博客园 (cnblogs.com)

相关推荐
栈低来信1 小时前
linux0.12 head.s代码解析
linux
uncle_ll1 小时前
Git 别名:用简短命令大幅提升开发效率
linux·git
半梦半醒*2 小时前
ansible中配置并行以及包含和导入
linux·运维·ssh·ansible·负载均衡
路溪非溪2 小时前
Linux驱动开发重要操作汇总
linux·运维·驱动开发
Coision.2 小时前
硬件:51单片机的按键、中断、定时器、PWM及蜂鸣器
linux·嵌入式硬件·51单片机
wydxry3 小时前
Linux 系统上配置 GitHub 账号并克隆私有仓库
linux·github
青草地溪水旁5 小时前
66多路复用 I/O 函数——`select`函数
linux·socket编程·i/o复用
轻松Ai享生活5 小时前
5 天学习 Linux Kernel 主要原理 | Day 2:Linux 进程管理与调度
linux
轻松Ai享生活6 小时前
5 天学习 Linux Kernel 主要原理 | Day 1:Linux 内核基础与架构总览
linux
哈喽H7 小时前
centos系统的linux环境不同用户,环境变量不同如何配置?
linux·centos