Дмитрий Сергеевич (axshavan) wrote,
Дмитрий Сергеевич
axshavan

Разработка под Bitrix с Mercurial

Недавно мне задали вопрос, как у нас в студии обходятся с системой контроля и Битриксом, а также тем, как у нас организованы переносы всяких обновлений между разными локальными копиями разработческих сайтов и всё такое. Я решил написать пост об этом всём таком.

В разработке мы используем распределённую систему контроля версий Mercurial. В репозиториях мы храним только то, что сделали сами, а исходники Битрикса - нет. Причин для этого несколько, самая основная - это обеспечение переносимости. Наши наработки можно взять и спокойно перетащить с одной установки Битрикса на другую, просто сделав hg clone. Таким образом, если одна копия Битрикса протухает, можно установить новую и продолжить работу, не беспокоясь о покупке лицензий для нескольких разработчиков (ага, купите всей команде лицензии на локальные установки корппортала по несколько сот тысяч рублей каждая, ну-ну), об обновлениях Битрикса и о том, что его исходники весят несколько десятков мегабайт.

Тут картиночка с менее фиолетовым, чем с похмелья, небом.

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

Для точечного исключения исходников Битрикса, чтоб hg st обнаруживал новые файлы среди модулей и наших компонентов, мы сочиняем длинный .hgignore. Вот типовой пример с одного из наших проектов:
^bitrix/help
^yandex-landing/*
^.access.php
^.htaccess
glob:*.log
^bitrix/admin/*
^bitrix/backup/*
^bitrix/cache/*
^bitrix/components/bitrix/*
^bitrix/*.php
^bitrix/gadgets/bitrix/*
^bitrix/image_uploader/*
^bitrix/images/fileman/*
^bitrix/images/1.gif
^bitrix/images/iblock/*
^bitrix/images/icons/*
^bitrix/images/install/*
^bitrix/images/main/*
^bitrix/images/search/*
^bitrix/images/seo/*
^bitrix/js/fileman/*
^bitrix/js/iblock/*
^bitrix/js/main/*
^bitrix/js/search/*
^bitrix/managed_cache/*
^bitrix/modules/compression/*
^bitrix/modules/fileman/*
^bitrix/modules/iblock/*
^bitrix/modules/main/*
^bitrix/modules/perfmon/*
^bitrix/modules/search/*
^bitrix/modules/seo/*
^bitrix/modules/sitecorporate/*
^bitrix/modules/socialservices/*
^bitrix/p3p.xml
^bitrix/php_interface/after_connect.php
^bitrix/php_interface/dbconn.php
^bitrix/sounds/*
^bitrix/templates/print/components/bitrix/*
^bitrix/templates/print/description.php
^bitrix/templates/print/footer.php
^bitrix/templates/print/header.php
^bitrix/templates/print/lang/*
^bitrix/templates/print/styles.css
^bitrix/templates/print/template_styles.css
^bitrix/templates/web20/*
^bitrix/themes/.default/*
^bitrix/tools/*
^bitrix/update/*
^bitrix/web.config
^bitrix/wizards/bitrix/*
^images/01.gif
^images/1.gif
^images/demo_course/*
^images/help.gif
^images/icons/edit_iblock_news.gif
^images/icons/edit_news.gif
^images/icons/edit_page.gif
^images/pdf_doc.gif
^images/rss20.gif
^robots.txt
^upload/*
^web.config
^bitrix/activities/bitrix/*
^bitrix/images/advertising/*
^bitrix/images/bizproc/*
^bitrix/images/blog/*
^bitrix/images/controller/*
^bitrix/images/form/*
^bitrix/images/forum/*
^bitrix/images/intranet/*
^bitrix/images/ldap/*
^bitrix/images/learning/*
^bitrix/images/lists/*
^bitrix/images/mail/*
^bitrix/images/security/*
^bitrix/images/socialnetwork/*
^bitrix/images/statistic/*
^bitrix/images/subscribe/*
^bitrix/images/support/*
^bitrix/images/vote/*
^bitrix/images/wiki/*
^bitrix/images/workflow/*
^bitrix/js/advertising/*
^bitrix/js/bizproc/*
^bitrix/js/form/*
^bitrix/js/intranet/*
^bitrix/js/learning/*
^bitrix/modules/advertising/*
^bitrix/modules/bizproc/*
^bitrix/modules/bizprocdesigner/*
^bitrix/modules/blog/*
^bitrix/modules/controller/*
^bitrix/modules/clouds/*
^bitrix/modules/extranet/*
^bitrix/modules/form/*
^bitrix/modules/forum/*
^bitrix/modules/intranet/*
^bitrix/modules/ldap/*
^bitrix/modules/learning/*
^bitrix/modules/lists/*
^bitrix/modules/mail/*
^bitrix/modules/photogallery/*
^bitrix/modules/security/*
^bitrix/modules/socialnetwork/*
^bitrix/modules/statistic/*
^bitrix/modules/subscribe/*
^bitrix/modules/support/*
^bitrix/modules/translate/*
^bitrix/modules/video/*
^bitrix/modules/videoport/*
^bitrix/modules/vote/*
^bitrix/modules/webdav/*
^bitrix/modules/webservice/*
^bitrix/modules/wiki/*
^bitrix/modules/workflow/*
^bitrix/modules/xmpp/*
^bitrix/modules/bitrix.sitecorporate/*
^bitrix/php_interface/subscribe/*
^bitrix/sounds/socialnetwork/*
^bitrix/stack_cache/*
^bitrix/templates/empty/*
^bitrix/templates/learning/*
^bitrix/templates/light/*
^bitrix/tmp/*
^bitrix/video/*
^bitrix/webdav/*
^images/bp/*
^images/icons/arrows.gif
^images/icons/bullet_calendar.gif
^images/icons/bullet_dot.gif
^images/icons/line.gif
^images/portal_user/*
^images/requests/*
^bitrix/modules/sitepersonal/*
^bitrix/modules/sitecommunity/*
^bitrix/components/demo/*
^bitrix/templates/books/*
^bitrix/modules/currency/*
^bitrix/images/currency/*
glob:*.komodoproject
^.bottom.menu.php
^.top_links.menu.php
^workgroups/*
^services/*
^images/docs/*
^images/company/*
^docs/*
^company/*
^community/*
^bitrix/updates/*
glob:*.zip
glob:files/*
^feedback.xls
^bitrix/templates/test_page/
^bitrix/php_interface/*
^bitrix/modules/sitestore/*
^bitrix/modules/sale/*
^bitrix/otp/*
^bitrix/modules/catalog/*
^bitrix/images/*
^bitrix/templates/.default/*
^auth/.section.php
^auth/index.php
^bitrix/js/socialservices/*
^content/*
^personal/*
^search/*
^bitrix/js/form_info.js
^bitrix/js/form_taskbar.js
^bitrix/js/form_validators.js
^.section.php
^.top.menu.php
^index_inc.php
^sect_inc.php
^work/
^products/
^sect_inc_head_main.php
^corp/
^contacts/
^.service.menu.php
^agents/
^banner/*
^bitrix/modules/.htaccess
^bitrix/templates/2cols/*
^forum/index.php
^bitrix/js/jquery-1.6.1.min.js
^editors/*
^int_page_header.php
^map/*
^support/*
^urlrewrite.php

Немного урезанный, конечно, чтоб сложно было идентифицировать проект.

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

Помимо изменений кода, существуют также изменения в БД, касающиеся разработки. Ну, например, для создания какого-нибудь раздела новостей нужно сделать инфоблок, в нём секции, в них, может быть, элементы. Для того, чтоб все разработчики не тратили время, создавая у себя такие же инфоблоки, мы придумали простую систему апдейтов.

В отдельной папочке хранятся файлики с именами формата [\d]{6}[a-zA-Z]*\.php. Соответственно, номера файлов должны увеличиваться со временем с каждым новым апдейтом. В админке Битрикса мы сделали кнопочку "обновить". Скрипт обновления смотрит, какой номер файла обновлялся последним, и по порядку запускает ещё невыполненные скрипты. На тот случай, если несколько разработчиков хотят параллельно делать скрипты обновления, для того, чтоб не было коллизий в номерах и невыполненных скриптов, предусмотрены буковки. Файлики обновлений с именами с буковками имеют отдельную нумерацию (например, 000001ds.php, 000002ds.php, ...) и версии с буковками считаются отдельно.

Оригинал записи http://blog.axshavan.ru/2012/06/bitrix-mercurial-development.html
Tags: web, работа, фотог
Subscribe

  • Первый заметный результат диеты

    Ну, конечно, на самом деле не первый. Я же каждое утро взвешиваюсь, скрупулёзно записываю результаты, а потом ещё и строю графики. И ещё чаще…

  • Плёнка №185

    Тематика снимков обычная: городское фото. Время съёмок: март 2021. Плёнка: Fomapan profi line action 400 Фотоаппарат и объектив: Zenit-E + Helios…

  • Фотографии с двух прогулок

    Четвёртого апреля было, хотя и ветрено, но солнечно и относительно тепло. Не то, что сегодня... сегодня погода испортилась и снова стало холодно. К…

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 3 comments