openstack git

前面一篇基本上平时使用git时会遇到的操作都涵盖了,其他的遇到时再补充,对应实际的openstack开发,还需要有几个东西要了解。

1. launchpad

2. git review

进行openstack的开发,首先需要一个launchpad的账号, 什么是launchpad呢,launchpad我理解是一个社区,这里有很多开源项目,也进行代码的托管发布,各个组织

在这里建立圈子,通过提交bug,blueprint或者修复并提交bug,review别人的code等来提高自己的影响力,只有注册的用户才可以提交bug并review code。

如何区分code是谁提交的呢?有两点:

1. 账号中需要配置PGP key,可以用PGP加密提交的内容;

2. 配置ssh 的public key,只有将提交代码的节点的rsa key加入到launchpad的ssh列表中,才可以顺利提交code


一旦launchpad账号搞定,这时你想参与openstack中nova的开发,那么提交bug,或者发现别人的bug之后,把bug assign给自己,然后根据前面一篇的内容,

chenkout bug分支,进行开发,执行commit -a -amend之后,如果你直接push,会报错不能成功,为什么呢?

openstack这么大的工程,每个人都随意push,还不乱了,必须要被项目的administrator级别的人approve了之后才能正式进到对应的分支,

因此对我们普通开发人员来说“git review”,就相当于把我们的code提交到gerrit分支,一旦提交之后,使用launchpad登录,就可以看见自己提交等待review的内容,

只有review通过提交的才算数。

配置git review的时候一直不成功,搞了很久,成功的步骤为(mark link 1中给出了三种方式,还是第三种靠谱):

1.报错“ We don't know where your gerrit is. Please manually create a remote named "gerrit" and try again. ”

执行: git remote add gerrit ssh://[email protected]:29418/openstack/openstack-xxx.git

有时候review.openstack.org开放的默认端口29418会被墙掉,使用ssh怎么也无法成功,

总是“ssh: connect to host review.openstack.org port 29418: Network is unreachable”

2.git remote set-url gerrit https://username:[email protected]/openstack/nova.git

之后执行git review即可


开源项目的开发,开源社区的自由是相对的,也是拉山头的,需要个每个项目的PTL搞好关系,不然你提交的东西,人家不同意,你也没办法,除了提交的code

要保证正确通过测试之外,还需要符合整个项目的发展方向,你向nova中提交完全不相干的东西,当然不能过。

有了前面很多章节的内容和这两节的git使用,openstack 开发就能玩起来了


学习如何在openstack中使用git的地址为:

http://docs.openstack.org/infra/manual/sandbox.html#sandbox

如果我们已经使用git commit  /git review 提交过code进行review,然后发现review没有通过,需要改动,应该怎么办呢?

登陆launchpad之后,在https://review.openstack.org中找到My->Changes->找到对应的提交->点击链接 找到change_id的页面查看详情

然后在对应的Patch Set -> Download -> checkout地址,复制下来,在本地的git 工程目录下粘贴并运行。

此时会发现多了一个branch :(detached from FETCH_HEAD)

这个表示HEAD指针指向的是具体的commit,不是某个branch,我们可以在分支中继续操作,修改,commit,review等,

review完之后可以看到branch变成:(detached from 83c7af5),此时如果我们使用 “git checkout master” 切换分支,会提示:

我们使用 git branch new_branch_name 6e72ee5,将detached 的分支变成真正的分支,按照所提示运行命令,就多了真正的一个分支,

之后关于此分支的开发就能直接 “git checkout new_branch_name” 切换到该分支后进行。


对于同一个bug或spec或其他的分支,提交code时候使用 “git commit -a --amend”, 而不要使用 “git commit -a”, 否则commit之后同一个问题,会变成

有两个review的分支,造成麻烦

同时填写comment的时候,一定要让Change-Id放在最后一行,否则会报错,同时“git commit -a --amend” 可以多次运行并进行修改,只要在git review

提交之前即可.


btw:使用eclipse进行开发,直接git下来的项目可能权限不对,一般直接设为777, 这样使用 “git status”时就会发现,所有的文件都被modified了,

这是因为git 默认把对文件权限的变化也算成一种改变,大部分case这种变化没什么用,因此我们用:

“git config core.filemode false”

将对文件权限的改变检测去掉, 同时因为导入eclipse引起一些添加的文件比如 .project等是因为eclipse工程而系统生成的,这时会发现,加了.gitignore

之后始终有:

modified:   .gitignore

虽然影响不大,但看起来还是比较别扭,可以使用:“git update-index --assume-unchanged .gitignore” 去掉该项,这样使用 “git status” 就看到的是真正的

我们自己的变化了。


tips: 如果发现master分支已经发生变化,自己的分支需要使用master分支的内容,这时需要在review页面找到最新的patch,点击rebase 按钮,

之后再重新拉取最新的code,然后修改提交,若直接使用命令行中git rebase master,提交时会报错“you are not allowed to upload merges”



mark link

http://kiwik.github.io/openstack/2014/08/26/git-review%E6%8F%90%E4%BA%A4%E4%BB%A3%E7%A0%81%E5%A4%B1%E8%B4%A5%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95/

http://www.ibm.com/developerworks/cn/cloud/library/cl-contributecode-openstack/

你可能感兴趣的:(openstack git)