Holkas
GitHub · релизы

Как это работает / 02 из 05

Сначала увидеть, что изменится

Не нужно переносить доработку вслепую. Holkas сравнивает выбранные объекты в двух местах и превращает отличия в понятный список действий — план.

Попробуйте на примере

Одно сравнение — разные действия

Попробуйте на примере
Источник

Отчёт есть

Новая версия доработки

Приёмник

Отчёта нет

Пока нечего сравнивать

Команда в плане

Создать

Create · добавить отчёт

Новое нужно создать

Отчёт выбран для переноса, но в рабочей базе его ещё нет.

Источник

Новый код

Функция после доработки

Приёмник

Прежний код

Та же функция до правки

Команда в плане

Обновить

Update · изменить функцию

Существующее нужно обновить

Функция есть в обеих базах одной СУБД, но её код отличается.

Источник

Отчёт есть

Актуальная версия

Приёмник

Такой же отчёт

Содержимое совпадает

Результат сравнения

Без изменений

Команды для объекта нет

Одинаковое трогать не нужно

Выбранный объект уже находится в нужном состоянии.

Источник

Без параметра

Новое устройство метода

Приёмник

С параметром

Часть больше не нужна

Команда в плане

Удалить часть

Delete · убрать параметр

Лишняя часть может быть удалена

В выбранном классе у метода больше нет прежнего параметра. Правила этого типа допускают удаление такой части.

Учебные примеры. Переключите ситуацию, чтобы увидеть, откуда берётся команда. Эта схема не подключается к вашим базам.

План отвечает на вопрос «что нужно изменить в приёмнике?». Если отличий нет, менять нечего.

Сравниваем выбранное

Holkas читает каждый выбранный объект в источнике и приёмнике, сопоставляет его части и поля. В план попадают отличия: что создать, что изменить и какие части удалить, если правила типа это разрешают.

Если содержимое совпадает, команд для него не будет. Пустой план — нормальный результат: выбранные объекты уже совпадают.

Исключение — пользовательский скрипт: он не сравнивается с состоянием приёмника и выполняется при каждом применении.

Четыре обозначения в плане

КомандаПростыми словами
CreateСоздать то, чего ещё нет.
UpdateИзменить существующий объект или его часть.
DeleteУдалить лишнюю часть выбранного объекта, если это разрешено для её типа.
SetOrderПривести элементы к нужному порядку — например, значения домена.

Выбор объектов означает «эти объекты должны быть в приёмнике». Он не означает «удалить всё остальное». Посторонний отчёт в рабочей базе не исчезнет из-за того, что его нет в вашем наборе. Конкретные правила удаления — в справочнике.

План можно разобрать до применения

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

При выборе учитываются зависимости между уже построенными командами: нужные предшественники включаются вместе с выбранной командой; при исключении предшественника исключаются зависящие от него команды. Это не добавляет новые объекты из источника. Подробнее — о порядке выполнения.

Если база изменилась, пока вы смотрели план

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

  • Весь план без исключений. Новые необходимые команды могут выполниться с пометкой «вне плана» в журнале.
  • Только выбранное или план с исключениями. При появлении команд сверх сохранённого плана применение останавливается до первой записи и требует нового плана.

Это важная граница: просмотр плана не замораживает состояние рабочей базы. Подробности о сбоях и частичном применении — на странице «Границы и контроль».