Skip to content
Apothem
Référence de la CLI

rollback

Référence de la CLI pour la commande apothem rollback.

Restaure un environnement dans l'état où il se trouvait avant son installation enregistrée.

Synopsis

apothem rollback --harness NAME|all [--install-id ULID | --last] [--yes]
                 [--project PATH]
                 [--quiet|-q] [--verbose|-v]
                 [--format plain|json] [--json] [--no-color]

rollback ramène chaque environnement sélectionné à l'état où il se trouvait avant la passe d'installation enregistrée — la plus récente par défaut, ou celle nommée par --install-id. En parcourant l'enregistrement de cette installation dans le journal, du changement le plus récent au plus ancien, elle :

  • restaure chaque fichier et chaque répertoire que l'installation a écrasés, à partir de la sauvegarde que l'installation a capturée, à leur chemin enregistré (un répertoire que l'installation a remplacé est restauré à l'identique, sans les fichiers que l'installation y a ajoutés) ;
  • supprime chaque fichier et chaque répertoire que l'installation a créés, et remet en place tout chemin de la disposition héritée que l'installation a balayé ;
  • supprime les magasins de données partagés (memory, contexts, learning) que l'installation a créés, sauf si un autre environnement installé les utilise encore ;
  • supprime les répertoires que l'installation a créés, une fois qu'ils sont vides.

Un fichier ou un dossier de votre répertoire personnel que d'autres installations utilisent aussi (un dossier de skills, ou ~/.config/apothem/) est traité comme les magasins de données partagés : rollback le conserve tant qu'une autre installation le liste encore, et ne le restaure ou ne le supprime que pour la dernière installation qui l'utilise. Un dossier que cette installation a trouvé déjà en place (un second outil installé après le premier) disparaît avec la dernière installation qui l'utilise lorsqu'il a été créé par une installation qui l'a depuis abandonné ; annuler chaque outil ne laisse donc rien derrière. Lorsque l'enregistrement d'une installation susceptible d'utiliser le dossier ne peut pas être lu, rollback s'arrête avec une erreur avant de modifier quoi que ce soit et n'écrit aucun enregistrement rollback ; réparez l'enregistrement, puis relancez la commande.

Tout ce que rollback supprime ou remplace est d'abord copié dans la racine de sauvegarde d'Apothem (~/.apothem/backups/) ; un rollback peut donc lui-même être annulé à la main. Le rollback ajoute ensuite un enregistrement rollback au journal de l'environnement. Annuler une installation plus ancienne ne restaure ou ne supprime que les cibles enregistrées par cette installation plus ancienne, et retire chaque installation qui l'a suivie des installations actives du journal, à la même racine. Les fichiers qu'une installation ultérieure a ajoutés en dehors de ces cibles restent en place.

Le journal conserve les 10 enregistrements d'installation les plus récents par racine d'installation (avec les sauvegardes qu'ils référencent) ; une installation plus ancienne ne peut plus être annulée par son id et signale rollback.no_record. apothem backups prune abaisse cette limite à la demande, et ne supprime jamais la sauvegarde à partir de laquelle la dernière installation est restaurée.

Les enregistrements écrits par une publication d'Apothem antérieure à l'ajout de ce comportement ne listent pas les fichiers que l'installation a créés ; annuler un tel enregistrement ne restaure que les fichiers écrasés.

La confirmation est demandée pour chaque environnement, sauf si --yes est fourni. Lorsqu'aucune invite n'est possible — --format json (le texte de l'invite corromprait l'unique document JSON) ou un shell non interactif (sans TTY) —, la commande refuse d'emblée avec une erreur structurée rollback.confirmation_required (code de sortie 1), sauf si --yes est fourni. --install-id et --last sélectionnent la passe d'installation et s'excluent mutuellement.

Un rollback --harness all est délibérément exhaustif : il couvre chaque environnement enregistré, y compris ceux que le champ exclude_harnesses du profil ignore lors de l'installation. Restaurer l'état antérieur à l'installation est une opération de nettoyage ; elle atteint donc les enregistrements qu'une installation antérieure plus large a pu laisser. Un environnement sans installation enregistrée échoue sous la forme d'une ligne "outcome": "error" dans results (voir la sortie JSON), et l'exécution se poursuit avec les environnements restants. La commande se termine ensuite avec le code 1 si aucune cible n'a été annulée, ou avec le code 2 (résultat partiel) lorsqu'au moins une cible a été annulée et qu'un échec a également été enregistré.

Options

OptionDescription
--harness NAMEAdaptateur d'environnement à restaurer, ou all pour l'ensemble couvrant tout le registre (obligatoire).
--install-id ULIDAnnule la passe d'installation nommée. Par défaut : la dernière installation enregistrée.
--lastAnnule la dernière installation enregistrée (la valeur par défaut, sous sa forme explicite). Mutuellement exclusif avec --install-id.
--yesIgnore l'invite de confirmation par environnement.
--project PATHRacine de projet pour les environnements à portée de projet. Obligatoire lorsque l'ensemble sélectionné inclut des adaptateurs à portée de projet.
--quiet, -qSupprime la sortie informative ; seules les erreurs sont émises.
--verbose, -vÉmet une sortie de diagnostic supplémentaire.
--format plain|jsonFormat de sortie (par défaut : plain).
--jsonRaccourci de --format json.
--no-colorDésactive les codes de couleur ANSI dans la sortie.
-h, --helpAffiche l'aide et quitte.

Sortie JSON

L'exemple présente l'enveloppe d'un seul environnement nommé. Avec --harness all, harness vaut all, output_path vaut null, et results contient les lignes de chaque environnement sélectionné.

{
  "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"
}

Chaque cible restaurée ou supprimée apparaît dans results avec "operation": "rollback" et un outcome valant created ou updated (ainsi que dans files_written) ; le message indique si le chemin a été restauré ou supprimé. Une restauration en échec (par exemple, une sauvegarde qui a été supprimée) vaut "outcome": "error". Une installation qui n'a enregistré aucun changement est signalée avec "outcome": "skipped". Lorsqu'aucun enregistrement d'installation correspondant n'existe pour un seul environnement nommé, la commande signale une erreur rollback.no_record avec "status": "error". Sous --harness all, un environnement sans enregistrement correspondant est plutôt une ligne "outcome": "error" dans results.

Exemples

apothem rollback --harness claude-code --last
apothem rollback --harness claude-code --install-id 01J9Z… --yes
apothem rollback --harness cursor --project . --last --json

Codes de sortie

CodeSignification
0Annulation réussie, ou rien à annuler (l'installation n'a enregistré aucun changement)
1Erreur attendue — aucun enregistrement d'installation, sélecteurs en conflit, environnement inconnu, racine de projet manquante, ou confirmation refusée ou impossible (mode non interactif ou JSON sans --yes)
2Résultat partiel — au moins une cible a été annulée et un échec a aussi été enregistré (une restauration en échec ou, sous --harness all, un environnement sans enregistrement d'installation)
64Erreur d'utilisation : une option ou une commande inconnue, ou une valeur d'option manquante ou invalide. Sous --json, l'erreur est une enveloppe JSON avec le code cli.usage.

Voir aussi

On this page