Skip to content
Apothem
Справочник CLI

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 — сообщает состояние установки, проверки и дрейфа

On this page