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)

相关推荐
yzx99101311 分钟前
Linux 系统中的算法技巧与性能优化
linux·算法·性能优化
fengyehongWorld11 分钟前
Linux Docker的简介
linux·docker
曹瑞曹瑞43 分钟前
VMware导入vmdk文件
linux·运维·服务器
Johny_Zhao1 小时前
2025年6月Docker镜像加速失效终极解决方案
linux·网络·网络安全·docker·信息安全·kubernetes·云计算·containerd·yum源·系统运维
hello kitty w1 小时前
Python学习(7) ----- Python起源
linux·python·学习
十年磨一剑~1 小时前
centos查看开启关闭防火墙状态
linux·运维·centos
vortex53 小时前
探索 Shell:选择适合你的命令行利器 bash, zsh, fish, dash, sh...
linux·开发语言·bash·shell·dash
GalaxyPokemon3 小时前
LeetCode - 148. 排序链表
linux·算法·leetcode
懒羊羊大王呀3 小时前
Ubuntu20.04中 Redis 的安装和配置
linux·redis
杰哥技术分享4 小时前
在 CentOS 上安装 Docker 和 Docker Compose 并配置使用国内镜像源
linux·docker·centos