怎样向Android社区提交代码


注:[2014-3-13] 向android提交patch的方式已经更新,本文所叙述的方式不再完全匹配,请参考 
http://source.android.com/source/submit-patches.html

向开源社区贡献代码的方式很多,Android采用repo的方式。

由于在提交patch的时候,必须使用repo upload命令,所以,首先要安装repo在自己的项目中。安装repo在自己项目的步骤分两步:
1-1.
$ curl http://android.git.kernel.org/repo > ~/bin/repo
$ chmod a+x ~/bin/repo


1-2.然后把~/bin加入到PATH环境变量中,如果不加的话,用repo就需要全路径,比较麻烦,不管怎样,下面这一步是可选的:


$ export PATH=~/bin:$PATH


2.安装repo到自己的项目中,只有安装到自己项目中后,才可以使用repo,即使是repo help也不例外。


$ repo init -u git://android.git.kernel.org/platform/manifest.git


题外话:使用repo比使用git更麻烦,在教育网中,repo platform几乎是不能完成的任务,当然,可以使用git proxy,不过这种方法并不好使,一个简单且方便的方法是搞一个VPS 。


如果自己要提交的project没有在manifest管辖的范围内,那就需要自己去修改.repo/manifest.xml文件了。
比如,我要修改的Project项目名称是kernel/common,路径是kernel/common,而这个Project并没有在manifest.xml,所以在.repo/mainfest.xml文件中添加这么一行:

<project path="kernel/common" name="kernel/common/" />


然后运行repo sync去下载整个platform,整个platform的容量基本上2GB左右,如果没有必要下载那么多的项目,修改.repo/manifest.xml,只保留自己的项目就可以了。
比如,我只需要其中的platform/build项目,那么在.repo/manifest.xml中只保留<project path="build">的条目就可以了,更改.repo/manifest.xml修改为:



<?xml version="1.0" encoding="UTF-8"?>



<manifest>
<remote  name="korg"
fetch="git://android.git.kernel.org/"
review="review.source.android.com" />
<default revision="master"
remote="korg" />
<project path="build" name="platform/build">
<copyfile src="core/root.mk" dest="Makefile" />
</project>
</manifest>




在repo sync的时候,可能会弹出如下的错误:


error: revision master in kernel/common not found


这是因为,在manifest.xml中,默认的revision为master。因此,需要在相关的项目中设置revision。 例如:我需要kernel/common项目中的android-2.6.27分支,那么,应该在manifest.xml中写为:
<project path="kernel/common" name="kernel/common" revision="android-2.6.27"/>


repo sync完成后,进入相关的项目,建立一个分支,修改后,并提交.



例如,
$cd kernel/common #进入项目目录中
$repo start goldfish . #建立一个新的goldfish分支
$git checkout goldfish #切换到goldfish分支上
完成修改任务
$git add .
$git commit



Android社区要求提交的commit:



  • Start with a one-line summary (60 characters max), followed by a blank line.


  • The description should focus on what issue it solves, and how it solves it. The second part is somewhat optional when implementing new features, though desirable.


  • Include a brief note of any assumptions or background information that may be important when another contributor works on this feature next year.





然后就可以repo upload了,不过在upload的时候,需要在https://review.source.android.com/中注册并提交自己的ssh public keys.
提交完成ssh public keys后,就OK啦,成功后,会自动返回一个review。然后等待人工review,这一切,都可以在https://review.source.android.com 中看到。


友情提示:欢迎转载,转载请说明出处。如果有任何问题,欢迎批评,交流,指正。



<全文完>

评论

此博客中的热门博文

Linux/ARM Page Table Entry 属性设置分析

提交了30次才AC ---【附】POJ 2488解题报告

笔记