All Projects → cjp2600 → Bim Core

cjp2600 / Bim Core

Bitrix Migration (BIM)

Projects that are alternatives of or similar to Bim Core

Roomigrant
Automated Android Room ORM migrations generator with compile-time code generation
Stars: ✭ 349 (+675.56%)
Mutual labels:  migration
Node Sqlite
SQLite client for Node.js applications with SQL-based migrations API written in Typescript
Stars: ✭ 642 (+1326.67%)
Mutual labels:  migration
Laminas Zendframework Bridge
Alias legacy ZF class names to Laminas Project equivalents.
Stars: ✭ 928 (+1962.22%)
Mutual labels:  migration
Ts Migrate
A tool to help migrate JavaScript code quickly and conveniently to TypeScript
Stars: ✭ 4,246 (+9335.56%)
Mutual labels:  migration
Gocqlx
All-In-One: CQL query builder, ORM and migration tool
Stars: ✭ 512 (+1037.78%)
Mutual labels:  migration
Press Sync
The easiest way to synchronize posts, media, users and more between two WordPress sites.
Stars: ✭ 22 (-51.11%)
Mutual labels:  migration
Pgloader
Migrate to PostgreSQL in a single command!
Stars: ✭ 3,754 (+8242.22%)
Mutual labels:  migration
Migrations
ProcessWire Migrations module
Stars: ✭ 37 (-17.78%)
Mutual labels:  migration
Rxjava2 Android Samples
RxJava 2 Android Examples - Migration From RxJava 1 to RxJava 2 - How to use RxJava 2 in Android
Stars: ✭ 4,950 (+10900%)
Mutual labels:  migration
Migrify
Futuristic Grinder for Legacy Code with Effortles Confidence
Stars: ✭ 25 (-44.44%)
Mutual labels:  migration
Laravel Migrations Generator
Laravel Migrations Generator: Automatically generate your migrations from an existing database schema.
Stars: ✭ 417 (+826.67%)
Mutual labels:  migration
Evolve
Database migration tool for .NET and .NET Core projects. Inspired by Flyway.
Stars: ✭ 477 (+960%)
Mutual labels:  migration
Xeogl
A WebGL-based 3D engine for technical visualization. Not actively maintained.
Stars: ✭ 920 (+1944.44%)
Mutual labels:  bim
Ng Metadata
Angular 2 decorators and utils for Angular 1.x
Stars: ✭ 356 (+691.11%)
Mutual labels:  migration
Node Pg Migrate
Node.js database migration management for Postgresql
Stars: ✭ 838 (+1762.22%)
Mutual labels:  migration
Knex Migrate
Modern database migration toolkit for knex.js
Stars: ✭ 330 (+633.33%)
Mutual labels:  migration
Migrate
Database migrations. CLI and Golang library.
Stars: ✭ 7,712 (+17037.78%)
Mutual labels:  migration
Bimserver
The open source BIMserver platform
Stars: ✭ 1,027 (+2182.22%)
Mutual labels:  bim
Csprojtovs2017
Tooling for converting pre 2017 project to the new Visual Studio 2017 format.
Stars: ✭ 876 (+1846.67%)
Mutual labels:  migration
Experdb Db2pg
eXperDB-DB2PG is a data migration solution that transfers data extracted from various DBMSs to eXperDB or PostgreSQL. Currently, Oracle and Oracle Spatial, MySQL, SQL Server(MS-SQL) and Sybase data can be transferred.
Stars: ✭ 24 (-46.67%)
Mutual labels:  migration

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].