/*****************************************************************************
* 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的更多相关文章

  1. Linux之旅(1): diff, patch和quilt (下)

    Linux之旅(1): diff, patch和quilt (下) 2 quilt 我们自己的项目能够用cvs或svn管理所有代码.但有时我们要使用其它开发人员维护的项目.我们须要改动一些文件,但又不 ...

  2. Linux游(1): diff, patch和quilt (下一个)

    Linux游(1): diff, patch和quilt (下一个) 2 quilt 我们自己的项目可以用cvs或svn管理所有代码.但有时我们要使用其它开发人员维护的项目.我们须要改动一些文件.但又 ...

  3. 【转】Linux下patch打补丁命令

    [转]Linux下patch打补丁命令 转自:http://www.cnblogs.com/noaming1900/archive/2010/10/28/1863282.html 此命令用于为特定软件 ...

  4. Linux下patch打补丁命令

    此命令用于为特定软件包打补丁,他使用diff命令对源文件进行操作. 基本命令语法: patch [-R] {-p(n)} [--dry-run] < patch_file_name p:为pat ...

  5. linux命令: patch

    一. 针对单文件的patch: 我们以mkprj.sh.1和mkprj.sh两个文件为例: [root@localhost tst]# lsmkprj.sh.1  mkprj.sh 看两个文件的差异: ...

  6. linux下patch命令使用详解---linux打补丁命令

    http://blog.csdn.net/pashanhu6402/article/details/51849354 语 法:patch [-bceEflnNRstTuvZ][-B <备份字首字 ...

  7. 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 ...

  8. git diff与linux diff的输出格式之unified format

    前言 前面有一篇文章<一个有些意思的项目--文件夹对比工具(一)>,里面简单讲了下diff算法之--Myers算法. 既然是算法,就会有实现,比如git diff中有Myers的实现,gi ...

  9. diff patch

    http://rails-deployment.group.iteye.com/group/wiki/1318-diff-and-patch-10-minutes-guide 情景一:你正尝试从代码编 ...

随机推荐

  1. codeforces 459C Pashmak and Buses(模拟,组合数A)

    题目 跑个案例看看结果就知道了:8 2 3 题目给的数据是 n,k,d 相当于高中数学题:k个人中选择d个人排成一列,有多少种不同的方案数,列出其中n中就可以了. #include<iostre ...

  2. POJ 2001

    #include<iostream> using namespace std; ; struct trienode { trienode * next[kind]; int branch; ...

  3. HDU 2571 命运 动态规划

    命运 http://acm.hdu.edu.cn/showproblem.php?pid=2571 Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到, ...

  4. iOS多线程的初步研究(七)-- dispatch对象

    谈起iOS的dispatch(正式称谓是Grand Central Dispatch或GCD),不得不说这又是iOS(包括MacOSX)平台的创新,优缺点这里不讨论,只有当你使用时才能真正体会到.我们 ...

  5. sql server 存储过程,事务

    1.存储过程,事务 CREATE PROCEDURE Proc_ceshi @id int, ), @returnval int output AS BEGIN SET NOCOUNT ON; Set ...

  6. GridControl的列显示成图片+文字,并且不同的文字对应不同的图片

    public static void SetDispatchStatus(GridView aGridView1, GridColumn aColStatus, bool aOnlyImage) { ...

  7. JS中的内部类

     js内部类 javascript中本身有提供一些可以直接使用的类,这种类就是内部类.主要有:Object.Array.Math.Boolean.String.Number.Date.RegExp. ...

  8. MongoDB 安装,启动与基本使用

    一.MongoDB简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++ ...

  9. Spring框架学习之第5节

    request session global-session 三个在web开发中才有意义 如果配置成prototype有点类似于request 如果配置成singleton有点类似于web开发中的gl ...

  10. Mysql笔记——触发器简单实例

    首先贴上触发器语法吧: CREATE TRIGGER <触发器名称> –触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. { BEFOR ...