Навигация

Оглавление

Versions

This is the documentation for older versions of Odoo (formerly OpenERP).

See the new Odoo user documentation.

See the new Odoo technical documentation.

Bazaar, система контроля версий

Новый процесс разработки использует Bazaar на launchpad.net вместо 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 --> Они могут утверждать изменения в этих ветвях:

    • 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, и проявить способности делать это правильно, так как отбор в эту группу производиться по уровню навыков. Это может быть предложение исправления ошибки, функционал, запрошенный через нашу систему отслеживания ошибок. Вы можете даже предложить дополнительные модули или функционал, пользуясь системой отслеживания ошибок.

How can I suggest some additional modules or functionality ?

Для создания дополнительных модулей или функционала, и включения их в проект, нужно проделать следующее:

  1. открыть ветвь на Launchpad

  2. направить отчёт о создании ветви и примерный путь решения проблемы в систему отслеживания ошибок (есть два пути : отчёт об ошибке и набросок идеи / функционала)

  3. дождаться утверждения командой контроля качества

Или команда контролья качества утвердит вашу работу и объеденит её с официальной ветвью (как объясняется в разделе Отслеживание ошибок), или они отклонят её и попросят улучшить перед тем как объединять её с нашей официальной ветвью.

Установка Bazaar

Установите систему контроля версия Bazaar, чтобы получать исходный код из Launchpad.

Чтоб установить bazaar на любой дистрибутив ubuntu, вы можете отредактировать /etc/apt/sources.list с помощью

sudo gedit /etc/apt/sources.list

и добавить в него эти строки:

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

Затем, проделайте следующее

sudo apt-get install bzr

Для правильной работы, версия bzr должна быть не ниже 1.3. Проверьте с помощью команды:

bzr --version

Если у вас нет как минимум версии 1.3, можете получить её по этой ссылке: http://bazaar-vcs.org/Download В Debian, в любом дистрибутиве, работает версия 1.5, которую вы можете получить по ссылке: http://backports.org/debian/pool/main/b/bzr/bzr_1.5-1~bpo40+1_i386.deb

Если у вас возникли проблемы с Bazaar, пожалуйста, прочитайте ЧаВо про систему контроля версий Bazaar перед тем как задавать вопросы.

Краткие итоги

Это официальный рекомендуемый путь участия в проектах OpenERP и OpenObject.

Чтобы получить последнюю версию исходных кодов, сделайте следующее:

mkdir openerp
cd openerp
bzr branch lp:~openerp/openobject-server/trunk server
bzr branch lp:~openerp/openobject-addons/trunk addons
bzr branch lp:~openerp-commiter/openobject-addons/trunk-extra-addons addons-extra
bzr branch lp:~openerp-community/openobject-addons/trunk-addons-community addons-community
bzr branch lp:~openerp/openerp-web/trunk web
bzr branch lp:~openerp/openobject-client/trunk client
bzr branch lp:~openerp-community/openobject-doc/6.1 doc

Эта команда скачает все компоненты openerp (сервер, клиент, дополнения) и создаст ссылки на модули в дополнениях вашего сервера, чтобы вы могли использовать их напрямую. Вы можете изменить файл bzr_set.py чтобы более точно указать, что требуется загружать. Теперь вы можете редактировать код и фиксировать изменения в вашей локальной ветви.:

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

Как только ваш код будет в достаточной степени соответствовать документу Руководство по программированию, вы можете опубликовать вашу ветвь на launchpad. Возможно, вам понадобится создать учётную запись на launchpad для начала, зарегистрировать ваш публичный ключ, и вступить в команду openerp-community. Теперь, вы можете опубликовать вашу ветвь. Предположим, вы хотите опубликовать ваши дополнения:

cd addons
bzr push lp:~openerp-community/openobject-addons/YOURLOGIN_YOURBRANCHNAME
bzr bind lp:~openerp-community/openobject-addons/YOURLOGIN_YOURBRANCHNAME

Как только вы всё это проделаете, ваша ветвь будет общедоступна на Launchpad в проекте OpenObject, и коммиттеры смогут работать с ней, проверять её и предлагать к объединению с официальной ветвью.Последняя строчка позволяет вам запомнить расположение вашей ветви на launchpad. После этого действия, ваши команды фиксации будут применяться напрямую к коду, находящемуся на launchpad (если только вы не используете параметр --local):

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

Если внесённые вами изменения исправляют общедоступную ошибку, описанную на launchpad, следующей командой можно отметить, что ваша ветвь исправляет эту ошибку:

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

Как только ваша ветвь "созрела", переведите её в состояние "Mature" в веб-интерфейсе, и направьте запрос на объединение с официальным релизом. Ваша ветвь будет проверена коммиттером и затем командой контроля качества, чтобы объеденить ей с официальным релизом.

Как получить последний исходный код главной ветви

Сделайте копию каждого репозитория:

bzr clone lp:~openerp/openobject-server/trunk server
bzr clone lp:~openerp/openobject-client/trunk client
bzr clone lp:~openerp/openobject-client-web/trunk client-web
bzr clone lp:~openerp/openobject-addons/trunk addons

Если вы хотите сделать копию репозитория extra-addons, вы можете выполнить эту команду:

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

запустите установочные скрипты в соответствующих каталогах:

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

В настоящее время процедура инициализации сервера с параметром --init=all заполняющая базу данных не работает в основной ветви.

Рекомендуется создавать новую базу данных через gtk-клиент. Пока вы этого не сделаете, веб-клиент работать не будет.

Запустите сервер OpenERP примерно такой командой:

./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. Не забывайте установить статус для вашей ветви (новая, экспериментальная, разрабатываемая, зрелая, …) чтобы волонтёры знали, что можно использовать, а что — нет.

  • Как только вы решили, что ваш код достаточно хорош - предложите вашу ветвь к слиянию.

  • Ваша работа будет проверена одним ответственным лицом из команды коммиттеров.

    • Если они примут вашу ветвь к интеграции в официальную версию, они пригласят команду контроля качества, которая проверит ваш код и объеденит его с официальной ветвью.

    • Если команда коммиттеров отклоняет вашу ветвь — они объяснят причину, чтобы вы могли пересмотреть ваш код с точки зрения большего соответствия рекомендациям (проблемы при миграциях в будущем, …)

Ветвь extra-addons, в которой хранятся все дополнительные модули, доступна напрямую всем коммиттерам. Если вы — коммиттер, вы можете работать с этой веткой напрямую и фиксировать свою работу. Эта ветвь не требует проверки командой контроля качества. Вы можете выкладывать в неё специальные модули для ваших собственных заказчиков.

Если вы хотите предложить или разработать новые модули, мы советуем вам создать свою собственную ветвь в проекте openobject-addons и вести разработку в вашей ветви. Вы можете заполнить отчёт об ошибке, чтобы запросить внедрение ваших модулей в одну из следующих ветвей:

  • addons : если ваш модуль будет полезен большинству организаций

  • Мы приглашаем всех наших партнёров и добровольцев работать именно так, чтобы мы могли легко интегрировать изменения и делиться наработками, выполненными на разных проектах.

"Use Case"-Разработка

На этой странице приблизительно описаны методы, которым стоит следовать при разработке для OpenObject. Предположим, вы хотите разработать новый функционал к дополнениям или просто исправить несколько ошибок.

Если ваших прав достаточно для внесения изменений напрямую в ветвь, которую вы хотите исправить — можете сделать это непосредственно в ней. Например, участник команды качества, исправляющий ошибку, может сделать это прямо в основной ветви. Или коммитеры могут работать непосредственно с ветвью extra-addons. Если у вас недостаточно прав для изменения ветви, которую вы хотите поправить, или если вы хотите отделиться, начиная большие разработки, которые могут сломать исходный код, первое что надо сделать — создать новую ветвь репозитория, который вы хотите изменить:

В этом случае ветвь будет создана для команды openerp-commiter. Если вы не входите в эту команду, вы можете создать ветвь для команды сообщества openerp-community или только для себя, в зависимости от того, принимаете ли вы изменения от других людей напрямую или нет. Всем сотрудникам Tiny мы предлагаем создавать ветви в команде openerp-commiter. Обслуживающая OpenERP компания может создать собственную команду для своих ветвей и создавать ветви по её названию. Это позволит им избежать воздействия других людей на ветви их клиентов.

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

Как только ветвь создана, вы должны получить локальную копию для работы:

Эта команда загрузит ветвь на ваш компьютер. Затем вы можете начинать разработку. Время от времени вам стоит фиксировать произведённые вами изменения:

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

Эта команда отправит ваши изменения в ветвь: lp:~openerp-commiter/openobject-addons/trunk-new-reporting. Не забывайте менять статус ветви, чтобы другие добровольцы могли видеть состояние вашей работы на странице https://code.launchpad.net/~openerp-commiter/openobject-addons/trunk-new-reporting

bzr ci

Например, вы можете установить статус "In Development" чтобы показать, что работа идёт, или статус "Mature" когда вы хотите, чтобы ваша ветвь была включена в основной выпуск.

В процессе разработки, если захотите получить последние изменения из родительских ветвей, вы можете их подключить:

Как только разработка в этой ветви закончена, вы можете попросить коммитера изучить и присоединить её или сообщить об ошибке в системе отслеживания. Коммитер изучит ваши наработки и включит из в официальную ветвь, если они достаточно качественны.

bzr merge

Рекомендации по фиксации изменений

При фиксации изменений на Launchpad соблюдайте, пожалуйста, эти договорённости:

Стабильная ветвь — для правки ошибок

Стабильная ветвь должна использоваться для исправлений ошибок. Только для исправлений ошибок.

Новый функционал (+исправления ошибок в этом функционале) должен быть в ветви trunk.

Мы периодически переносим исправления из стабильной ветви в trunk.

Примечание

Указивайте имя автора, если оно отлично от имени коммитера

При фиксации изменений, сделанных не вами, указывайте имя автора. Недопустимо вносить изменения, сделанные добровольцем, не указав хотя бы его/её имя в сообщении о фиксации. Мы должны выказывать уважение к ним и их работе, так что используйте --author="<имя_автора>" когда присоединяете наработки или заплатки от сообщества.

Пишите подробные сообщения о фиксации

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

Используйте тег фиксации в каждом сообщении. Этот тег должен быть одним из:

[IMP]

  • [FIX]

  • [REF]

  • [ADD]

  • [REM]

  • [IMP]

[IMP]:

[FIX]

[FIX]:

[REF]

[REF]:

[ADD]

[ADD]:

[REM]

[REM]:

Всегда составляйте значимые сообщения о фиксации. Сообщения о фиксации должны быть понятными и включать название модуля, который был изменён. Никаких больше "bugfix" или "improvements" ! (единственное односложное принимаемое сообщение о фиксации — "merge")

  • Если вы исправляете ошибку, указывайте --fixes=lp:<номер_ошибки> вместо указания номера прямо в сообщении.

  • Используйте идентификатор ревизии вместо номера, когда хотите сослаться на ревизию в вашем сообщении о фиксации. Вы можете узнать идентификатор ревизии, с помощью команды bzr version-info.

  • Как поступить при переводе ?

e.g:

  Not Correct : bzr commit -m “[FIX]: reverted bad revision (cannot install new db)
    with revision number:525425”

  Correct : bzr commit -m “[FIX]: reverted bad revision (cannot install new db)
  with revision number id: qdp@tinyerp.com-20090602143202-ehmntlift166mrnn”

  Not Correct : bzr commit -m "Bug 568889 : typo corrected"

  Correct : bzr commit --fixes=lp:568889 -m "[FIX] account module: typo corrected"

Примечание

используйте [IMP] если перевели сообщение в файле po

используйте [ADD] если добавили новый файл po

Избегайте больших коммитов

Не вносите изменений, которые повлияют на множество модулей. Попытайтесь разбить их на разные изменения, для которых затрагиваемые модули различаются (Это будет полезно в случае, если мы решим откатить изменения в отдельном модуле).

Don't make a commit that will impact lots of modules. Try to split it into different commits where impacted modules are different (It will be helpful when we are going to revert that module separately).