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
| Option | Description |
|---|---|
--harness NAME | Adaptateur d'environnement à restaurer, ou all pour l'ensemble couvrant tout le registre (obligatoire). |
--install-id ULID | Annule la passe d'installation nommée. Par défaut : la dernière installation enregistrée. |
--last | Annule la dernière installation enregistrée (la valeur par défaut, sous sa forme explicite). Mutuellement exclusif avec --install-id. |
--yes | Ignore l'invite de confirmation par environnement. |
--project PATH | Racine de projet pour les environnements à portée de projet. Obligatoire lorsque l'ensemble sélectionné inclut des adaptateurs à portée de projet. |
--quiet, -q | Supprime la sortie informative ; seules les erreurs sont émises. |
--verbose, -v | Émet une sortie de diagnostic supplémentaire. |
--format plain|json | Format de sortie (par défaut : plain). |
--json | Raccourci de --format json. |
--no-color | Désactive les codes de couleur ANSI dans la sortie. |
-h, --help | Affiche 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 --jsonCodes de sortie
| Code | Signification |
|---|---|
| 0 | Annulation réussie, ou rien à annuler (l'installation n'a enregistré aucun changement) |
| 1 | Erreur 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) |
| 2 | Ré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) |
| 64 | Erreur 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
- apothem install — installe une configuration d'environnement
- apothem update — réinstalle à partir du profil partagé actuel
- apothem uninstall — supprime une configuration d'environnement
- apothem status — signale l'état d'installation, de vérification et de dérive