Как это устроено
Снапшоты
Снапшот — точка сохранения всех файлов проектов рабочей области. Правило одно — делать снапшот перед серией правок агента. После можно посмотреть, что изменилось, по объектам, а не по строкам XML, и откатить всё одним вызовом или вернуть один файл.
Правила
- Снапшот — явный. Кванта не делает снапшоты сама перед каждой записью: точка сохранения появляется, когда её создают через
snapshot_writeсoperation: create, из меню индикатора в строке состояния или во вью «Снапшоты Кванты». - Это точка сохранения, не транзакция. Правки после снапшота записываются сразу; снапшот позволяет к нему вернуться.
- Метка — ваша подпись: «до отчёта по складам», «перед рефакторингом форм». По ней снапшот ищется в списке.
- Откат защищает ручные правки. Если файл после снапшота правил человек в EDT, это конфликт: по умолчанию откат останавливается и ничего не теряется.
- Перед каждым откатом Кванта сама делает страховочный снапшот с меткой
auto: before restore …, поэтому откат тоже можно отменить.
Инструменты
| Что сделать | Вызов |
|---|---|
| Создать точку сохранения | snapshot_write · create · label |
| Список снапшотов | snapshot_read · list, фильтр по метке — filter |
| Что изменилось, построчно | snapshot_read · diff · snapshot_id |
| Что изменилось, по объектам | snapshot_read · diff_semantic · snapshot_id |
| История одного файла | snapshot_read · history · path |
| Откатить всё | snapshot_action · restore · snapshot_id |
| Вернуть один файл | snapshot_action · revert_file · snapshot_id, path |
| Переименовать или удалить снапшот | snapshot_write · update / delete |
Семантический diff
diff_semantic описывает изменения языком метаданных: у объектов — добавленные и удалённые реквизиты, изменённые типы (Строка(50) → Строка(100)); у форм — элементы, обработчики, команды, перемещения; у прав ролей — объекты, права и ограничения на уровне записей. Модули показываются обычным diff.
Конфликты при откате
| Режим | Как вызвать | Что будет |
|---|---|---|
| Строгий | по умолчанию | При любом конфликте откат не выполняется, ответ перечисляет конфликтные файлы |
| Пропустить изменённые | skip_changed: true |
Возвращаются только безопасные файлы, конфликтные остаются как есть |
| Принудительно | force: true |
Перезаписывается всё; ручные правки можно вернуть из страховочного снапшота через revert_file |
force и skip_changed вместе не используются.
Хранение и лимиты
- Снапшоты хранятся в скрытом git-репозитории в служебной папке рабочей области EDT. Ваш собственный git проекта не затрагивается.
- По умолчанию — до 100 снапшотов, не дольше 30 дней и не больше 1 ГБ; старые удаляются автоматически. Лимиты меняются в Window → Preferences → Кванта (Quanta) → Снапшоты.
- Первый снапшот большой конфигурации может занять время: если он не уложился примерно в 15 секунд, ответ приходит со статусом
🔵 running, а прогресс видно вsnapshot_read list. Следующие снапшоты сохраняют только изменения и делаются быстро. - Удаление или переименование снапшота из середины списка меняет идентификаторы более поздних снапшотов — ответ приводит таблицу «старый → новый». После этого перечитайте список.
- Один репозиторий на рабочую область: откат затрагивает всех агентов, работающих с ней одновременно.
Вью «Снапшоты Кванты»
Window → Show View → Кванта (Quanta) → Снапшоты Кванты — список снапшотов с датой и размером, файлы выбранного снапшота, сравнение файла двойным кликом, семантический diff, создание, удаление, переименование и откат. Вью показывает и снапшоты, созданные агентом.
Типичные ошибки
- Снапшот после правок. Точка сохранения фиксирует текущее состояние; сделанное до неё откатить нельзя.
- Старый идентификатор после удаления снапшота из середины. Возьмите новый из
snapshot_read list. - Несохранённые правки в редакторах EDT. Откат работает с файлами на диске; перед откатом сохраните правки в открытых редакторах, чтобы они участвовали в проверке конфликтов.
Пошаговый сценарий — Откат работы агента.