Skip to content
Bitrix Migration (BIM)
PHP
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
src
.gitignore change permission Feb 1, 2015
README.md
composer.json

README.md

Bitrix Migration (BIM)

Latest Stable Version Total Downloads Latest Unstable Version License

Версионная миграция структуры БД для 1С Битрикс CMS

1 Установка

1.1 Автоматическая установка

Для установки и инициализации bim для bitrix проекта необходимо выполнить следующиие действия из корня проекта:

  • Установить Composer:
curl -s https://getcomposer.org/installer | php
  • Выполнить установочный скрипт:
php -r "readfile('https://raw.githubusercontent.com/cjp2600/bim/master/install');" | php

Автоматические действия установщика:

  1. Добавление файла bim в корень проекта.
  2. Инициализация composer autoloader в файле init.php
  3. Создание файла composer.json в корне проекта со ссылкой на bim репозиторий "require": { "cjp2600/bim-core": ">=1.0.0"}

1.2 Ручная установка

Для ручной установки bim необходимо:

  • Установить Composer:
curl -s https://getcomposer.org/installer | php
  • Добавть инициализацию composer (в файл init.php добавить запись):
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php'))
    require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';
  • Создать в корне сайта файл composer.json с содержимым:
{
	"require": {
		"cjp2600/bim-core": ">=1.0.0"
	}
}
  • В .gitignore добавить запись:
/vendor
  • Done! :):
php vendor/bin/bim info

2 Настройка

Для начала работы обновляем composer и создаем миграционную таблицу в БД:

php composer.phar update

Создаём таблицу миграций :

php bim init

3 Выполнение миграций [BIM UP]

  • Общее выполнение:
php bim up

Выполняет полный список не выполненых либо ранее отмененных миграционных классов отсортированых по названию (timestamp).

  • Еденичное выполнение:
php bim up 1423660766

Выполняет указанную в праметрах миграцию.

  • Выполнение по временному периоду:
php bim up --from="29.01.2015 00:01" --to="29.01.2015 23:55"
  • Выполнение по тегу:
php bim up --tag=iws-123

Выполняет все миграции где найден указанный тег в описании.

  • Логирование:
php bim up --logging

4 Отмена выполненых миграций [BIM DOWN]

  • Общая отмена:
php bim down

Отменяет весь список выполненных миграционных классов.

  • Еденичная отмена:
php bim down 1423660766

Отменяет указанную в праметрах миграцию.

  • Отмена по временному периоду:
php bim down --from="29.01.2015 00:01" --to="29.01.2015 23:55"
  • Отмена по тегу:
php bim down --tag=iws-123

Отменяет все миграции где найден указанный тег в описании.

  • Логирование:
php bim down --logging

5 Вывод списка миграций [BIM LS]

  • Общей список:
php bim ls
  • Список выполненных миграций:
php bim ls --a
  • Список отменённых миграций:
php bim ls --n
  • Список миграций за определённый период времени:
php bim ls --from="29.01.2015 00:01" --to="29.01.2015 23:55" 
  • Список миграций по тегу:
php bim ls --tag=iws-123

6 Создание новых миграций [BIM GEN]

Существует два способа создания миграций:

1) Создание пустой миграции:

Создается пустой шаблон миграционного класса. Структура класса определена интерфейсом Bim/Revision и включает следующие обязательные методы:

  • up(); - выполнение
  • down(); - отмена
  • getDescription(); - получения описания.
  • getAuthor(); - получение автора.

Дополнительно запрашивается:

  • [Description]

Пример:

php bim gen

Также возможно передать description опционально:

php bim gen --d="new description #iws-123"

Далее создается файл миграции вида: */[migrations_path]/[timestamp].php

Например: /migrations/123412434.php

2) Создание миграционного кода по наличию:

Создается код развертывания/отката существующего элемента схемы bitrix БД. На данный момент доступно генерация по наличию для следующих элементов bitrix БД:

2.1 IblockType ( php bim gen IblockType:[add|delete] ):

Создается Миграционный код "Типа ИБ" включая созданные для него (UserFields, IBlock, IblockProperty)

Дополнительно запрашивается:

  • [IBLOCK_TYPE_ID]
  • [Description]

Пример:

php bim gen IblockType:add

Также возможно передать iblock type id и description опционально:

php bim gen IblockType:add --typeId=catalog --d="new description #iws-123"

2.2 Iblock ( php bim gen Iblock:[add|delete] ):

Создается Миграционный код "ИБ" включая созданные для него (IblockProperty)

Дополнительно запрашивается:

  • [IBLOCK_CODE]
  • [Description]

Пример:

php bim gen Iblock:add

Также возможно передать iblock code и description опционально:

php bim gen Iblock:add --code=goods --d="new description #iws-123"

2.3 IblockProperty ( php bim gen IblockProperty:[add|delete] ):

Создается Миграционный код "Свойства ИБ"

Дополнительно запрашивается:

  • [IBLOCK_CODE]
  • [PROPERTY_CODE]
  • [Description]

Пример:

php bim gen IblockProperty:add

Также возможно передать iblock code, property code и description опционально:

php bim gen IblockProperty:add --code=goods --propertyCode=NEW_ITEM --d="new description #iws-123"

2.4 Hlblock ( php bim gen Hlblock:[add|delete] ):

Создается Миграционный код "Highloadblock" включая созданные для него (UserFields)

Дополнительно запрашивается:

  • [HLBLOCK_ID]
  • [Description]

Пример:

php bim gen Hlblock:add

Также возможно передать hlblock id и description опционально:

php bim gen IHlblock:add --id=82 --d="new description #iws-123"

2.5 HlblockField ( php bim gen HlblockField:[add|delete] ):

Создается Миграционный код "HighloadblockField (UserField)"

Дополнительно запрашивается:

  • [HLBLOCK_ID]
  • [USER_FIELD_ID]
  • [Description]

Пример:

php bim gen HlblockField:add

Также возможно передать hlblock id, hlblock field id и description опционально:

php bim gen IHlblock:add --hlblockid=93 --hlFieldId=582 --d="new description #iws-123"

2.6 Group ( php bim gen Group:[add|delete] ):

Создается Миграционный код "Group (Группы пользователей)"

Дополнительно запрашивается:

  • [GROUP_ID]
  • [Description]

Пример:

php bim gen Group:add

Также возможно передать group id, и description опционально:

php bim gen Group:add --id=5 --d="new description #iws-123"

2.7 Site ( php bim gen Site:[add|delete] ):

Создается Миграционный код "Site (Сайты)"

Дополнительно запрашивается:

  • [SITE_ID]
  • [Description]

Пример:

php bim gen Site:add

Также возможно передать site id, и description опционально:

php bim gen Site:add --id=s1 --d="new description #iws-123"

Обратите внимание!

что миграционные классы созданные по наличию, выполняются автоматически.

Режим multi [BIM GEN MULTI]:

Так же доступен режим массовой генерации по наличию. Данный способ удобен при созданиие миграций по наличию для множества одинаковых элементов. Например для нескольких UserFields.

Пример:

php bim gen multi

Тегирование миграций:

При создании нового миграционного класса существует возможность выставления тега в комментарии к миграции для дальнейшей более удобной отмены либо выполнения группы миграций связанных одним тегом.

Формат: #[название]

Пример: Как вариант применения, вставлять тег номера задачи из трекера.

[Description]: #IWS-242 Add new Iblock[services]

Логирование:

Существует возможность логирования информации о состоянии выполнения или отмены миграций.

Пример:

php bim up --logging

или

php bim down --logging

Примечание: По умолчанию инфомация сохраняется в файл вида _log/bim/[Year]/[Month]/[Day]/bim.log

7 Информация о проекет [BIM INFO]

Информация о текущем bitrix проекте:

  • Название проекта
  • Версия bitrix
  • Редакция bitrix

Пример:

php bim info
You can’t perform that action at this time.