Holkas
GitHub · релизы

Что нового

v0.1.5

17 сентября 2026

Holkas v0.1.5 — выпуск про точность переноса. Holkas теперь учитывает релиз Паруса на каждой из баз, а перенос проверен сценариями между двумя живыми базами Паруса на PostgreSQL и Oracle. Эти сценарии нашли и закрыли ряд ошибок, при которых объект переносился не полностью или приёмник отказывал.

Holkas учитывает релиз Паруса

Раньше Holkas обращался к любой базе так, будто она на одном и том же релизе Паруса. Отсюда две проблемы: у шагов действий молча терялись поля «Функция», «Параметр функции» и «Выполняемый метод», а на релизах начиная с 24.12.2025 не создавались методы и вызовы методов.

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

Если релизы источника и приёмника расходятся:

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

Релиз источника записывается в пакет и в git-репозиторий, поэтому при переносе из файла Holkas знает, какие поля в нём есть.

Выбор объектов из манифеста

После «Раскрыть против источника» отмечаются сразу все найденные объекты. Раньше снимать отметку приходилось по одной строке, и перенести только таблицы из манифеста на несколько тысяч объектов было практически невозможно.

  • У каждого типа в левой колонке появилась галочка: она снимает или ставит отметку сразу на весь тип.
  • Над списком есть кнопки «Снять выбор» и «Выбрать все» для текущего среза.
  • Кнопка «Только «тип»» оставляет выбранным один тип. Например, «Только «Таблица (PG)»» — и в перенос уходят только таблицы.

Массовый выбор не берёт объекты с пометкой «в базе не найдено».

Исправленные ошибки

Права функций и процедур PostgreSQL. Функция или процедура, которой права явно не выдавались, по умолчанию доступна всем (EXECUTE у PUBLIC). Holkas считал, что прав у неё нет, и при переносе снимал это право в приёмнике, а повторный план расхождения не показывал. В схеме Паруса таких функций больше тысячи. Теперь права по умолчанию переносятся как есть.

Колонки таблиц PostgreSQL. Таблицы с колонками типов bool, bytea, date, int2, int8, timestamptz, float4, float8, oid и с массивами этих типов (например, int4[]) не создавались — применение отказывало. Такие колонки есть в таблицах самого Паруса.

Колонка со значением из последовательности. Колонка с умолчанием nextval(...) могла создаваться раньше своей последовательности, и применение падало. Теперь колонка ждёт последовательность, а если последовательности нет ни в наборе, ни в приёмнике, план об этом предупредит.

Таблица с внешним ключом на саму себя могла получить внешний ключ раньше собственного первичного ключа, и применение отказывало.

Ограничения класса. При изменении ограничения его наименование в приёмнике затиралось кодом ограничения, и повторный план не сходился. Теперь наименование переносится и меняется, как обычное поле.

Пустое меню приложения. Меню без содержимого не отличалось от отсутствующего: убранное в источнике, оно оставалось в приёмнике.

Пиктограмма, у которой изменилось только изображение, не попадала в план.

Смена вида сообщения отчитывалась об успехе, но вид в приёмнике не менялся, и то же расхождение появлялось в каждом следующем плане. Процедура Паруса вид сообщения не меняет, поэтому команда теперь честно отказывает и объясняет причину.

Лишние команды в плане. Изменение прав составного типа PostgreSQL давало пустую команду изменения самого типа. Добавление колонки в таблицу Oracle давало лишнюю команду изменения таблицы. Теперь в плане только то, что действительно меняется.

Обновление

Схема служебной базы Holkas в этом выпуске не меняется, новых обязательных параметров конфигурации нет.

Разовое расхождение по правам функций. Функции и процедуры PostgreSQL без явных прав, снятые в git-репозиторий или пакет прежней версией, записаны там без прав. Новая версия читает у них право EXECUTE для PUBLIC, поэтому первый перенос между базой и таким репозиторием покажет у этих объектов изменение прав. Это ожидаемо: после одного переноса план сойдётся. Если прежняя версия уже сняла это право у функции в приёмнике, следующий перенос этой функции его вернёт.

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

Дистрибутивы

К релизу приложены:

  • Holkas Web для Windows x64;
  • Holkas CLI для Windows x64;
  • файл SHA256SUMS для проверки архивов.

Docker-образ опубликован как belousov2501/holkas:0.1.5 и belousov2501/holkas:latest.

Обратная связь

Сообщить об ошибке, задать вопрос или предложить улучшение можно через GitHub Issues.

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

Образ Docker: belousov2501/holkas:0.1.5

Страница релиза v0.1.5 на GitHub