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)

相关推荐
wdfk_prog7 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
盟接之桥8 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿8 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘8 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy6489 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满9 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠9 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio9 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice9 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
Harvey9039 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s