fix(db-dump-xml): Changes без тихой полной перевыгрузки, инкремент в ibcmd

- -update без -force: при другой версии формата — отказ с подсказкой
  про -Mode Full, а не молчаливая перезапись всего дерева в новом формате.
- Первая выгрузка режимом по умолчанию: в каталог без выгрузки (пусто,
  только .git/README) — полностью; выгрузка без ConfigDumpInfo.xml — ошибка.
- ibcmd: Changes через --sync; Full в непустой каталог — через временный
  каталог и копирование поверх, как пишет конфигуратор; ошибка копирования
  даёт код 1. UpdateInfo с -AllExtensions отвергается, а не выгружает всё.
- py-порт печатает вывод ibcmd, как PS.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ANXwbMUhuRFSCsq2RgmTTm
This commit is contained in:
Nick Shirokov
2026-09-24 18:08:20 +03:00
co-authored by Claude Opus 5.5
parent ce7238792e
commit f98e7e9e81
12 changed files with 514 additions and 18 deletions
@@ -54,6 +54,17 @@ export const steps = [
script: 'db-dump-xml/scripts/db-dump-xml',
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb', '-ConfigDir': '{workDir}/dumpA', '-Mode': 'Changes' },
},
// ── 3b. Changes into a FRESH dir → no ConfigDumpInfo yet, so the first dump must be full ──
{
name: 'db-dump-xml: Changes в пустой каталог (первая выгрузка)',
script: 'db-dump-xml/scripts/db-dump-xml',
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb', '-ConfigDir': '{workDir}/dumpC', '-Mode': 'Changes' },
},
{
name: 'assert: первая выгрузка записала ConfigDumpInfo.xml',
assertContains: '{workDir}/dumpC/ConfigDumpInfo.xml',
expect: 'ConfigDumpInfo',
},
// ── 4. UpdateInfo into a FRESH dir → proves the mode alone yields non-empty output ──
{
name: 'db-dump-xml: UpdateInfo',