rollback
Справочник CLI для команды apothem rollback.
Восстанавливает окружение в состояние, предшествовавшее его записанной установке.
Сводка
apothem rollback --harness NAME|all [--install-id ULID | --last] [--yes]
[--project PATH]
[--quiet|-q] [--verbose|-v]
[--format plain|json] [--json] [--no-color]rollback возвращает каждое выбранное окружение в состояние, в котором оно
находилось до записанного прохода установки — по умолчанию последнего или
указанного через --install-id. Обрабатывая запись журнала этой установки,
начиная с самого нового изменения, команда:
- восстанавливает каждый файл и каталог, перезаписанные установкой, из резервной копии, созданной этой установкой, по записанному пути (каталог, заменённый установкой, восстанавливается в точности, без файлов, которые установка в него добавила);
- удаляет каждый файл и каталог, созданные установкой, и возвращает на место любой путь устаревшей структуры, который установка убрала;
- удаляет общие хранилища данных (
memory,contexts,learning), созданные установкой, если только их всё ещё не использует другое установленное окружение; - удаляет каталоги, созданные установкой, после того как они опустеют.
Файл или папка в вашем домашнем каталоге, которые используют и другие
установки (папка навыков или ~/.config/apothem/), обрабатываются так же, как
общие хранилища данных: откат сохраняет их, пока другая установка всё ещё их
перечисляет, и восстанавливает или удаляет их только для последней установки,
которая их использует. Папка, которую эта установка застала уже на месте
(второй инструмент, установленный после первого), уходит вместе с последней
использующей её установкой, если её создала установка, которая с тех пор
отказалась от неё, поэтому откат каждого инструмента ничего не оставляет после
себя. Когда запись установки, которая могла бы использовать папку, невозможно
прочитать, откат останавливается с ошибкой, прежде чем что-либо изменить, и не
записывает запись rollback; исправьте запись и запустите команду снова.
Всё, что откат удаляет или заменяет, сначала копируется в корень резервных
копий Apothem (~/.apothem/backups/), поэтому сам откат можно отменить вручную.
Затем откат добавляет запись rollback в журнал окружения. Откат более ранней
установки восстанавливает или удаляет только цели, которые записала эта более
ранняя установка, и исключает каждую последующую установку из активных установок
журнала в том же корне. Файлы, которые более поздняя установка добавила за
пределами этих целей, остаются на месте.
Журнал хранит 10 самых новых записей об установках на каждый корень установки
(вместе с резервными копиями, на которые они ссылаются); более раннюю установку
больше нельзя откатить по id, и для неё сообщается rollback.no_record.
apothem backups prune по запросу снижает этот
предел и никогда не удаляет резервную копию, из которой восстанавливает
последняя установка.
Записи, сделанные релизом Apothem до появления этого поведения, не указывают, какие файлы создала установка; откат такой записи восстанавливает только перезаписанные файлы.
Подтверждение запрашивается для каждого окружения, если не указан --yes.
Когда запрос невозможен — --format json (текст запроса испортил бы
единственный документ JSON) или неинтерактивная оболочка (нет TTY), — команда
сразу отказывается выполняться со структурированной ошибкой
rollback.confirmation_required (код выхода 1), если не указан --yes.
--install-id и --last выбирают проход установки и являются
взаимоисключающими.
Откат --harness all намеренно исчерпывающий: он охватывает каждое зарегистрированное окружение, включая те, которые exclude_harnesses профиля пропускает при установке, — восстановление состояния до установки является операцией очистки, поэтому оно достигает записей, которые могла оставить более широкая предыдущая установка. Окружение без записанной установки завершается ошибкой в виде строки "outcome": "error" в results (см. раздел «Вывод JSON»), и выполнение продолжается с остальными окружениями. Затем команда завершается с кодом 1, если ничего не было откачено, или с кодом 2 (частичный результат), если откачена хотя бы одна цель и при этом зафиксирована ошибка.
Параметры
| Параметр | Описание |
|---|---|
--harness NAME | Адаптер окружения для отката или all для всего набора из реестра (обязателен). |
--install-id ULID | Откатывает указанный проход установки. По умолчанию — последняя записанная установка. |
--last | Откатывает последнюю записанную установку (поведение по умолчанию; явная форма). Взаимоисключающий с --install-id. |
--yes | Пропускает запрос подтверждения для каждого окружения. |
--project PATH | Корень проекта для окружений с областью проекта. Обязателен, когда выбранный набор включает адаптеры с областью проекта. |
--quiet, -q | Подавляет информационный вывод; выводятся только ошибки. |
--verbose, -v | Выводит дополнительную диагностику. |
--format plain|json | Формат вывода (по умолчанию: plain). |
--json | Сокращение для --format json. |
--no-color | Отключает коды цвета ANSI в выводе. |
-h, --help | Показывает справку и завершает работу. |
Вывод JSON
Пример показывает обёртку вывода для одного именованного окружения. При --harness all поле harness равно all, output_path равно null, а results содержит строки каждого выбранного окружения.
{
"schema_version": 1,
"status": "success",
"command": "rollback",
"action": "rolled_back",
"harness": "claude-code",
"profile_path": null,
"project": null,
"files_written": [],
"results": [],
"warnings": [],
"error": null,
"output_path": "C:\\Users\\Example\\.claude\\settings.json"
}Каждая восстановленная или удалённая цель появляется в results с
"operation": "rollback" и значением outcome, равным created или updated
(а также в files_written); message сообщает, был ли путь восстановлен или
удалён. Неудавшееся восстановление (например, когда резервная копия была
удалена) получает "outcome": "error". Установка, не записавшая изменений,
отображается с "outcome": "skipped". Если для единственного указанного
окружения подходящей записи об установке нет, команда сообщает ошибку
rollback.no_record с "status": "error". При --harness all окружение без
подходящей записи вместо этого отображается строкой "outcome": "error" в
results.
Примеры
apothem rollback --harness claude-code --last
apothem rollback --harness claude-code --install-id 01J9Z… --yes
apothem rollback --harness cursor --project . --last --jsonКоды выхода
| Код | Значение |
|---|---|
| 0 | Откат выполнен успешно или откатывать нечего (установка не записала изменений) |
| 1 | Ожидаемая ошибка — нет записи об установке, конфликтующие селекторы, неизвестное окружение, отсутствует корень проекта либо подтверждение отклонено или недоступно (неинтерактивный режим или режим JSON без --yes) |
| 2 | Частичный результат — хотя бы одна цель была откачена, и при этом был зафиксирован сбой (неудавшееся восстановление или, при --harness all, окружение без записи об установке) |
| 64 | Ошибка использования: неизвестный параметр или команда либо отсутствующее или недопустимое значение параметра. При --json ошибка выводится как конверт JSON с кодом cli.usage. |
См. также
- apothem install — устанавливает конфигурацию окружения
- apothem update — переустанавливает из текущего общего профиля
- apothem uninstall — удаляет конфигурацию окружения
- apothem status — сообщает состояние установки, проверки и дрейфа