参数生成。而且,请使用 '-p' 参数,那样会显示每个改动所在的C函数,使得
产生的补丁容易读得多。补丁应该基于内核源代码树的根目录,而不是里边的任
何子目录。
-为一个单独的文件创建补丁,一般来说这样做就够了:
+为一个单独的文件创建补丁,一般来说这样做就够了::
SRCTREE= linux-2.6
MYFILE= drivers/net/mydriver.c
diff -up $SRCTREE/$MYFILE{.orig,} > /tmp/patch
为多个文件创建补丁,你可以解开一个没有修改过的内核源代码树,然后和你自
-己的代码树之间做 diff 。例如:
+己的代码树之间做 diff 。例如::
MYSRC= /devel/linux-2.6
对于小的补丁,你也许会CC到 Adrian Bunk 管理的搜集琐碎补丁的邮件列表
(Trivial Patch Monkey)trivial@kernel.org,那里专门收集琐碎的补丁。下面这样
的补丁会被看作“琐碎的”补丁:
+
文档的拼写修正。
修正会影响到 grep(1) 的拼写。
警告信息修正(频繁的打印无用的警告是不好的。)
"sign-off" 是在补丁的注释的最后的简单的一行文字,认证你编写了它或者其他
人有权力将它作为开放源代码的补丁传递。规则很简单:如果你能认证如下信息
:
- 开发者来源证书 1.1
- 对于本项目的贡献,我认证如下信息:
+开发者来源证书 1.1
+^^^^^^^^^^^^^^^^^^
+对于本项目的贡献,我认证如下信息:
+
(a)这些贡献是完全或者部分的由我创建,我有权利以文件中指出
的开放源代码许可证提交它;或者
(b)这些贡献基于以前的工作,据我所知,这些以前的工作受恰当的开放
丁。用户将希望通过 google 来搜索"一句话概述"来找到那些讨论这个补丁的文
章。
-一些标题的例子:
+一些标题的例子::
Subject: [patch 2/5] ext2: improve scalability of bitmap searching
Subject: [PATCHv2 001/207] x86: fix eflags tracking
在头文件里,有条件地定义 "static inline" 函数,或者宏,在代码里用这些东
西。让编译器把那些"空操作"优化掉。
-一个简单的例子,不好的代码:
+一个简单的例子,不好的代码::
dev = alloc_etherdev (sizeof(struct funky_private));
if (!dev)
清理后的例子:
-(头文件里)
+(头文件里)::
+
#ifndef CONFIG_NET_FUNKINESS
static inline void init_funky_net (struct net_device *d) {}
#endif
-(代码文件里)
+(代码文件里)::
+
dev = alloc_etherdev (sizeof(struct funky_private));
if (!dev)
return -ENODEV;
Linus Torvalds's mail on the canonical patch format:
<http://lkml.org/lkml/2005/4/7/183>
---