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 情景一:你正尝试从代码编 ...
随机推荐
- Linux Rsync
一.Rsync介绍 1.什么是Rsync Rsync 即Remote Rynchronization,是一款开源的.快速的.多功能的.可实现全量或增量的本地或者远程数据镜像同步复制.备份的优秀工具. ...
- HDU 4496 D-City(并查集,逆思维)
题目 熟能生巧...常做这类题,就不会忘记他的思路了... //可以反过来用并查集,还是逐个加边,但是反过来输出...我是白痴.....又没想到 //G++能过,C++却wa,这个也好奇怪呀... # ...
- C#中使用MySqlCommand执行插入语句后获取该数据主键id值的方法
.net中要连接mysql数据库,需要引用MySql.Data.dll文件,这文件在mysql官网上有下载. 接着通过MySqlCommand执行插入语句后想要获取该数据主键id值的方法如下: lon ...
- group_concat
分割字符串 group_concat(a.EvidencesID separator ',') as EvidencesID #在MySQL配置文件(my.ini)中默认无该配置项,使用默认值时,值为 ...
- Linux网络编程9——对TCP与UDP的简易封装2.0
具体生成动态库的操作及使用该动态库的操作请参见上篇博文.以下仅仅列出改进版本的代码. 代码 my_socket.h #ifndef __MY_SOCKET_H__ #define __MY_SOCKE ...
- UVA 10943 How do you add? DP
Larry is very bad at math — he usually uses a calculator, whichworked well throughout college. Unfor ...
- zend studio10破解
http://blog.csdn.net/qq1355541448/article/details/16807429
- No ResultSet was produced
遇到的详细问题: 出现了No ResultSet was produced的异常,但数据是成功插入, 大致判断异常发生在执行插入操作后,检查代码. 解决方案: 通常在executeQuery(sql) ...
- android-exploitme(一):生成apk
exploitme是一个国外的android安全测试环境,http://securitycompass.github.io/AndroidLabs/index.html,通过它可以学习一些基本的测试方 ...
- Java笔记——JavaMail发送邮件
1.JavaMail概述 Java Mail是由SUN公司提供的专门针对邮件的API,主要Jar包:mail.jar.activation.jar. ======================== ...