Bazaar 版本控制工具

新的开发是基于Lauchpad.net上的Bazaar进行的,取代了以前的Subversion。Bazaar的分布式模型提供了更多的灵活性。你可以在https://code.launchpad.net/~openerp找到我们的分支。

Explanation of directories:

在launchpad上创建了两个团队

  • OpenERP质量团队 —> 他们可以提交到:

    • lp:~openerp/openobject-addons/4.2

    • lp:~openerp/openobject-addons/trunk

    • lp:~openerp/openobject-addons/4.2-extra-addons

    • lp:~openerp/openobject-addons/trunk-extra-addons

    • lp:~openerp/openobject-bi/trunk-addons

    • lp:~openerp/openobject-bi/trunk-cli

    • lp:~openerp/openobject-bi/trunk-client-web

    • lp:~openerp/openobject-client/4.2

    • lp:~openerp/openobject-client/trunk

    • lp:~openerp/openobject-client-web/4.2

    • lp:~openerp/openobject-client-web/trunk

    • lp:~openerp/openobject-server/4.2

    • lp:~openerp/openobject-server/trunk

  • OpenERP提交者(OpenERP-commiter) —> 可以提交到:

    • lp:~openerp/openobject-addons/4.2-extra-addons

    • lp:~openerp/openobject-addons/trunk-extra-addons

在这个组中,我们包括一些我们的合作伙伴以业绩被择优选择。

  • 贡献者 —> 可以提交到:

    • lp:~openerp-community

How can I be included in OpenERP-commiter team ?

想要要成为一个提交者,贡献者必须展示其在OpenERP项目的工作兴趣,并有能力做正确。可以通过提出bug修复,功能需求在我们的 bug跟踪系统 系统。您甚至可以提出额外的模块/或功能在我们的 bug跟踪系统 系统。

How can I suggest some additional modules or functionality ?

为了创建额外的模块或者功能并且整合到项目中:

  1. 在launchpad打开一个分支

  2. 通过你的新分支,报告和建议到我们的 bug追踪(bug tracker ) 系统(有两种方式:在Bug组报告Bug,或者在蓝图(blueprint)组提交想法、功能)

  3. 等待质量团队的批准

或者功能组批准你的工作成果,合并到官方分支(像在 bug追踪(bug tracker ) 一节中解释的一样),或者他们会在合并前拒绝你提交的内容,要你改进你的工作,然后再合并到官方分支。

安装 Bazaar

取得Bazaar版本控制,从Launchpad拉源代码。

要在任何的Ubuntu分发版本安装bazaar,首先要编辑 /etc/apt/sources.list ,使用的命令是

  1. sudo gedit /etc/apt/sources.list

输入下列几行内容:

  1. deb http://ppa.launchpad.net/bzr/ubuntu intrepid main
  2. deb-src http://ppa.launchpad.net/bzr/ubuntu intrepid main

接下来要做的

  1. sudo apt-get install bzr

为了能够正常使用,bzr版本至少要为 1.3。 使用这个命令来确认:

  1. bzr --version

如果你有旧的版本,检查这个 url: http://bazaar-vcs.org/Download网络位置,在任何的debian发布版本,1.5版本都可正常使用,你可以在 url: http://backports.org/debian/pool/main/b/bzr/bzr_1.5-1~bpo40+1_i386.deb 网络位置获得1.5版

当你遇到关于 Bazaar 的使用问题前, 请参阅 Bazaar 版本控制的常见问题(F.A.Q) .

快捷参考

这是官方、以及推荐的参与贡献OpenERP和OpenObject的方式。

获取最新源码及创建你自己的OpenERP分支,可以按下面的命令操作:

  1. bzr branch lp:openerp
  2. cd openerp
  3. ./bzr_set.py

这些命令将下载运行 OpenERP 的所有的源码包含(server, client, addons), 接下来,将 addons 文件夹软链到 server addons 文件夹下,就可以直接使用 addons 中的所有业务模块了. 现在你可以修改 bzr_set.py 中代码源为你本地地址, 并可以开始编辑代码, 提交代码到你自己的本地代码分支.

  1. EDIT addons/account/account.py
  2. cd addons
  3. bzr ci -m "Testing Modifications"

当您的代码足够好了,并且按照 编码指南 的规范,您可以上传您的分支到launchpad。首先,您必须得创建一个launchpad的帐号,注册您的公钥,订阅 openerp-community https://launchpad.net/~openerp-community 这个组。然后您就可以上传您的分支了。假如您想上传您的插件

  1. cd addons
  2. bzr push lp:~openerp-community/openobject-addons/YOURLOGIN_YOURBRANCHNAME
  3. bzr bind lp:~openerp-community/openobject-addons/YOURLOGIN_YOURBRANCHNAME

做完这些后,您的分支是在公共Launchpad中,在 `OpenObject 项目https://code.launchpad.net/openobject`_,提交者可以对其进行处理,审查,并提出集成到官方分支。最后一行允许您重新绑定您的分支来决定哪个到Launchpad,在做完这之后,您的提交会直接应用到Launchpad(除非您使用``—local`` 参数):

  1. bzr pull # Get modifications on your branch from others
  2. EDIT STUFF
  3. bzr ci # commit your changes on your public branch

如果你是针对某个公开BUG的修正提交,你可以在提交给你自己分支的时候提交一个bug的ID标记:

  1. bzr ci --fixes=lp:453123 # Where 453123 is a bug ID

当你的分支足够成熟,在lauchpad的web界面上标记为成熟,并要求合并到官方的发布版本。你的分支会被一个委员会审议,其后质量组将会将其合并到官方的发布版本。

怎么获取最新的代码

从下面的源码仓库(Repository)克隆(Clone)出源码:

  1. bzr clone lp:~openerp/openobject-server/trunk server
  2. bzr clone lp:~openerp/openobject-client/trunk client
  3. bzr clone lp:~openerp/openobject-client-web/trunk client-web
  4. bzr clone lp:~openerp/openobject-addons/trunk addons

如果你还想获取其他的扩展插件(extra-addons)仓库,在命令行中输入下面的命令

  1. bzr clone lp:~openerp-commiter/openobject-addons/trunk-extra-addons extra-addons

在各个文件夹下面执行下面的命令(非root用户需要加sudo):

  1. python2.5 setup.py build
  2. sudo python2.5 setup.py install

服务器的—init=all 初始化参数貌似在当前开发版中失效了

推荐使用 GTK客户端(gtk-client)来创建新的帐套。浏览器(web-client)有时候创建帐套会出错。(OpenERP 7.0 以后推荐直接使用 浏览器 管理帐套)

使用下面的命令启动OpenERP server:

  1. ./openerp-server.py --addons-path=~/home/workspace/stable/addons

bin/addons 目录是默认插件目录,它可以被 ~/home/workspace/stable/addons 覆盖。如果一个插件存在于 bin/addons 和在 ~/home/workspace/stable/addons (客户路径)一样好,后面的此插件版本就会优先考虑放到 bin/addons (默认路径)

怎样提交你的成果

如果你想为OpenERP以及OpenObject贡献,可以按下面的方法进行:

  • 在launchpad上你关注的项目创建你的分支。在launchpad上创建你的分支,而不是在你的本地系统中创建,这是非常重要的,只有这样我们才能够比较容易地合并、在不同的项目之间分享代码,并集中进行特征的开发工作。

  • 在您的launchpad分支您开发您自己的功能或者bug修复.不要忘记在您的分支设置状态(新建,实验,开发,成熟,…)这样捐助者就能判断是否能使用这些代码。

  • 当您的功能代码完成并测试好后,您就可以将该分支提出合并申请

  • 您的工作会由提交者团队的成员进行评估。

    • 如果他们接受了你的分支整合到官方版本,他们将会提交给质量组,质量组将会评审和合并到官方分支。

    • 如果委员会拒绝了你的分支,他们会解释为什么,使你便于重新检视代码以适应指导准则(避免将来的迁移可能存在问题)

额外扩展分支, 它存储所有的扩展模块,可以直接访问所有的开发者,如果您是一个开发者,您可以直接在这个分支上工作并且提交您自己的工作。这个分支不需要品质小组验证。您可以在那里为您的客户放置您特别的模块。

如果想要提议或者开发新的模块,我们建议在 openobject-addons project 创建你自己的分支,然后在你自己的分支上进行开发。你可以填写bug(报告)来要求,这样你的模块会在一个户两个分支中被整合:

我们邀请我们所有的合作伙伴和参与者以这种方式工作,让我们可以很容易地集成和共享不同项目之间所完成的工作。

案例

本页描述了你应该遵循的,应该如何参与OpenObject的贡献的一些方法。假设你想要开发一个新特性的模块(插件),或者只是想要去简单修复一些程序问题(bug)。

如果您有权限去修改您计划修改的分支,您可以直接去做。例如,一个优秀的团队在主分支上直接修正了bug(错误)。或者一个核心提交者可以直接在extra-addons上工作。如果您没有权限去修改您计划修改的分支或者您想做一个可能会破坏代码的大的开发项目,第一件事就是分支您计划修改的版本:

  1. bzr branch lp:openobject-addons lp:~openerp-commiter/openobject-addons/trunk-new-reporting

在这种情况下,将是为OpenERP-提交者团队建立的分支。如果您不是提交者,您可以为OpenERP社区或只是为自己创建分支,这取决于如果您是否让别人直接提交您的分支。对于所有微小的员工,我们都建议为OpenERP-提交者团队创建分支。一个OpenERP服务公司可能会创建一个团队为他们的公司和他们的团队的名称建立分支,这样可以防止别人改变他们的客户分支。

分支创建完毕后,就可以在本地检出(checkout)后开始使用了:

  1. bzr co lp:~openerp-commiter/openobject-addons/trunk-new-reporting

这将下载指定的分支到你的本地电脑。你就可以在此基础上开始你的开发工作了。记得及时提交你完成的工作:

  1. bzr ci

这样你的修改就会被发送到: lp:~openerp-commiter/openobject-addons/trunk-new-reporting 分支。不要忘记在 https://code.launchpad.net/~openerp-commiter/openobject-addons/trunk-new-reporting 修改分支的状态,告诉其他的参与者你的工作目前的状态。

比如,你能够切换状态到“开发中”说明你还在开发中,或者当你想要把你的代码集成到官方版本时,设置为“成熟”。

在开发过程中,如果你想要收到关于上级分支的最后修改信息,并合并他:

  1. bzr merge

一旦你在这个分支开发已经完成,你可以要求委员会来审查并合并,或者在bug追踪中填写并报告bug。一个委员会将会审查你的工作,当你的代码足够好的话 ,就会合并到官方分支。

提交指南

在您提交你的贡献到 Launchpad 时,请您一定遵循以下规则:

稳定分支用于修正bug

稳定分支必须是用于bug修复。 仅用于bug修复(Only bugfixes)

新特征(+ 该新功能的bug修复) 必须在trunk分支中完成。

注解

我们将阶段性的从稳定版向trunk版本移植所有的修复。

如果与委员会的名称不同的话,会设定作者的姓名。

始终设置作者的姓名,如果它和提交者不同。没有他/她的姓名在提交者信息里,便不会接受所有的贡献工作的提交。我们不得不尊重他们和他们的工作,当从社区合并工作或者修补功能时所以请使用 --author=”“。

  1. e.g: bzr commit --author="<author_name>"

写上有用的提交信息

提交时,在 每一次 提交信息中,使用下面的推荐 提交标记(commit tag)

  • [IMP]

  • [FIX]

  • [REF]

  • [ADD]

  • [REM]

[IMP]:

用于改进

[FIX]:

用于bug修复

[REF]:

对于重构(在不改变功能或行为前提下的源代码的改进。有关进一步详情,请参阅http://en.wikipedia.org/wiki/Refactoring)

[ADD]:

用于增加资源

[REM]:

用于删除资源

  • 记得写下有意义的提交注解。提交信息应该包括模块名,信息本身还要能够解释对模块进行的改变。不要使用诸如 “bug修复” or “改进” 之类的描述(类似单个词汇的提交注释仅限于“合并”)!

  • 如果使用 --fixes=lp: 修复bug,而不是使用委员会的信息中的编号。

  • 在提交信息中引用一个修正时,使用修正识别号(id)取代版本号码。你可以用命令 bzr version-info 命令取得该修正识别号(id)。

  1. e.g:
  2. Not Correct : bzr commit -m “[FIX]: reverted bad revision (cannot install new db)
  3. with revision number:525425
  4. Correct : bzr commit -m “[FIX]: reverted bad revision (cannot install new db)
  5. with revision number id: qdp@tinyerp.com-20090602143202-ehmntlift166mrnn
  6. Not Correct : bzr commit -m "Bug 568889 : typo corrected"
  7. Correct : bzr commit --fixes=lp:568889 -m "[FIX] account module: typo corrected"

注解

如何进行翻译

在翻译包含在po文件中的信息时,使用 [IMP]

如果你使用新的po文件,请使用 [ADD]

避免大提交

不要去做会影响多个模块的提交。试着将影响不同的模块分割成不同的提交(当我们单独恢复模块时这会很有帮助)。