to be a janitor(2)

kernel hacking的准备工作还是比较复杂的,特别是对于像我这种windows guy,手笨,命令参数快捷键也记不住的人。所以,还是要仔细阅读下面的链接,按照步骤一步一步的做一遍

https://kernelnewbies.org/FirstKernelPatch

https://kernelnewbies.org/OutreachyfirstpatchSetup?action=show&redirect=OPWfirstpatchSetup


订阅邮件列表之后,继续按照newbies里面的步骤进行准备

1, vim 插件

我安装了ctags,cscope,NERDTree,winmamager,omnicomplete等几个插件。

ctags使用命令ctags -R --C-kinds=+p --fields=+aS --extra=+q,否则omnicomplete找不到到patter,不知何故。

cscope -Rbkq

对我来讲,基本够用了


to be a janitor(2)


不过,我还是安装了wine和sourceinsight,以备不时之需。


2,IRC

xchat不知为什么在ubuntu软件中心找不到,我下载了kvirc,用着也还可以。

输入

/server irc.oftc.net,

/join #kernelnewbies

可以开始和其他的newbies交流了。我和一些人聊了几句,他们告诉我janitor这个项目基本已经死了。我想后面搭建好环境之后,看开staging里面有没有可以参与的项目。


3,git hook

以前没用过,我理解大概意思是在git某一个操作,根据hook的类型,在或前或后加上hook脚本里的操作。kernel开发要求使用checkpatch.pl来检查codes style,为了简便,在.git/hook中加入脚本post-commit,这样在git commit之后就可以直接运行checkpatch.pl来对patch进行检查。


post-commit内容如下:

#!/bin/sh
exec git show --format=email HEAD | ./scripts/checkpatch.pl --strict --codespell

把post-commit拷贝到.git/hook中,然后修改文件属性

chmod a+x .git/hooks/pre-commit
同时还要安装codespell

apt-get install codespell

这样,git-commit之后就可以看到codestyle是否有错误信息了。如果没有使用hook,可以直接运行上述命令,或

perl scripts/checkpatch.pl -f drivers/staging/android/* | less


4, git常用命令

1)修改文件

2)git add filename 

  git diff --cached可以查看修改

3)git commit -s -v

4)git commit --amend 

  修改comments就直接使用该命令,修改代码还要做git add

  ctrl O, enter.  ctrl X enter完成操作

  git show --pretty=oneline --abbrev-commit HEAD查看修改

5)git format-patch -o ~/patches/ HEAD^  --subject-prefix="PATCH v2"

  生成patch文件,--subject-prefix="PATCH v2"用于第二次review后的修改


5,发送patch

原本准备使用evolution,但格式上还是有些问题,尝试了一下mutt和esmtp, 还有git email,发邮件可以,其他操作就不会了。

1)mutt/esmtp

sudo apt-get install esmtp
sudo apt-get install mutt


home目录下创建.esmtprc,添加如下内容

identity "[email protected]"
hostname smtp.gmail.com:587
username "[email protected]"
password "ThisIsNotARealPassWord"
starttls required 

home目录下创建.muttrc,添加如下内容

set sendmail="/usr/bin/esmtp"
set envelope_from=yes
set from="Your Name <[email protected]>"
set use_from=yes
set edit_headers=yes

然后,运行命令mutt -H ~/patches/0001-staging-test-for-committing-my-first-patch.patch,发给自己,可以收到而且格式看起来正确。

(patchset还需要看开,回复使用evolution,但回复有星期几变成了汉字,回头看开怎么消除)

2)使用git send-email

首先安装sudo apt-get install git-email

然后在.gitconfig里增加

[sendemail]
   smtpserver = /usr/bin/esmtp

然后运行

git send-email ~/patches/0001-staging-test-for-committing-my-first-patch.patch

根据提示输入收件人信息,然后发送,OK。


注:使用下面命令可以查看这个patch需要发给谁。

git show HEAD | perl scripts/get_maintainer.pl --separator , --nokeywords --nogit --nogit-fallback --norolestats --nol


基本上配置工作完成了,patchset还需要再看开怎么组织和发送,还有不会使用mutt回复邮件和讨论问题,需要借助evolution。