@atlashub/smartstack-cli 1.11.0 → 1.13.1
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 +7 -2
- package/.documentation/apex.html +7 -2
- package/.documentation/business-analyse.html +7 -2
- package/.documentation/cli-commands.html +871 -0
- package/.documentation/commands.html +7 -2
- package/.documentation/efcore.html +7 -2
- package/.documentation/gitflow.html +7 -2
- package/.documentation/hooks.html +7 -2
- package/.documentation/index.html +7 -2
- package/.documentation/init.html +7 -2
- package/.documentation/installation.html +7 -2
- package/.documentation/ralph-loop.html +7 -2
- package/.documentation/test-web.html +7 -2
- package/dist/index.js +1932 -336
- package/dist/index.js.map +1 -1
- package/package.json +8 -2
- package/templates/agents/efcore/squash.md +67 -31
- package/templates/agents/gitflow/finish.md +68 -56
- package/templates/commands/business-analyse/0-orchestrate.md +72 -556
- package/templates/commands/business-analyse/1-init.md +23 -193
- package/templates/commands/business-analyse/2-discover.md +85 -462
- package/templates/commands/business-analyse/3-analyse.md +40 -342
- package/templates/commands/business-analyse/4-specify.md +72 -537
- package/templates/commands/business-analyse/5-validate.md +43 -237
- package/templates/commands/business-analyse/6-handoff.md +93 -682
- package/templates/commands/business-analyse/7-doc-html.md +45 -544
- package/templates/commands/business-analyse/_shared.md +176 -0
- package/templates/commands/business-analyse/bug.md +50 -257
- package/templates/commands/business-analyse/change-request.md +59 -283
- package/templates/commands/business-analyse/hotfix.md +36 -120
- package/templates/commands/business-analyse.md +55 -574
- package/templates/commands/efcore/_shared.md +206 -0
- package/templates/commands/efcore/conflicts.md +39 -201
- package/templates/commands/efcore/db-deploy.md +28 -237
- package/templates/commands/efcore/db-reset.md +41 -390
- package/templates/commands/efcore/db-seed.md +44 -323
- package/templates/commands/efcore/db-status.md +31 -210
- package/templates/commands/efcore/migration.md +45 -368
- package/templates/commands/efcore/rebase-snapshot.md +38 -241
- package/templates/commands/efcore/scan.md +35 -204
- package/templates/commands/efcore/squash.md +158 -251
- package/templates/commands/efcore.md +49 -177
- package/templates/commands/gitflow/1-init.md +94 -1318
- package/templates/commands/gitflow/10-start.md +86 -990
- package/templates/commands/gitflow/11-finish.md +264 -454
- package/templates/commands/gitflow/12-cleanup.md +40 -213
- package/templates/commands/gitflow/2-status.md +51 -386
- package/templates/commands/gitflow/3-commit.md +108 -801
- package/templates/commands/gitflow/4-plan.md +42 -13
- package/templates/commands/gitflow/5-exec.md +60 -5
- package/templates/commands/gitflow/6-abort.md +54 -277
- package/templates/commands/gitflow/7-pull-request.md +74 -717
- package/templates/commands/gitflow/8-review.md +51 -178
- package/templates/commands/gitflow/9-merge.md +74 -404
- package/templates/commands/gitflow/_shared.md +196 -0
- package/templates/commands/quickstart.md +154 -0
- package/templates/commands/ralph-loop/ralph-loop.md +104 -2
- package/templates/hooks/hooks.json +13 -0
- package/templates/hooks/ralph-mcp-logger.sh +46 -0
- package/templates/hooks/ralph-session-end.sh +69 -0
- package/templates/ralph/README.md +91 -0
- package/templates/ralph/ralph.config.yaml +113 -0
- package/templates/scripts/setup-ralph-loop.sh +173 -0
- package/templates/skills/_shared.md +117 -0
- package/templates/skills/ai-prompt/SKILL.md +87 -654
- package/templates/skills/application/SKILL.md +76 -499
- package/templates/skills/controller/SKILL.md +38 -165
- package/templates/skills/documentation/SKILL.md +2 -1
- package/templates/skills/feature-full/SKILL.md +107 -732
- package/templates/skills/notification/SKILL.md +85 -474
- package/templates/skills/ui-components/SKILL.md +62 -762
- package/templates/skills/workflow/SKILL.md +85 -489
- package/templates/commands/gitflow/rescue.md +0 -867
- package/templates/skills/business-analyse/SKILL.md +0 -191
|
@@ -8,6 +8,8 @@ model: sonnet
|
|
|
8
8
|
|
|
9
9
|
Tu es expert GitFlow et EF Core. Cree un plan d'integration pour la branche courante.
|
|
10
10
|
|
|
11
|
+
> **Ref:** Fonction `determine_base_branch()` dans [efcore/_shared.md](../efcore/_shared.md)
|
|
12
|
+
|
|
11
13
|
---
|
|
12
14
|
|
|
13
15
|
## Pre-validation (OBLIGATOIRE)
|
|
@@ -38,11 +40,28 @@ fi
|
|
|
38
40
|
|
|
39
41
|
## Workflow
|
|
40
42
|
|
|
43
|
+
### 0. Determiner branche parente (CRITIQUE)
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Utiliser determine_base_branch() de efcore/_shared.md
|
|
47
|
+
determine_base_branch
|
|
48
|
+
|
|
49
|
+
# Resultat:
|
|
50
|
+
# - BASE_BRANCH = branche parente (develop pour feature, main pour release/hotfix)
|
|
51
|
+
# - BRANCH_TYPE = type de branche courante
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
| Branche courante | BASE_BRANCH | Cible merge |
|
|
55
|
+
|------------------|-------------|-------------|
|
|
56
|
+
| `feature/*` | `develop` | develop |
|
|
57
|
+
| `release/*` | `main` | main + develop |
|
|
58
|
+
| `hotfix/*` | `main` | main + develop |
|
|
59
|
+
|
|
41
60
|
### 1. Analyser contexte
|
|
42
61
|
|
|
43
62
|
**Git:**
|
|
44
63
|
- Branche courante et type (feature/release/hotfix)
|
|
45
|
-
- Commits depuis divergence avec
|
|
64
|
+
- Commits depuis divergence avec `$BASE_BRANCH`
|
|
46
65
|
- Fichiers modifies
|
|
47
66
|
|
|
48
67
|
**Version:**
|
|
@@ -51,29 +70,29 @@ fi
|
|
|
51
70
|
|
|
52
71
|
**EF Core:**
|
|
53
72
|
- Migrations sur cette branche
|
|
54
|
-
- Migrations sur
|
|
55
|
-
- Conflit ModelSnapshot
|
|
73
|
+
- Migrations sur `$BASE_BRANCH` (absentes ici)
|
|
74
|
+
- Conflit ModelSnapshot vs `$BASE_BRANCH`?
|
|
56
75
|
|
|
57
76
|
### 2. Determiner strategie
|
|
58
77
|
|
|
59
|
-
**Feature → Develop:**
|
|
78
|
+
**Feature → Develop (BASE_BRANCH=develop):**
|
|
60
79
|
| Condition | Strategie |
|
|
61
80
|
|-----------|-----------|
|
|
62
81
|
| Pas de migrations | Rebase + Merge --no-ff |
|
|
63
82
|
| Migrations sans conflit | Rebase + Merge --no-ff |
|
|
64
|
-
| Conflit ModelSnapshot |
|
|
83
|
+
| Conflit ModelSnapshot | Fetch snapshot develop + Remove migration + Re-add |
|
|
65
84
|
|
|
66
|
-
**Release → Main + Develop:**
|
|
85
|
+
**Release → Main + Develop (BASE_BRANCH=main):**
|
|
67
86
|
| Condition | Strategie |
|
|
68
87
|
|-----------|-----------|
|
|
69
88
|
| Release stable | Tag v{VERSION} + Double merge |
|
|
70
|
-
| Migrations pending | Script SQL idempotent |
|
|
89
|
+
| Migrations pending | Fetch snapshot main + Script SQL idempotent |
|
|
71
90
|
| Version | Auto-increment minor |
|
|
72
91
|
|
|
73
|
-
**Hotfix → Main + Develop:**
|
|
92
|
+
**Hotfix → Main + Develop (BASE_BRANCH=main):**
|
|
74
93
|
| Condition | Strategie |
|
|
75
94
|
|-----------|-----------|
|
|
76
|
-
| Migration urgente | Prefix `Hotfix_` + Script SQL |
|
|
95
|
+
| Migration urgente | Fetch snapshot main + Prefix `Hotfix_` + Script SQL |
|
|
77
96
|
| Version | Auto-increment patch |
|
|
78
97
|
|
|
79
98
|
### 3. Generate plan file
|
|
@@ -135,11 +154,21 @@ Executez:
|
|
|
135
154
|
|
|
136
155
|
## Cas speciaux
|
|
137
156
|
|
|
138
|
-
**Migrations sur les deux branches:**
|
|
139
|
-
-
|
|
140
|
-
-
|
|
141
|
-
-
|
|
157
|
+
**Migrations sur les deux branches (feature):**
|
|
158
|
+
- Recuperer snapshot de `$BASE_BRANCH` (develop)
|
|
159
|
+
- Supprimer migrations de la feature
|
|
160
|
+
- Regenerer migration consolidee
|
|
161
|
+
- `dotnet ef migrations add {Feature}_Consolidated`
|
|
162
|
+
|
|
163
|
+
**Migrations sur les deux branches (release/hotfix):**
|
|
164
|
+
- Recuperer snapshot de `$BASE_BRANCH` (main)
|
|
165
|
+
- Supprimer migrations de la branche
|
|
166
|
+
- Regenerer migration consolidee
|
|
167
|
+
- Script SQL idempotent pour production
|
|
142
168
|
|
|
143
169
|
**Hotfix avec migration:**
|
|
144
170
|
- Prefix migration `Hotfix_`
|
|
171
|
+
- Recuperer snapshot main AVANT de creer
|
|
145
172
|
- Script SQL FROM derniere migration main
|
|
173
|
+
|
|
174
|
+
**Regle d'or:** Toujours `git checkout origin/$BASE_BRANCH -- *ModelSnapshot.cs` AVANT de regenerer
|
|
@@ -11,6 +11,8 @@ Tu es expert GitFlow et EF Core. Execute le plan d'integration de maniere securi
|
|
|
11
11
|
|
|
12
12
|
**Argument:** `$ARGUMENTS` = chemin plan (optionnel, prend le plus recent)
|
|
13
13
|
|
|
14
|
+
> **Ref:** Fonction `determine_base_branch()` dans [efcore/_shared.md](../efcore/_shared.md)
|
|
15
|
+
|
|
14
16
|
---
|
|
15
17
|
|
|
16
18
|
## Pre-validation (OBLIGATOIRE)
|
|
@@ -44,6 +46,23 @@ fi
|
|
|
44
46
|
- Find plan file (argument or most recent in [.claude/gitflow/plans/](.claude/gitflow/plans/))
|
|
45
47
|
- Extract: source branch, target, initial commit, version
|
|
46
48
|
|
|
49
|
+
### 1.5 Determiner branche parente (CRITIQUE)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Utiliser determine_base_branch() de efcore/_shared.md
|
|
53
|
+
determine_base_branch
|
|
54
|
+
|
|
55
|
+
# Resultat:
|
|
56
|
+
# - BASE_BRANCH = branche parente (develop pour feature, main pour release/hotfix)
|
|
57
|
+
# - BRANCH_TYPE = type de branche courante
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
| Type branche | BASE_BRANCH | Snapshot a recuperer |
|
|
61
|
+
|--------------|-------------|---------------------|
|
|
62
|
+
| `feature/*` | `develop` | `origin/develop` |
|
|
63
|
+
| `release/*` | `main` | `origin/main` |
|
|
64
|
+
| `hotfix/*` | `main` | `origin/main` |
|
|
65
|
+
|
|
47
66
|
### 2. Verifier pre-requis
|
|
48
67
|
|
|
49
68
|
- Working directory propre
|
|
@@ -119,12 +138,48 @@ git commit -m "chore(gitflow): archive integration plan and checkpoint"
|
|
|
119
138
|
|
|
120
139
|
---
|
|
121
140
|
|
|
122
|
-
## Gestion conflits ModelSnapshot
|
|
141
|
+
## Gestion conflits ModelSnapshot (CRITIQUE)
|
|
142
|
+
|
|
143
|
+
**Regle d'or:** Toujours recuperer le snapshot de `$BASE_BRANCH` (pas hardcode "develop"!)
|
|
123
144
|
|
|
124
|
-
Si conflit pendant rebase:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
145
|
+
Si conflit pendant rebase ou integration:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# 1. Backup migrations actuelles
|
|
149
|
+
BACKUP_DIR=".claude/gitflow/backup/migrations/exec_$(date +%Y%m%d_%H%M%S)"
|
|
150
|
+
mkdir -p "$BACKUP_DIR"
|
|
151
|
+
cp Migrations/*.cs "$BACKUP_DIR/"
|
|
152
|
+
|
|
153
|
+
# 2. Recuperer ModelSnapshot de la branche PARENTE (CRUCIAL)
|
|
154
|
+
git fetch origin "$BASE_BRANCH" --quiet
|
|
155
|
+
git checkout "origin/$BASE_BRANCH" -- Migrations/*ModelSnapshot.cs
|
|
156
|
+
|
|
157
|
+
# 3. Identifier et supprimer migrations de cette branche uniquement
|
|
158
|
+
BASE_MIGRATIONS=$(git ls-tree -r --name-only "origin/$BASE_BRANCH" -- Migrations/ | grep "\.cs$")
|
|
159
|
+
for mig in $(find Migrations -name "*.cs" -not -name "*Snapshot*" -not -name "*Designer*"); do
|
|
160
|
+
MIG_NAME=$(basename "$mig")
|
|
161
|
+
echo "$BASE_MIGRATIONS" | grep -q "$MIG_NAME" || rm -f "$mig" "${mig%.cs}.Designer.cs"
|
|
162
|
+
done
|
|
163
|
+
|
|
164
|
+
# 4. Regenerer migration consolidee
|
|
165
|
+
dotnet ef migrations add "${BRANCH_TYPE}_Consolidated"
|
|
166
|
+
|
|
167
|
+
# 5. Valider
|
|
168
|
+
dotnet build --no-restore
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
| Branche | BASE_BRANCH | Snapshot recupere de |
|
|
172
|
+
|---------|-------------|---------------------|
|
|
173
|
+
| `feature/*` | `develop` | `origin/develop` |
|
|
174
|
+
| `release/*` | `main` | `origin/main` |
|
|
175
|
+
| `hotfix/*` | `main` | `origin/main` |
|
|
176
|
+
|
|
177
|
+
**Si rebase en cours:**
|
|
178
|
+
```bash
|
|
179
|
+
git checkout "origin/$BASE_BRANCH" -- Migrations/*ModelSnapshot.cs
|
|
180
|
+
git add Migrations/
|
|
181
|
+
git rebase --continue
|
|
182
|
+
```
|
|
128
183
|
|
|
129
184
|
---
|
|
130
185
|
|
|
@@ -7,338 +7,115 @@ args: [option]
|
|
|
7
7
|
|
|
8
8
|
# Phase 6: ABORT - Rollback & Recovery
|
|
9
9
|
|
|
10
|
-
Tu es expert GitFlow et EF Core. Annule proprement et restaure l'etat precedent.
|
|
11
|
-
|
|
12
10
|
**Argument:** `$ARGUMENTS` = option (--git, --checkpoint, --full, --migrations, --database, --branch)
|
|
13
11
|
|
|
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
|
|
12
|
+
> **Ref:** Fonction `cleanup_worktree_for_branch()` dans [_shared.md](_shared.md)
|
|
31
13
|
|
|
32
|
-
|
|
33
|
-
- Plans actifs dans `.claude/gitflow/plans/`
|
|
34
|
-
- Checkpoints dans `.claude/gitflow/logs/checkpoint_*.json`
|
|
35
|
-
- Backups migrations dans `.claude/gitflow/logs/migrations_backup_*/`
|
|
14
|
+
---
|
|
36
15
|
|
|
37
|
-
|
|
16
|
+
## Analyse état
|
|
38
17
|
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
[
|
|
43
|
-
[
|
|
44
|
-
|
|
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
|
-
═══════════════════════════════════════════════════════════════
|
|
18
|
+
```bash
|
|
19
|
+
# Opérations Git en cours
|
|
20
|
+
[ -d ".git/rebase-merge" ] && echo "Rebase en cours"
|
|
21
|
+
[ -f ".git/MERGE_HEAD" ] && echo "Merge en cours"
|
|
22
|
+
[ -f ".git/CHERRY_PICK_HEAD" ] && echo "Cherry-pick en cours"
|
|
23
|
+
git ls-files -u | grep -q . && echo "Conflits détectés"
|
|
50
24
|
```
|
|
51
25
|
|
|
52
26
|
---
|
|
53
27
|
|
|
54
|
-
##
|
|
28
|
+
## Options
|
|
55
29
|
|
|
56
|
-
Annuler
|
|
30
|
+
### --git (Annuler opération Git)
|
|
57
31
|
|
|
58
32
|
```bash
|
|
59
|
-
git rebase --abort
|
|
60
|
-
git merge --abort # si merge
|
|
61
|
-
git cherry-pick --abort # si cherry-pick
|
|
33
|
+
git rebase --abort 2>/dev/null || git merge --abort 2>/dev/null || git cherry-pick --abort 2>/dev/null
|
|
62
34
|
```
|
|
63
35
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
## Option: --checkpoint
|
|
67
|
-
|
|
68
|
-
Rollback au dernier checkpoint:
|
|
36
|
+
### --checkpoint (Rollback checkpoint)
|
|
69
37
|
|
|
70
38
|
1. Lire commit du checkpoint
|
|
71
|
-
2. Abort
|
|
39
|
+
2. Abort opérations en cours
|
|
72
40
|
3. Reset hard au commit
|
|
73
41
|
4. Restore migrations si backup existe
|
|
74
42
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
## Option: --full
|
|
78
|
-
|
|
79
|
-
Rollback complet au debut du plan:
|
|
43
|
+
### --full (Rollback complet plan)
|
|
80
44
|
|
|
81
45
|
1. Lire commit initial du plan
|
|
82
46
|
2. Reset hard
|
|
83
|
-
3. Marquer plan
|
|
84
|
-
|
|
85
|
-
---
|
|
47
|
+
3. Marquer plan ABORTED
|
|
86
48
|
|
|
87
|
-
|
|
49
|
+
### --migrations (Restore fichiers migration)
|
|
88
50
|
|
|
89
|
-
|
|
51
|
+
Copier depuis `.claude/gitflow/logs/migrations_backup_*/`
|
|
90
52
|
|
|
91
|
-
|
|
92
|
-
2. Rebuild pour verifier
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Option: --database {migration}
|
|
97
|
-
|
|
98
|
-
Rollback database:
|
|
53
|
+
### --database {migration}
|
|
99
54
|
|
|
100
55
|
```bash
|
|
101
56
|
dotnet ef database update {migration}
|
|
102
|
-
#
|
|
103
|
-
dotnet ef database update 0
|
|
57
|
+
# Reset complet: dotnet ef database update 0
|
|
104
58
|
```
|
|
105
59
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
## Option: --branch (ABANDON)
|
|
109
|
-
|
|
110
|
-
Abandonner la branche courante sans merger. Detection automatique du type.
|
|
111
|
-
|
|
112
|
-
### Workflow abandon
|
|
60
|
+
### --branch (Abandonner branche)
|
|
113
61
|
|
|
62
|
+
#### Feature
|
|
114
63
|
```
|
|
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
64
|
✗ NE PAS merger sur develop
|
|
133
|
-
✓ Archiver (
|
|
134
|
-
✓ Supprimer
|
|
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}"
|
|
65
|
+
✓ Archiver (--archive)
|
|
66
|
+
✓ Supprimer branche + worktree
|
|
167
67
|
```
|
|
168
68
|
|
|
169
|
-
|
|
170
|
-
|
|
69
|
+
#### Release
|
|
171
70
|
```
|
|
172
|
-
⚠ ABANDON HOTFIX
|
|
173
|
-
|
|
174
|
-
Branche: hotfix/{name}
|
|
175
|
-
Commits: {n} depuis main
|
|
176
|
-
|
|
177
|
-
Actions:
|
|
178
71
|
✗ NE PAS merger sur main
|
|
179
|
-
✗ NE PAS
|
|
180
|
-
✓
|
|
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"
|
|
72
|
+
✗ NE PAS créer de tag
|
|
73
|
+
✓ Salvage corrections → develop (sauf --no-salvage)
|
|
74
|
+
✓ Supprimer branche + worktree
|
|
239
75
|
```
|
|
240
76
|
|
|
241
|
-
|
|
242
|
-
|
|
77
|
+
#### Hotfix
|
|
243
78
|
```
|
|
244
|
-
/
|
|
79
|
+
✗ NE PAS merger sur main/develop
|
|
80
|
+
✓ Supprimer branche + worktree
|
|
245
81
|
```
|
|
246
82
|
|
|
247
83
|
---
|
|
248
84
|
|
|
249
|
-
##
|
|
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
|
-
---
|
|
85
|
+
## Résumé post-abandon
|
|
265
86
|
|
|
266
|
-
## Scenarios courants
|
|
267
|
-
|
|
268
|
-
**Conflit rebase:**
|
|
269
|
-
```
|
|
270
|
-
/gitflow:6-abort --git
|
|
271
|
-
git fetch origin develop
|
|
272
|
-
/gitflow:4-plan
|
|
273
87
|
```
|
|
88
|
+
BRANCHE ABANDONNÉE
|
|
89
|
+
- Type: {feature|release|hotfix}
|
|
90
|
+
- Branche: {nom}
|
|
91
|
+
- Commits: {n} (perdus|salvagés|archivés)
|
|
92
|
+
- Salvage: {done|skipped}
|
|
93
|
+
- Worktree: nettoyé ✓
|
|
274
94
|
|
|
275
|
-
|
|
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
|
|
95
|
+
→ Prochain: /gitflow:10-start {type} {nom}
|
|
298
96
|
```
|
|
299
97
|
|
|
300
98
|
---
|
|
301
99
|
|
|
302
|
-
##
|
|
100
|
+
## Récupération
|
|
303
101
|
|
|
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
102
|
```bash
|
|
103
|
+
# Feature archivée
|
|
337
104
|
git checkout -b feature/{name} archive/feature/{name}
|
|
338
|
-
```
|
|
339
105
|
|
|
340
|
-
|
|
341
|
-
```bash
|
|
106
|
+
# Via reflog
|
|
342
107
|
git reflog
|
|
343
108
|
git checkout -b {branch} {commit-hash}
|
|
344
109
|
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Modes
|
|
114
|
+
|
|
115
|
+
| Commande | Action |
|
|
116
|
+
|----------|--------|
|
|
117
|
+
| `/gitflow:6-abort` | Analyse + propose |
|
|
118
|
+
| `/gitflow:6-abort --git` | Annule opération Git |
|
|
119
|
+
| `/gitflow:6-abort --branch` | Abandonner branche |
|
|
120
|
+
| `/gitflow:6-abort --branch --archive` | Abandon + archive |
|
|
121
|
+
| `/gitflow:6-abort --branch --no-salvage` | Sans salvage |
|