呵呵,才来这边两个多月,虽然这阵子心情不是很好,但也帮忙提交了两个PATCH了,以前在小公司,能用个SVN已经觉得挺不错了,现在才知道,这只是冰山一脚,大爷的,尤其是这个android的系统,要用到repo和git的工具。这也没什么奇怪的,其实就是多用用就好了。
repo,是对于整个工程来说的:
repo init -u git://android.intel.com/manifest -b platform/android/r3-stable -m android-r3 这个就是在建立repo,用ll .repo,会指向一个.xml的文件
repo sync 同步代码,也可以说是在拉代码
repo start peng1 --all //对于当前的项目,建立了一个peng1的分支,而且是对整个工程来说的
repo checkout peng1 // 切换到peng1的分支上
git 则好像就是repo 的儿子一样,是对其子项目来说的,
git log
git reset --hard
git revert
git show
git commit
git format-patch
不想仔细解释了,不会的,在多用用,查查就可以了。
我就来讲讲我提交patch的过程吧。虽然也不是什么有技术性的问题,但是能熟练的利用工具,也是对开发特有好处的。
1,在莫个分支上,我修改了里面的文件,此刻可以用git diff,看到我的修改内容。
2,把修改的文件最好保存一下,此刻要同步一下代码,git pull
3, 替换一下修改的文件,加标签,git commit -s . 后面的点很重要
4,git log -p 查看修改了什么
5,git format-patch -1 生成一个patch,git format-patch -2 ,嘻嘻,这个不用多说吧,就是生成两个PATCH
6,repo upload . 上传这个patch 后面的点很重要,每次都不记得,麻烦
这几次都会遇到一个问题:就是应为在revert某个patch时,有冲突,导致PATCH也没有拿掉,但又修改了,害我都不能checkout到其他的分支上,当你用repo checkout dv
它会告诉你那块有问题,于是到相应的目录,用git reset --hard HEAD^,呵呵,就可以了。
好了就这么多了
再加点:因为有时候打上patch
git commit -a -s
但是只修改patch文件的内容:
git commit --amend
查看drivers/tty/serial/mfd.c 2427行 是哪个patch对这个进行了修改
git blame -L 2474 drivers/tty/serial/mfd.c
b6c0f089 drivers/tty/serial/mfd.c (sathya 2011-10-24 18:38:14 -0700 2474) #ifdef CONFIG_PM_RUNTIME
b6c0f089 drivers/tty/serial/mfd.c (sathya 2011-10-24 18:38:14 -0700 2475) /* check if RPM suspend has been unlocked */
b6c0f089 drivers/tty/serial/mfd.c (sathya 2011-10-24 18:38:14 -0700 2476) if (atomic_read(&up->dev->power.usage_count) > 1
d844fe9c drivers/tty/serial/mfd.c (liu chuansheng 2013-01-25 18:43:12 +0800 2477) || up->dev->power.disable_depth > 0) {
d844fe9c drivers/tty/serial/mfd.c (liu chuansheng 2013-01-25 18:43:12 +0800 2478) dev_info(up->dev, "%s: rmp is active\n", __func__);
b6c0f089 drivers/tty/serial/mfd.c (sathya 2011-10-24 18:38:14 -0700 2479) return -EBUSY;
b6c0f089 drivers/tty/serial/mfd.c (sathya 2011-10-24 18:38:14 -0700 2480) }
git show b6c0f089 可以看到修改的代码
git log b6c0f089 也可以简单的查看PATCH