Linux diff patch
/*****************************************************************************
* Linux diff patch
* 声明:
* 经常需要给代码打补丁,但是发现自己不会打补丁,经常看着补丁改代码,效率
* 那是一个低啊,不会就学学呗,反正patch有-R回退,不怕出错。
*
* 2015-12-28 深圳 南山平山村 曾剑锋
****************************************************************************/ \\\\\\-*- 目录 -*-//////
| 参考文章:
| 一、cat main1.c
| 二、cat main2.c
| 三、execute diff:
| 四、execute patch:
| 五、patch back:
----------------------- 参考文章:
. 用Diff和Patch工具维护源码
http://www.ibm.com/developerworks/cn/linux/l-diffp/index.html
. diff和patch使用指南
http://www.cnblogs.com/cute/archive/2011/04/29/2033011.html
. 补丁格式 diff patch
http://blog.sina.com.cn/s/blog_51cea4040101atql.html 一、cat main1.c
#include <stdio.h> int main( int argc, char **argv )
{
printf( " zengjf test for diff and patch.\n" );
} 二、cat main2.c
#include <stdio.h> int main( int argc, char **argv )
{ printf( " zengjf test for diff and patch.\n" );
} 三、execute diff:
. $: diff -Nur main1.c main2.c > main.patch
. 在当前目录下生成了main.patch文件:
--- main1.c -- ::49.388152208 +
+++ main2.c -- ::17.376180914 +
@@ -, +, @@ int main( int argc, char **argv )
{
+
+
+
printf( " zengjf test for diff and patch.\n" );
} 四、execute patch:
. 当前目录下有:main1.c main2.c main.patch
. cat main1.c
#include <stdio.h> int main( int argc, char **argv )
{
printf( " zengjf test for diff and patch.\n" );
}
. $: patch -p0 < main.patch <right>
patching file main1.c
. cat main1.c
#include <stdio.h> int main( int argc, char **argv )
{ printf( " zengjf test for diff and patch.\n" );
}
. $: patch p0 < main.patch <error>
patching file p0
Hunk # FAILED at .
out of hunk FAILED -- saving rejects to file p0.rej
. $: patch -p1 < main.patch <error>
can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
----------------------------------
|--- main1.c -- ::49.388152208 +
|--- main2.c -- ::17.376180914 +
----------------------------------
File to patch: <cursor>
. $: patch -p0 main.patch <error>
^C 五、patch back:
. 当前目录下有:main1.c main2.c main.patch
. cat main1.c
#include <stdio.h> int main( int argc, char **argv )
{ printf( " zengjf test for diff and patch.\n" );
}
. $: patch -p0 -R < main.patch
patching file main1.c
. cat main1.c
#include <stdio.h> int main( int argc, char **argv )
{
printf( " zengjf test for diff and patch.\n" );
} 六、实例分析:
. patch 部分内容:
diff --git a/proguard.flags b/proguard.flags
index 6d41d17..ffbc39a
--- a/proguard.flags
+++ b/proguard.flags
@@ -, +, @@
-keep class com.android.settings.MasterClearConfirm
-keep class com.android.settings.accounts.*
-keep class com.android.settings.fuelgauge.*
-
+-keep class com.android.settings.ethernet.*
. 解析:@@ -, +, @@
. @@ -表示代表a/proguard.flags文件;
. 11代表下面显示的代码是从a/proguard.flags文件的第11行开始;
. 4代表a/proguard.flags被操作了;
. +代表b/proguard.flags文件
. 11代表下面显示的代码是从b/proguard.flags文件的第11行开始;
. 4代表b/proguard.flags被操作了;
. @@ 代表结束
Linux diff patch的更多相关文章
- Linux之旅(1): diff, patch和quilt (下)
Linux之旅(1): diff, patch和quilt (下) 2 quilt 我们自己的项目能够用cvs或svn管理所有代码.但有时我们要使用其它开发人员维护的项目.我们须要改动一些文件,但又不 ...
- Linux游(1): diff, patch和quilt (下一个)
Linux游(1): diff, patch和quilt (下一个) 2 quilt 我们自己的项目可以用cvs或svn管理所有代码.但有时我们要使用其它开发人员维护的项目.我们须要改动一些文件.但又 ...
- 【转】Linux下patch打补丁命令
[转]Linux下patch打补丁命令 转自:http://www.cnblogs.com/noaming1900/archive/2010/10/28/1863282.html 此命令用于为特定软件 ...
- Linux下patch打补丁命令
此命令用于为特定软件包打补丁,他使用diff命令对源文件进行操作. 基本命令语法: patch [-R] {-p(n)} [--dry-run] < patch_file_name p:为pat ...
- linux命令: patch
一. 针对单文件的patch: 我们以mkprj.sh.1和mkprj.sh两个文件为例: [root@localhost tst]# lsmkprj.sh.1 mkprj.sh 看两个文件的差异: ...
- linux下patch命令使用详解---linux打补丁命令
http://blog.csdn.net/pashanhu6402/article/details/51849354 语 法:patch [-bceEflnNRstTuvZ][-B <备份字首字 ...
- video : Write and Submit your first Linux kernel Patch
http://v.youku.com/v_show/id_XNDMwNzc3MTI4.html After working with Linux (mostly as an advanced user ...
- git diff与linux diff的输出格式之unified format
前言 前面有一篇文章<一个有些意思的项目--文件夹对比工具(一)>,里面简单讲了下diff算法之--Myers算法. 既然是算法,就会有实现,比如git diff中有Myers的实现,gi ...
- diff patch
http://rails-deployment.group.iteye.com/group/wiki/1318-diff-and-patch-10-minutes-guide 情景一:你正尝试从代码编 ...
随机推荐
- (转)Eclipse平台技术概述
转载:周金根 http://zhoujg.blog.51cto.com/1281471/516833 Eclipse:Eclipse平台技术概述 2010-10-19 13:35:00 标签:E ...
- 为Form中的控件增加自适应功能 转
创建一个基于Custom的类resizeable,并新建属性和方法程序,其说明如下: a) 新建属性: posiTyperList 可调整位置的控件类型列表sizeTypeList 可调整大小的控件类 ...
- POJ 1845 Sumdiv (求某个数的所有正因子的和)
题意: 求A^B的所有正因子的和,最后模9901的结果. 思路: 若对一个数n进行素数分解,n=p1^a1*p2^a2*p3^a3*...*pk^ak那么n的所有正因子之和sum=(1+p1+...+ ...
- ELk 几篇好的文章
https://nxlog.co/docs/elasticsearch-kibana/using-nxlog-with-elasticsearch-and-kibana.html http://www ...
- sizeof学习理解
以下内容转自: http://www.cnblogs.com/ComputerG/archive/2012/02/02/2335611.html 博问 闪存 首页 新随笔 联系 管理 随笔- 72 ...
- MongoDB (九) MongoDB 投影
mongodb 投影意思是只选择必要的数据而不是选择一个文件的数据的整个.如果一个文档有5个字段,需要显示只有3个,然后选择其中只有3个字段. find() 方法 MongoDB 的find()方法, ...
- Android 核心分析之十二Android GEWS窗口管理之基本架构原理
Android GWES之窗口管理之基本构架原理 Android的窗口管理是C/S模式的.Android中的Window是表示Top Level等顶级窗口的概念.DecorView是Window的To ...
- 什么是边界扫描(boundary scan)?
边界扫描(Boundary scan )是一项测试技术,是在传统的在线测试不在适应大规模,高集成电路测试的情况下而提出的,就是在IC设计的过程中在IC的内部逻辑和每个器件引脚间放置移位寄存器(shif ...
- SendTextMessage如何打开记事本并显示指定内容
procedure TForm1.Button1Click(Sender: TObject); var hEdit: HWND; str: string; begin str := '准备要添加到记事 ...
- Android笔记——PreferenceActivity结合PreferenceFragment创建设置界面
1.创建类继承PreferenceActivity 2.该类必须重写OnBuildHeaders和isValidFragment方法. (1)OnBuildHeaders方法中使用lo ...