打patch的方法
来源:互联网 发布:淘宝网厨房用品 编辑:程序博客网 时间:2024/05/17 03:03
如果我们现在有一份源码,另外还有一份基于上一版本的patch,
所谓patch即补丁,为了实现某一功能或修改某些bug而生成的。
1>先来看看patch的语法,这里以patch一块的内容为例
diff --git a/minui/minui.h b/minui/minui.hold mode 100644new mode 100755index a73eb7b..3ea87f9--- a/minui/minui.h+++ b/minui/minui.h@@ -59,6 +59,8 @@ int gr_measure(const char *s); void gr_font_size(int *x, int *y); void gr_blit(gr_surface source, int sx, int sy, int w, int h, int dx, int dy);+void gr_BarAndBall(gr_surface source, int sx, int sy, int w, int h, int dx, int dy);//<ASUS_BSP Jie_Lain 20151112 +++> add for RecoveryUI+ unsigned int gr_get_width(gr_surface surface); unsigned int gr_get_height(gr_surface surface);①minui.h表示需要修改的文件,---表示源文件minui.h,+++表示目标文件minui.h
@@是diff的块差异语法,即开始修改的行数,用@@来标记开始和结束
这里的标记是@@-59,6 +59,8@@
②-59即源文件的第59行,-59,6表示原文件59行开始的6行
故+59,8表示目标文件59行开始的8行,
没有+-符号的行表示没有改动的行:
int gr_measure(const char *s);
void gr_font_size(int *x, int *y);
void gr_blit(gr_surface source, int sx, int sy, int w, int h, int dx, int dy);
③然后+开始加内容了
+void gr_BarAndBall(gr_surface source, int sx, int sy, int w, int h, int dx, int dy);//<ASUS_BSP Jie_Lain 20151112 +++> add for RecoveryUI+
加一行指定内容和空行
后面两行又是没有改动的内容
语法就是这样,很简单吧
2>下面介绍打patch的方法
①先来看看我的patch是哪里的,
看名字 0001-update-recovery-ui.patch
明显这是bootable/recovery的patch,所以需要先进去目录
$cd bootable/recovery/
②git am
$git am ~/patch
这里的~/patch指我的patch所在的目录,patch放在哪里路径就写什么好了
由于patch显然是用git format-patch来生成的,所以用git的工具应该就可以很好的做好。git-am 就是作这件事情
执行git am ~/patch后,如果所修改的文件都能按照patch所描述的diff添加或修改进入,就会直接修改,否则报错,可以看到这里有众多error
由于目前的patch是上以版本的patch,由于行号变量等不一致,所以打到当前版本很有可能会不成功,这时候就需要我们手动修改patch所要修改的内容
来实现patch的功能
③git apply patch --reject
$git apply ~/patch --reject
这条命令就是指出所有patch不成功的段,并生成rej文件在相应目录下,rej文件其实就是patch不成功的那一小部分
再去看看git status
可以看到刚刚生成的rej文件了呢
所以根据rej文件的内容修改code就好了呢,需要适当修改行数变量什么的,自己掌握就好了
修改好后build通过后,将rej文件删除,将修改过或添加的文件$git add后(如果添加所有改动$git add --all)
$git am --continue代表我们已经修改好了error,注意一定修改正确后再执行--continue,否则将退出am状态
或者退出am恢复原有分支$git am --abort
- 打patch的方法
- Linux打Patch的方法
- linux打patch的方法
- linux 打patch的方法
- Linux打Patch的方法
- Linux打Patch的方法
- android 打Patch的方法 .
- Linux打Patch的方法
- git打patch的方法
- 摘录:Linux打Patch的方法
- 摘录:Linux打Patch的方法
- 摘录:Linux打Patch的方法
- linux下打patch的方法
- 摘录:Linux打Patch的方法
- 摘录:Linux打Patch的方法
- 给Mysql源程序打Patch的方法
- git 打patch方法
- openwrt 打PATCH方法
- 微信支付paysignkey设置问题
- iso中输入框被软键盘覆盖的解决方案
- java Socket用法详解
- JS版获取最长公共子串的方法
- Machine Learning week 7 quiz: Support Vector Machines
- 打patch的方法
- PHP5历史以及各个版本的新功能和新特性收集总结
- 大型分布式网站架构技术总结
- 欢迎使用CSDN-markdown编辑器
- iPhone像素点和常用控件尺寸
- T-SQL动态查询(3)——静态SQL
- Android .so 共享库(动态链接库)
- shareSdk错误码对照表
- Sed单行命令快速参考