在GitHub上forklinux的项目
克隆fork之后的linux到本地
1git clone https://github.com/[username]/linux.git(可选)对于已克隆到本地的项目,要让fork的项目和原项目保持同步,使用以下指令更新本地和远端项目
1234cd path/to/repogit fetch --allgit merge [original_repo_name]/mastergit push -u origin定位缺陷
在bugzilla提交缺陷。首先要确定缺陷发生的文件隶属于哪个产品,Summary要写清楚缺陷位置及内容,如200511中写道
Potential NULL pointer dereference when kzalloc() fails in drivers/clk/pxa/clk-pxa.c
;在Description位置适当加上详细的描述,包括具体位置、为什么这是一个缺陷可附上一小段代码片段。(可选)新建分支用于修改代码
1git checkout -b [new_branch_name]修复缺陷,保存
提交修改
12git add [modified_files]git commitcommit message一般包含两部分:
- title:用简短的话说明本次修改的内容,一般格式为:
[file_name]: do something
。如#6585中写道ssl/statem/statem_srvr.c: add missing check for EVP_PKEY_get0_DH()
。 - body:解释本次修改的原因,如果修复了某个issue,使用
Fixes #[issue_ID]
来引用。
- title:用简短的话说明本次修改的内容,一般格式为:
(可选)push commit
1git push
与OpenSSL不同的是,linux并非通过pull request来提交贡献,而是通过git patch的方式来提交,下面介绍如何生成并提交patch。
接上面第8步(如果需要生成git patch的话,仅在本地有commit即可,不需要推送到远端),使用
git format-patch
即可生成patch文件,如果仅有一个commit需要patch的话使用git format-patch -1
即可。指令生成若干0001-*.patch
文件。linux提供了一个获得patch对应维护者的脚本
scripts/get_maintainer.pl
,在linux根目录下使用1./script/get_maintainer.pl [patch_file]即可获得维护者邮箱地址
将patch使用
git send-email
发送至相应维护者的邮箱,使用以下指令1git send-email [patch_file] --to=maintainer@email如果是第一次使用
git send-email
的话,需要进行设置,打开~/.gitconfig
并在最后加上下面的设置123456[sendemail]smtpserver = [mailserveraddr]smtpserverport = 587smtpencryption = tlssmtpuser = [user@mailserveraddr]from = name