@atlashub/smartstack-cli 1.5.0 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.documentation/agents.html +920 -916
- package/.documentation/apex.html +1022 -1018
- package/.documentation/business-analyse.html +1505 -1501
- package/.documentation/commands.html +684 -680
- package/.documentation/css/styles.css +2168 -2168
- package/.documentation/efcore.html +2509 -2505
- package/.documentation/gitflow.html +2622 -2618
- package/.documentation/hooks.html +417 -413
- package/.documentation/index.html +327 -323
- package/.documentation/init.html +565 -0
- package/.documentation/installation.html +548 -462
- package/.documentation/js/app.js +794 -794
- package/.documentation/ralph-loop.html +534 -530
- package/.documentation/test-web.html +517 -513
- package/config/default-config.json +86 -86
- package/config/settings.json +53 -53
- package/config/settings.local.example.json +16 -16
- package/dist/index.js +18 -8
- package/dist/index.js.map +1 -1
- package/package.json +88 -88
- package/templates/agents/action.md +36 -36
- package/templates/agents/efcore/conflicts.md +84 -84
- package/templates/agents/efcore/db-deploy.md +51 -51
- package/templates/agents/efcore/db-reset.md +59 -59
- package/templates/agents/efcore/db-seed.md +56 -56
- package/templates/agents/efcore/db-status.md +64 -64
- package/templates/agents/efcore/migration.md +85 -85
- package/templates/agents/efcore/rebase-snapshot.md +62 -62
- package/templates/agents/efcore/scan.md +90 -90
- package/templates/agents/efcore/squash.md +67 -67
- package/templates/agents/explore-codebase.md +65 -65
- package/templates/agents/explore-docs.md +97 -97
- package/templates/agents/fix-grammar.md +49 -49
- package/templates/agents/gitflow/abort.md +45 -45
- package/templates/agents/gitflow/cleanup.md +85 -85
- package/templates/agents/gitflow/commit.md +40 -40
- package/templates/agents/gitflow/exec.md +48 -48
- package/templates/agents/gitflow/finish.md +92 -92
- package/templates/agents/gitflow/init.md +139 -139
- package/templates/agents/gitflow/merge.md +62 -62
- package/templates/agents/gitflow/plan.md +42 -42
- package/templates/agents/gitflow/pr.md +78 -78
- package/templates/agents/gitflow/review.md +49 -49
- package/templates/agents/gitflow/start.md +61 -61
- package/templates/agents/gitflow/status.md +32 -32
- package/templates/agents/snipper.md +36 -36
- package/templates/agents/websearch.md +46 -46
- package/templates/commands/_resources/formatting-guide.md +124 -124
- package/templates/commands/ai-prompt.md +315 -315
- package/templates/commands/apex/1-analyze.md +100 -100
- package/templates/commands/apex/2-plan.md +145 -145
- package/templates/commands/apex/3-execute.md +171 -171
- package/templates/commands/apex/4-examine.md +116 -116
- package/templates/commands/apex/5-tasks.md +209 -209
- package/templates/commands/apex.md +76 -76
- package/templates/commands/application/create.md +362 -362
- package/templates/commands/application/templates-backend.md +463 -463
- package/templates/commands/application/templates-frontend.md +517 -517
- package/templates/commands/application/templates-i18n.md +478 -478
- package/templates/commands/application/templates-seed.md +362 -362
- package/templates/commands/application.md +303 -303
- package/templates/commands/business-analyse/0-orchestrate.md +640 -640
- package/templates/commands/business-analyse/1-init.md +269 -269
- package/templates/commands/business-analyse/2-discover.md +520 -520
- package/templates/commands/business-analyse/3-analyse.md +408 -408
- package/templates/commands/business-analyse/4-specify.md +598 -598
- package/templates/commands/business-analyse/5-validate.md +326 -326
- package/templates/commands/business-analyse/6-handoff.md +746 -746
- package/templates/commands/business-analyse/7-doc-html.md +602 -602
- package/templates/commands/business-analyse/bug.md +325 -325
- package/templates/commands/business-analyse/change-request.md +368 -368
- package/templates/commands/business-analyse/hotfix.md +200 -200
- package/templates/commands/business-analyse.md +640 -640
- package/templates/commands/controller/create.md +216 -216
- package/templates/commands/controller/postman-templates.md +528 -528
- package/templates/commands/controller/templates.md +600 -600
- package/templates/commands/controller.md +337 -337
- package/templates/commands/create/agent.md +138 -138
- package/templates/commands/create/command.md +166 -166
- package/templates/commands/create/hook.md +234 -234
- package/templates/commands/create/plugin.md +329 -329
- package/templates/commands/create/project.md +507 -507
- package/templates/commands/create/skill.md +199 -199
- package/templates/commands/create.md +220 -220
- package/templates/commands/debug.md +95 -95
- package/templates/commands/documentation/module.md +202 -202
- package/templates/commands/documentation/templates.md +432 -432
- package/templates/commands/documentation.md +190 -190
- package/templates/commands/efcore/_env-check.md +153 -153
- package/templates/commands/efcore/conflicts.md +186 -186
- package/templates/commands/efcore/db-deploy.md +193 -193
- package/templates/commands/efcore/db-reset.md +426 -426
- package/templates/commands/efcore/db-seed.md +326 -326
- package/templates/commands/efcore/db-status.md +226 -226
- package/templates/commands/efcore/migration.md +400 -400
- package/templates/commands/efcore/rebase-snapshot.md +264 -264
- package/templates/commands/efcore/scan.md +198 -198
- package/templates/commands/efcore/squash.md +298 -298
- package/templates/commands/efcore.md +224 -224
- package/templates/commands/epct.md +69 -69
- package/templates/commands/explain.md +186 -186
- package/templates/commands/explore.md +45 -45
- package/templates/commands/feature-full.md +267 -267
- package/templates/commands/gitflow/1-init.md +1038 -1038
- package/templates/commands/gitflow/10-start.md +768 -768
- package/templates/commands/gitflow/11-finish.md +457 -457
- package/templates/commands/gitflow/12-cleanup.md +276 -276
- package/templates/commands/gitflow/13-sync.md +216 -216
- package/templates/commands/gitflow/14-rebase.md +251 -251
- package/templates/commands/gitflow/2-status.md +277 -277
- package/templates/commands/gitflow/3-commit.md +344 -344
- package/templates/commands/gitflow/4-plan.md +145 -145
- package/templates/commands/gitflow/5-exec.md +147 -147
- package/templates/commands/gitflow/6-abort.md +344 -344
- package/templates/commands/gitflow/7-pull-request.md +453 -355
- package/templates/commands/gitflow/8-review.md +240 -176
- package/templates/commands/gitflow/9-merge.md +451 -365
- package/templates/commands/gitflow.md +128 -128
- package/templates/commands/implement.md +663 -663
- package/templates/commands/init.md +567 -562
- package/templates/commands/mcp-integration.md +330 -330
- package/templates/commands/notification.md +129 -129
- package/templates/commands/oneshot.md +57 -57
- package/templates/commands/quick-search.md +72 -72
- package/templates/commands/ralph-loop/cancel-ralph.md +18 -18
- package/templates/commands/ralph-loop/help.md +126 -126
- package/templates/commands/ralph-loop/ralph-loop.md +18 -18
- package/templates/commands/review.md +106 -106
- package/templates/commands/utils/test-web-config.md +160 -160
- package/templates/commands/utils/test-web.md +151 -151
- package/templates/commands/validate.md +233 -233
- package/templates/commands/workflow.md +193 -193
- package/templates/gitflow/config.json +138 -138
- package/templates/hooks/ef-migration-check.md +139 -139
- package/templates/hooks/hooks.json +25 -25
- package/templates/hooks/stop-hook.sh +177 -177
- package/templates/skills/ai-prompt/SKILL.md +778 -778
- package/templates/skills/application/SKILL.md +563 -563
- package/templates/skills/application/templates-backend.md +450 -450
- package/templates/skills/application/templates-frontend.md +531 -531
- package/templates/skills/application/templates-i18n.md +520 -520
- package/templates/skills/application/templates-seed.md +647 -647
- package/templates/skills/business-analyse/SKILL.md +191 -191
- package/templates/skills/business-analyse/questionnaire.md +283 -283
- package/templates/skills/business-analyse/templates-frd.md +477 -477
- package/templates/skills/business-analyse/templates-react.md +580 -580
- package/templates/skills/controller/SKILL.md +240 -240
- package/templates/skills/controller/postman-templates.md +614 -614
- package/templates/skills/controller/templates.md +1468 -1468
- package/templates/skills/documentation/SKILL.md +133 -133
- package/templates/skills/documentation/templates.md +476 -476
- package/templates/skills/feature-full/SKILL.md +838 -838
- package/templates/skills/notification/SKILL.md +555 -555
- package/templates/skills/ui-components/SKILL.md +870 -870
- package/templates/skills/workflow/SKILL.md +582 -582
- package/templates/test-web/api-health.json +38 -38
- package/templates/test-web/minimal.json +19 -19
- package/templates/test-web/npm-package.json +46 -46
- package/templates/test-web/seo-check.json +54 -54
|
@@ -1,344 +1,344 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Phase 6 - Abort operations, rollback, and branch abandonment
|
|
3
|
-
agent: gitflow-abort
|
|
4
|
-
model: sonnet
|
|
5
|
-
args: [option]
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 6: ABORT - Rollback & Recovery
|
|
9
|
-
|
|
10
|
-
Tu es expert GitFlow et EF Core. Annule proprement et restaure l'etat precedent.
|
|
11
|
-
|
|
12
|
-
**Argument:** `$ARGUMENTS` = option (--git, --checkpoint, --full, --migrations, --database, --branch)
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Workflow
|
|
17
|
-
|
|
18
|
-
### 1. Analyser etat
|
|
19
|
-
|
|
20
|
-
**Operations Git en cours:**
|
|
21
|
-
- Rebase en cours? (`.git/rebase-merge/`)
|
|
22
|
-
- Merge en cours? (`.git/MERGE_HEAD`)
|
|
23
|
-
- Cherry-pick en cours? (`.git/CHERRY_PICK_HEAD`)
|
|
24
|
-
- Conflits? (`git ls-files -u`)
|
|
25
|
-
|
|
26
|
-
**Type de branche (pour --branch):**
|
|
27
|
-
- `feature/*` → abandon feature
|
|
28
|
-
- `release/*` → abandon release
|
|
29
|
-
- `hotfix/*` → abandon hotfix
|
|
30
|
-
- autre → erreur
|
|
31
|
-
|
|
32
|
-
**Ressources disponibles:**
|
|
33
|
-
- Plans actifs dans `.claude/gitflow/plans/`
|
|
34
|
-
- Checkpoints dans `.claude/gitflow/logs/checkpoint_*.json`
|
|
35
|
-
- Backups migrations dans `.claude/gitflow/logs/migrations_backup_*/`
|
|
36
|
-
|
|
37
|
-
### 2. Proposer options (si aucun argument)
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
OPTIONS DE ROLLBACK
|
|
41
|
-
═══════════════════════════════════════════════════════════════
|
|
42
|
-
[1] --git Annuler operation Git (rebase/merge --abort)
|
|
43
|
-
[2] --checkpoint Rollback au checkpoint (reset + restore)
|
|
44
|
-
[3] --full Rollback complet plan (reset hard au debut)
|
|
45
|
-
[4] --migrations Rollback migrations seules (restore fichiers)
|
|
46
|
-
[5] --database Rollback database (ef database update)
|
|
47
|
-
[6] --branch Abandonner branche courante (feature/release/hotfix)
|
|
48
|
-
[0] Annuler
|
|
49
|
-
═══════════════════════════════════════════════════════════════
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## Option: --git
|
|
55
|
-
|
|
56
|
-
Annuler operation Git en cours:
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
git rebase --abort # si rebase
|
|
60
|
-
git merge --abort # si merge
|
|
61
|
-
git cherry-pick --abort # si cherry-pick
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Option: --checkpoint
|
|
67
|
-
|
|
68
|
-
Rollback au dernier checkpoint:
|
|
69
|
-
|
|
70
|
-
1. Lire commit du checkpoint
|
|
71
|
-
2. Abort operations en cours
|
|
72
|
-
3. Reset hard au commit
|
|
73
|
-
4. Restore migrations si backup existe
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## Option: --full
|
|
78
|
-
|
|
79
|
-
Rollback complet au debut du plan:
|
|
80
|
-
|
|
81
|
-
1. Lire commit initial du plan
|
|
82
|
-
2. Reset hard
|
|
83
|
-
3. Marquer plan comme ABORTED
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Option: --migrations
|
|
88
|
-
|
|
89
|
-
Restaurer fichiers migration depuis backup:
|
|
90
|
-
|
|
91
|
-
1. Copier depuis `.claude/gitflow/logs/migrations_backup_*/`
|
|
92
|
-
2. Rebuild pour verifier
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Option: --database {migration}
|
|
97
|
-
|
|
98
|
-
Rollback database:
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
dotnet ef database update {migration}
|
|
102
|
-
# ou reset complet:
|
|
103
|
-
dotnet ef database update 0
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
## Option: --branch (ABANDON)
|
|
109
|
-
|
|
110
|
-
Abandonner la branche courante sans merger. Detection automatique du type.
|
|
111
|
-
|
|
112
|
-
### Workflow abandon
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
1. Detecter type de branche (feature/release/hotfix)
|
|
116
|
-
2. Demander confirmation avec resume
|
|
117
|
-
3. Salvage si applicable (release → corrections vers develop)
|
|
118
|
-
4. Logger l'abandon
|
|
119
|
-
5. Supprimer la branche
|
|
120
|
-
6. Nettoyer worktree si applicable
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Feature → Abandon
|
|
124
|
-
|
|
125
|
-
```
|
|
126
|
-
⚠ ABANDON FEATURE
|
|
127
|
-
|
|
128
|
-
Branche: feature/{name}
|
|
129
|
-
Commits: {n} depuis develop
|
|
130
|
-
|
|
131
|
-
Actions:
|
|
132
|
-
✗ NE PAS merger sur develop
|
|
133
|
-
✓ Archiver (optionnel avec --archive)
|
|
134
|
-
✓ Supprimer la branche
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
**Options specifiques:**
|
|
138
|
-
- `--archive` : Creer tag `archive/feature/{name}` avant suppression
|
|
139
|
-
- `--keep-local` : Garder branche locale
|
|
140
|
-
|
|
141
|
-
### Release → Abandon
|
|
142
|
-
|
|
143
|
-
```
|
|
144
|
-
⚠ ABANDON RELEASE
|
|
145
|
-
|
|
146
|
-
Branche: release/{version}
|
|
147
|
-
Commits: {n} depuis develop
|
|
148
|
-
- {n} corrections (bug fixes)
|
|
149
|
-
- {n} autres commits
|
|
150
|
-
|
|
151
|
-
Actions:
|
|
152
|
-
✗ NE PAS merger sur main
|
|
153
|
-
✗ NE PAS creer de tag
|
|
154
|
-
✓ Salvage corrections vers develop (sauf si --no-salvage)
|
|
155
|
-
✓ Supprimer la branche
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
**Options specifiques:**
|
|
159
|
-
- `--salvage` (defaut) : Merge corrections vers develop
|
|
160
|
-
- `--no-salvage` : Ne pas recuperer les corrections
|
|
161
|
-
- `--keep-local` : Garder branche locale
|
|
162
|
-
|
|
163
|
-
**Salvage workflow:**
|
|
164
|
-
```bash
|
|
165
|
-
git checkout develop
|
|
166
|
-
git merge --no-ff release/{version} -m "chore: salvage fixes from abandoned release/{version}"
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### Hotfix → Abandon
|
|
170
|
-
|
|
171
|
-
```
|
|
172
|
-
⚠ ABANDON HOTFIX
|
|
173
|
-
|
|
174
|
-
Branche: hotfix/{name}
|
|
175
|
-
Commits: {n} depuis main
|
|
176
|
-
|
|
177
|
-
Actions:
|
|
178
|
-
✗ NE PAS merger sur main
|
|
179
|
-
✗ NE PAS merger sur develop
|
|
180
|
-
✓ Supprimer la branche
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
**Options specifiques:**
|
|
184
|
-
- `--salvage-to-develop` : Merger vers develop (rare)
|
|
185
|
-
- `--keep-local` : Garder branche locale
|
|
186
|
-
|
|
187
|
-
### Log abandon
|
|
188
|
-
|
|
189
|
-
Creer `.claude/gitflow/logs/abort_{timestamp}.json`:
|
|
190
|
-
|
|
191
|
-
```json
|
|
192
|
-
{
|
|
193
|
-
"timestamp": "{ISO_DATE}",
|
|
194
|
-
"type": "branch-abort",
|
|
195
|
-
"branch_type": "feature|release|hotfix",
|
|
196
|
-
"branch_name": "{full_name}",
|
|
197
|
-
"reason": "{raison si fournie}",
|
|
198
|
-
"commits_count": {n},
|
|
199
|
-
"salvaged": true|false,
|
|
200
|
-
"salvage_commit": "{hash}"|null,
|
|
201
|
-
"archived": true|false,
|
|
202
|
-
"archive_tag": "{tag}"|null
|
|
203
|
-
}
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
### Nettoyage worktree (cleanup automatique)
|
|
207
|
-
|
|
208
|
-
Si la branche utilise un worktree, un cleanup cible est effectue automatiquement:
|
|
209
|
-
|
|
210
|
-
```bash
|
|
211
|
-
# Fonction de cleanup cible (appelee automatiquement)
|
|
212
|
-
cleanup_worktree_for_branch() {
|
|
213
|
-
BRANCH=$1
|
|
214
|
-
WORKTREE_BASE="../worktrees"
|
|
215
|
-
|
|
216
|
-
# Determiner le chemin selon le type
|
|
217
|
-
if [[ $BRANCH == feature/* ]]; then
|
|
218
|
-
NAME=${BRANCH#feature/}
|
|
219
|
-
WORKTREE_PATH="$WORKTREE_BASE/features/$NAME"
|
|
220
|
-
elif [[ $BRANCH == release/* ]]; then
|
|
221
|
-
VERSION=${BRANCH#release/}
|
|
222
|
-
WORKTREE_PATH="$WORKTREE_BASE/releases/$VERSION"
|
|
223
|
-
elif [[ $BRANCH == hotfix/* ]]; then
|
|
224
|
-
NAME=${BRANCH#hotfix/}
|
|
225
|
-
WORKTREE_PATH="$WORKTREE_BASE/hotfixes/$NAME"
|
|
226
|
-
fi
|
|
227
|
-
|
|
228
|
-
# Supprimer si existe
|
|
229
|
-
if [ -d "$WORKTREE_PATH" ]; then
|
|
230
|
-
git worktree remove "$WORKTREE_PATH" --force 2>/dev/null || true
|
|
231
|
-
rm -rf "$WORKTREE_PATH" 2>/dev/null || true
|
|
232
|
-
git worktree prune
|
|
233
|
-
echo "✓ Worktree nettoye: $WORKTREE_PATH"
|
|
234
|
-
fi
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
# Appel automatique apres abandon
|
|
238
|
-
cleanup_worktree_for_branch "$BRANCH"
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
**Note:** Pour un audit complet de tous les worktrees, utilisez:
|
|
242
|
-
|
|
243
|
-
```
|
|
244
|
-
/gitflow:12-cleanup
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## Modes complets
|
|
250
|
-
|
|
251
|
-
| Commande | Action |
|
|
252
|
-
|----------|--------|
|
|
253
|
-
| `/gitflow:6-abort` | Analyse + propose options |
|
|
254
|
-
| `/gitflow:6-abort --git` | Annule operation Git |
|
|
255
|
-
| `/gitflow:6-abort --checkpoint` | Rollback dernier checkpoint |
|
|
256
|
-
| `/gitflow:6-abort --full` | Rollback complet |
|
|
257
|
-
| `/gitflow:6-abort --migrations` | Restore migrations |
|
|
258
|
-
| `/gitflow:6-abort --database {mig}` | Rollback DB |
|
|
259
|
-
| `/gitflow:6-abort --branch` | Abandonner branche courante |
|
|
260
|
-
| `/gitflow:6-abort --branch --archive` | Abandon + archive (feature) |
|
|
261
|
-
| `/gitflow:6-abort --branch --no-salvage` | Abandon sans salvage (release) |
|
|
262
|
-
| `/gitflow:6-abort --branch --reason "..."` | Abandon avec raison |
|
|
263
|
-
|
|
264
|
-
---
|
|
265
|
-
|
|
266
|
-
## Scenarios courants
|
|
267
|
-
|
|
268
|
-
**Conflit rebase:**
|
|
269
|
-
```
|
|
270
|
-
/gitflow:6-abort --git
|
|
271
|
-
git fetch origin develop
|
|
272
|
-
/gitflow:4-plan
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
**Migration corrompue:**
|
|
276
|
-
```
|
|
277
|
-
/gitflow:6-abort --checkpoint
|
|
278
|
-
/gitflow:3-commit
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
**Abandonner feature en cours:**
|
|
282
|
-
```
|
|
283
|
-
/gitflow:6-abort --branch
|
|
284
|
-
# ou avec archive
|
|
285
|
-
/gitflow:6-abort --branch --archive
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
**Abandonner release echouee:**
|
|
289
|
-
```
|
|
290
|
-
/gitflow:6-abort --branch
|
|
291
|
-
# Corrections seront salvagees vers develop
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
**Abandonner hotfix invalide:**
|
|
295
|
-
```
|
|
296
|
-
/gitflow:6-abort --branch
|
|
297
|
-
# Rien n'est merge, branche supprimee
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
---
|
|
301
|
-
|
|
302
|
-
## Resume post-abandon
|
|
303
|
-
|
|
304
|
-
```
|
|
305
|
-
═══════════════════════════════════════════════════════════════
|
|
306
|
-
BRANCHE ABANDONNEE
|
|
307
|
-
═══════════════════════════════════════════════════════════════
|
|
308
|
-
|
|
309
|
-
Type: {feature|release|hotfix}
|
|
310
|
-
Branche: {nom complet}
|
|
311
|
-
Commits: {n} (perdus|salvages|archives)
|
|
312
|
-
Raison: {raison ou "non specifiee"}
|
|
313
|
-
|
|
314
|
-
Actions effectuees:
|
|
315
|
-
{✓|✗} Salvage vers develop
|
|
316
|
-
{✓|✗} Archive creee
|
|
317
|
-
✓ Branche supprimee
|
|
318
|
-
✓ Worktree nettoye (cleanup automatique)
|
|
319
|
-
|
|
320
|
-
═══════════════════════════════════════════════════════════════
|
|
321
|
-
|
|
322
|
-
Prochaines etapes:
|
|
323
|
-
- Documenter la raison si besoin
|
|
324
|
-
- Creer issue pour suivi si applicable
|
|
325
|
-
- Demarrer nouvelle branche: /gitflow:10-start {type} {nom}
|
|
326
|
-
- Audit complet worktrees: /gitflow:12-cleanup (optionnel)
|
|
327
|
-
|
|
328
|
-
═══════════════════════════════════════════════════════════════
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
---
|
|
332
|
-
|
|
333
|
-
## Recuperation si erreur
|
|
334
|
-
|
|
335
|
-
**Feature archivee:**
|
|
336
|
-
```bash
|
|
337
|
-
git checkout -b feature/{name} archive/feature/{name}
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
**Branche non archivee (reflog):**
|
|
341
|
-
```bash
|
|
342
|
-
git reflog
|
|
343
|
-
git checkout -b {branch} {commit-hash}
|
|
344
|
-
```
|
|
1
|
+
---
|
|
2
|
+
description: Phase 6 - Abort operations, rollback, and branch abandonment
|
|
3
|
+
agent: gitflow-abort
|
|
4
|
+
model: sonnet
|
|
5
|
+
args: [option]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Phase 6: ABORT - Rollback & Recovery
|
|
9
|
+
|
|
10
|
+
Tu es expert GitFlow et EF Core. Annule proprement et restaure l'etat precedent.
|
|
11
|
+
|
|
12
|
+
**Argument:** `$ARGUMENTS` = option (--git, --checkpoint, --full, --migrations, --database, --branch)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Workflow
|
|
17
|
+
|
|
18
|
+
### 1. Analyser etat
|
|
19
|
+
|
|
20
|
+
**Operations Git en cours:**
|
|
21
|
+
- Rebase en cours? (`.git/rebase-merge/`)
|
|
22
|
+
- Merge en cours? (`.git/MERGE_HEAD`)
|
|
23
|
+
- Cherry-pick en cours? (`.git/CHERRY_PICK_HEAD`)
|
|
24
|
+
- Conflits? (`git ls-files -u`)
|
|
25
|
+
|
|
26
|
+
**Type de branche (pour --branch):**
|
|
27
|
+
- `feature/*` → abandon feature
|
|
28
|
+
- `release/*` → abandon release
|
|
29
|
+
- `hotfix/*` → abandon hotfix
|
|
30
|
+
- autre → erreur
|
|
31
|
+
|
|
32
|
+
**Ressources disponibles:**
|
|
33
|
+
- Plans actifs dans `.claude/gitflow/plans/`
|
|
34
|
+
- Checkpoints dans `.claude/gitflow/logs/checkpoint_*.json`
|
|
35
|
+
- Backups migrations dans `.claude/gitflow/logs/migrations_backup_*/`
|
|
36
|
+
|
|
37
|
+
### 2. Proposer options (si aucun argument)
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
OPTIONS DE ROLLBACK
|
|
41
|
+
═══════════════════════════════════════════════════════════════
|
|
42
|
+
[1] --git Annuler operation Git (rebase/merge --abort)
|
|
43
|
+
[2] --checkpoint Rollback au checkpoint (reset + restore)
|
|
44
|
+
[3] --full Rollback complet plan (reset hard au debut)
|
|
45
|
+
[4] --migrations Rollback migrations seules (restore fichiers)
|
|
46
|
+
[5] --database Rollback database (ef database update)
|
|
47
|
+
[6] --branch Abandonner branche courante (feature/release/hotfix)
|
|
48
|
+
[0] Annuler
|
|
49
|
+
═══════════════════════════════════════════════════════════════
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Option: --git
|
|
55
|
+
|
|
56
|
+
Annuler operation Git en cours:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
git rebase --abort # si rebase
|
|
60
|
+
git merge --abort # si merge
|
|
61
|
+
git cherry-pick --abort # si cherry-pick
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Option: --checkpoint
|
|
67
|
+
|
|
68
|
+
Rollback au dernier checkpoint:
|
|
69
|
+
|
|
70
|
+
1. Lire commit du checkpoint
|
|
71
|
+
2. Abort operations en cours
|
|
72
|
+
3. Reset hard au commit
|
|
73
|
+
4. Restore migrations si backup existe
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Option: --full
|
|
78
|
+
|
|
79
|
+
Rollback complet au debut du plan:
|
|
80
|
+
|
|
81
|
+
1. Lire commit initial du plan
|
|
82
|
+
2. Reset hard
|
|
83
|
+
3. Marquer plan comme ABORTED
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Option: --migrations
|
|
88
|
+
|
|
89
|
+
Restaurer fichiers migration depuis backup:
|
|
90
|
+
|
|
91
|
+
1. Copier depuis `.claude/gitflow/logs/migrations_backup_*/`
|
|
92
|
+
2. Rebuild pour verifier
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Option: --database {migration}
|
|
97
|
+
|
|
98
|
+
Rollback database:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
dotnet ef database update {migration}
|
|
102
|
+
# ou reset complet:
|
|
103
|
+
dotnet ef database update 0
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Option: --branch (ABANDON)
|
|
109
|
+
|
|
110
|
+
Abandonner la branche courante sans merger. Detection automatique du type.
|
|
111
|
+
|
|
112
|
+
### Workflow abandon
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
1. Detecter type de branche (feature/release/hotfix)
|
|
116
|
+
2. Demander confirmation avec resume
|
|
117
|
+
3. Salvage si applicable (release → corrections vers develop)
|
|
118
|
+
4. Logger l'abandon
|
|
119
|
+
5. Supprimer la branche
|
|
120
|
+
6. Nettoyer worktree si applicable
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Feature → Abandon
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
⚠ ABANDON FEATURE
|
|
127
|
+
|
|
128
|
+
Branche: feature/{name}
|
|
129
|
+
Commits: {n} depuis develop
|
|
130
|
+
|
|
131
|
+
Actions:
|
|
132
|
+
✗ NE PAS merger sur develop
|
|
133
|
+
✓ Archiver (optionnel avec --archive)
|
|
134
|
+
✓ Supprimer la branche
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Options specifiques:**
|
|
138
|
+
- `--archive` : Creer tag `archive/feature/{name}` avant suppression
|
|
139
|
+
- `--keep-local` : Garder branche locale
|
|
140
|
+
|
|
141
|
+
### Release → Abandon
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
⚠ ABANDON RELEASE
|
|
145
|
+
|
|
146
|
+
Branche: release/{version}
|
|
147
|
+
Commits: {n} depuis develop
|
|
148
|
+
- {n} corrections (bug fixes)
|
|
149
|
+
- {n} autres commits
|
|
150
|
+
|
|
151
|
+
Actions:
|
|
152
|
+
✗ NE PAS merger sur main
|
|
153
|
+
✗ NE PAS creer de tag
|
|
154
|
+
✓ Salvage corrections vers develop (sauf si --no-salvage)
|
|
155
|
+
✓ Supprimer la branche
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Options specifiques:**
|
|
159
|
+
- `--salvage` (defaut) : Merge corrections vers develop
|
|
160
|
+
- `--no-salvage` : Ne pas recuperer les corrections
|
|
161
|
+
- `--keep-local` : Garder branche locale
|
|
162
|
+
|
|
163
|
+
**Salvage workflow:**
|
|
164
|
+
```bash
|
|
165
|
+
git checkout develop
|
|
166
|
+
git merge --no-ff release/{version} -m "chore: salvage fixes from abandoned release/{version}"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Hotfix → Abandon
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
⚠ ABANDON HOTFIX
|
|
173
|
+
|
|
174
|
+
Branche: hotfix/{name}
|
|
175
|
+
Commits: {n} depuis main
|
|
176
|
+
|
|
177
|
+
Actions:
|
|
178
|
+
✗ NE PAS merger sur main
|
|
179
|
+
✗ NE PAS merger sur develop
|
|
180
|
+
✓ Supprimer la branche
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Options specifiques:**
|
|
184
|
+
- `--salvage-to-develop` : Merger vers develop (rare)
|
|
185
|
+
- `--keep-local` : Garder branche locale
|
|
186
|
+
|
|
187
|
+
### Log abandon
|
|
188
|
+
|
|
189
|
+
Creer `.claude/gitflow/logs/abort_{timestamp}.json`:
|
|
190
|
+
|
|
191
|
+
```json
|
|
192
|
+
{
|
|
193
|
+
"timestamp": "{ISO_DATE}",
|
|
194
|
+
"type": "branch-abort",
|
|
195
|
+
"branch_type": "feature|release|hotfix",
|
|
196
|
+
"branch_name": "{full_name}",
|
|
197
|
+
"reason": "{raison si fournie}",
|
|
198
|
+
"commits_count": {n},
|
|
199
|
+
"salvaged": true|false,
|
|
200
|
+
"salvage_commit": "{hash}"|null,
|
|
201
|
+
"archived": true|false,
|
|
202
|
+
"archive_tag": "{tag}"|null
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Nettoyage worktree (cleanup automatique)
|
|
207
|
+
|
|
208
|
+
Si la branche utilise un worktree, un cleanup cible est effectue automatiquement:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# Fonction de cleanup cible (appelee automatiquement)
|
|
212
|
+
cleanup_worktree_for_branch() {
|
|
213
|
+
BRANCH=$1
|
|
214
|
+
WORKTREE_BASE="../worktrees"
|
|
215
|
+
|
|
216
|
+
# Determiner le chemin selon le type
|
|
217
|
+
if [[ $BRANCH == feature/* ]]; then
|
|
218
|
+
NAME=${BRANCH#feature/}
|
|
219
|
+
WORKTREE_PATH="$WORKTREE_BASE/features/$NAME"
|
|
220
|
+
elif [[ $BRANCH == release/* ]]; then
|
|
221
|
+
VERSION=${BRANCH#release/}
|
|
222
|
+
WORKTREE_PATH="$WORKTREE_BASE/releases/$VERSION"
|
|
223
|
+
elif [[ $BRANCH == hotfix/* ]]; then
|
|
224
|
+
NAME=${BRANCH#hotfix/}
|
|
225
|
+
WORKTREE_PATH="$WORKTREE_BASE/hotfixes/$NAME"
|
|
226
|
+
fi
|
|
227
|
+
|
|
228
|
+
# Supprimer si existe
|
|
229
|
+
if [ -d "$WORKTREE_PATH" ]; then
|
|
230
|
+
git worktree remove "$WORKTREE_PATH" --force 2>/dev/null || true
|
|
231
|
+
rm -rf "$WORKTREE_PATH" 2>/dev/null || true
|
|
232
|
+
git worktree prune
|
|
233
|
+
echo "✓ Worktree nettoye: $WORKTREE_PATH"
|
|
234
|
+
fi
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
# Appel automatique apres abandon
|
|
238
|
+
cleanup_worktree_for_branch "$BRANCH"
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Note:** Pour un audit complet de tous les worktrees, utilisez:
|
|
242
|
+
|
|
243
|
+
```
|
|
244
|
+
/gitflow:12-cleanup
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Modes complets
|
|
250
|
+
|
|
251
|
+
| Commande | Action |
|
|
252
|
+
|----------|--------|
|
|
253
|
+
| `/gitflow:6-abort` | Analyse + propose options |
|
|
254
|
+
| `/gitflow:6-abort --git` | Annule operation Git |
|
|
255
|
+
| `/gitflow:6-abort --checkpoint` | Rollback dernier checkpoint |
|
|
256
|
+
| `/gitflow:6-abort --full` | Rollback complet |
|
|
257
|
+
| `/gitflow:6-abort --migrations` | Restore migrations |
|
|
258
|
+
| `/gitflow:6-abort --database {mig}` | Rollback DB |
|
|
259
|
+
| `/gitflow:6-abort --branch` | Abandonner branche courante |
|
|
260
|
+
| `/gitflow:6-abort --branch --archive` | Abandon + archive (feature) |
|
|
261
|
+
| `/gitflow:6-abort --branch --no-salvage` | Abandon sans salvage (release) |
|
|
262
|
+
| `/gitflow:6-abort --branch --reason "..."` | Abandon avec raison |
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Scenarios courants
|
|
267
|
+
|
|
268
|
+
**Conflit rebase:**
|
|
269
|
+
```
|
|
270
|
+
/gitflow:6-abort --git
|
|
271
|
+
git fetch origin develop
|
|
272
|
+
/gitflow:4-plan
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**Migration corrompue:**
|
|
276
|
+
```
|
|
277
|
+
/gitflow:6-abort --checkpoint
|
|
278
|
+
/gitflow:3-commit
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**Abandonner feature en cours:**
|
|
282
|
+
```
|
|
283
|
+
/gitflow:6-abort --branch
|
|
284
|
+
# ou avec archive
|
|
285
|
+
/gitflow:6-abort --branch --archive
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**Abandonner release echouee:**
|
|
289
|
+
```
|
|
290
|
+
/gitflow:6-abort --branch
|
|
291
|
+
# Corrections seront salvagees vers develop
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Abandonner hotfix invalide:**
|
|
295
|
+
```
|
|
296
|
+
/gitflow:6-abort --branch
|
|
297
|
+
# Rien n'est merge, branche supprimee
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## Resume post-abandon
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
═══════════════════════════════════════════════════════════════
|
|
306
|
+
BRANCHE ABANDONNEE
|
|
307
|
+
═══════════════════════════════════════════════════════════════
|
|
308
|
+
|
|
309
|
+
Type: {feature|release|hotfix}
|
|
310
|
+
Branche: {nom complet}
|
|
311
|
+
Commits: {n} (perdus|salvages|archives)
|
|
312
|
+
Raison: {raison ou "non specifiee"}
|
|
313
|
+
|
|
314
|
+
Actions effectuees:
|
|
315
|
+
{✓|✗} Salvage vers develop
|
|
316
|
+
{✓|✗} Archive creee
|
|
317
|
+
✓ Branche supprimee
|
|
318
|
+
✓ Worktree nettoye (cleanup automatique)
|
|
319
|
+
|
|
320
|
+
═══════════════════════════════════════════════════════════════
|
|
321
|
+
|
|
322
|
+
Prochaines etapes:
|
|
323
|
+
- Documenter la raison si besoin
|
|
324
|
+
- Creer issue pour suivi si applicable
|
|
325
|
+
- Demarrer nouvelle branche: /gitflow:10-start {type} {nom}
|
|
326
|
+
- Audit complet worktrees: /gitflow:12-cleanup (optionnel)
|
|
327
|
+
|
|
328
|
+
═══════════════════════════════════════════════════════════════
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Recuperation si erreur
|
|
334
|
+
|
|
335
|
+
**Feature archivee:**
|
|
336
|
+
```bash
|
|
337
|
+
git checkout -b feature/{name} archive/feature/{name}
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**Branche non archivee (reflog):**
|
|
341
|
+
```bash
|
|
342
|
+
git reflog
|
|
343
|
+
git checkout -b {branch} {commit-hash}
|
|
344
|
+
```
|