shell 从一个git 目录里面为每一个modified文件生成diff文件并且checkout为原来文件重命名为.old【转】
转自:https://blog.csdn.net/yang_quan_yang/article/details/103522275
为每一个modified文件成diff文件并且checkout为原来文件重命名为.old,例如再Android 源码里面下面:
生成:
#!/bin/bash
# 不用diff old的文件 add 上 即可;
# ./creat_patch.sh . 2 n
# 1 :clean for test
# c: only clear *.diff *.old
ignore_list=(
"./creat_pacth.sh"
) #数组类型
clean()
{
echo $(find -name "*.diff")
rm -rf $(find -name "*.diff")
echo $(find -name "*.old")
rm -rf $(find -name "*.old")
}
filter_file()
{
o="old"
d="diff"
j=0
i=0
plat=${1}
while (($j < ${#ignore_list[@]})) #while循环
do
result=$(echo $file |grep "${ignore_list[$j]}")#过滤忽略的文件
if [ -n "$result" ]
then
echo "======while============="
echo $result
echo "=====++WH end==========="
break
else
echo "======operate diff======"
echo $file
let ++i
echo $i
content=$(git diff -p $file) #获取diff的的内容
echo $content
if [ "$content" != "" ];then #如果不是空就进行 diff 和cp操作
$(git diff -p $file > $file.$d)
$(git checkout $file)
$(cp $file $file.$o)
$(git apply $file.$d)
echo "======op end========="
fi
fi
let ++j
done
}
read_file() #查找目录下的所有子文件
{
dir=`ls $1`
for i in $dir
do
if [ -d $1"/"$i ]
then
read_file $1"/"$i #递归方法
else
file="$1"/"$i"
filter_file $file
fi
done
}
if [ $3 == "c" ] #通过第三个参数来判断是否进行清除
then
clean
exit 0
fi
read_file $1
echo $(find -name *.diff)
echo $(find -name *.old)
if [ $2 == "1" ] #通过第2个参数进行判断是否进行测试时清除操作
then
clean
echo "=========================="
echo "clean done"
echo "=========================="
fi
使用方式是:
./creat_patch.sh . 2 n
【作者】sky
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
2016-11-04 BlueDroid介绍 【转】
2016-11-04 Android BlueDroid(一):BlueDroid概述 【转】