@atlashub/smartstack-cli 1.1.0
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 +912 -0
- package/.documentation/apex.html +1014 -0
- package/.documentation/business-analyse.html +1074 -0
- package/.documentation/commands.html +676 -0
- package/.documentation/css/styles.css +2030 -0
- package/.documentation/efcore.html +2501 -0
- package/.documentation/gitflow.html +2053 -0
- package/.documentation/hooks.html +409 -0
- package/.documentation/index.html +319 -0
- package/.documentation/installation.html +458 -0
- package/.documentation/js/app.js +794 -0
- package/.documentation/test-web.html +509 -0
- package/README.md +90 -0
- package/config/default-config.json +86 -0
- package/config/settings.json +53 -0
- package/config/settings.local.example.json +16 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +38198 -0
- package/dist/index.js.map +1 -0
- package/package.json +86 -0
- package/templates/agents/action.md +36 -0
- package/templates/agents/efcore/conflicts.md +57 -0
- package/templates/agents/efcore/db-deploy.md +51 -0
- package/templates/agents/efcore/db-reset.md +59 -0
- package/templates/agents/efcore/db-seed.md +56 -0
- package/templates/agents/efcore/db-status.md +43 -0
- package/templates/agents/efcore/migration.md +85 -0
- package/templates/agents/efcore/rebase-snapshot.md +62 -0
- package/templates/agents/efcore/scan.md +60 -0
- package/templates/agents/efcore/squash.md +67 -0
- package/templates/agents/explore-codebase.md +65 -0
- package/templates/agents/explore-docs.md +97 -0
- package/templates/agents/fix-grammar.md +49 -0
- package/templates/agents/gitflow/abort.md +45 -0
- package/templates/agents/gitflow/cleanup.md +85 -0
- package/templates/agents/gitflow/commit.md +40 -0
- package/templates/agents/gitflow/exec.md +48 -0
- package/templates/agents/gitflow/finish.md +92 -0
- package/templates/agents/gitflow/init.md +139 -0
- package/templates/agents/gitflow/merge.md +62 -0
- package/templates/agents/gitflow/plan.md +42 -0
- package/templates/agents/gitflow/pr.md +78 -0
- package/templates/agents/gitflow/review.md +49 -0
- package/templates/agents/gitflow/start.md +61 -0
- package/templates/agents/gitflow/status.md +32 -0
- package/templates/agents/snipper.md +36 -0
- package/templates/agents/websearch.md +46 -0
- package/templates/commands/_resources/formatting-guide.md +124 -0
- package/templates/commands/ai-prompt.md +315 -0
- package/templates/commands/apex/1-analyze.md +100 -0
- package/templates/commands/apex/2-plan.md +145 -0
- package/templates/commands/apex/3-execute.md +171 -0
- package/templates/commands/apex/4-examine.md +116 -0
- package/templates/commands/apex/5-tasks.md +209 -0
- package/templates/commands/apex.md +76 -0
- package/templates/commands/application/create.md +362 -0
- package/templates/commands/application/templates-backend.md +463 -0
- package/templates/commands/application/templates-frontend.md +517 -0
- package/templates/commands/application/templates-i18n.md +478 -0
- package/templates/commands/application/templates-seed.md +362 -0
- package/templates/commands/application.md +303 -0
- package/templates/commands/business-analyse/1-init.md +269 -0
- package/templates/commands/business-analyse/2-discover.md +520 -0
- package/templates/commands/business-analyse/3-analyse.md +408 -0
- package/templates/commands/business-analyse/4-specify.md +598 -0
- package/templates/commands/business-analyse/5-validate.md +326 -0
- package/templates/commands/business-analyse/6-handoff.md +746 -0
- package/templates/commands/business-analyse/7-doc-html.md +602 -0
- package/templates/commands/business-analyse/bug.md +325 -0
- package/templates/commands/business-analyse/change-request.md +368 -0
- package/templates/commands/business-analyse/hotfix.md +200 -0
- package/templates/commands/business-analyse.md +559 -0
- package/templates/commands/controller/create.md +216 -0
- package/templates/commands/controller/postman-templates.md +528 -0
- package/templates/commands/controller/templates.md +600 -0
- package/templates/commands/controller.md +278 -0
- package/templates/commands/debug.md +95 -0
- package/templates/commands/documentation/module.md +202 -0
- package/templates/commands/documentation/templates.md +432 -0
- package/templates/commands/documentation.md +190 -0
- package/templates/commands/efcore/_env-check.md +153 -0
- package/templates/commands/efcore/conflicts.md +269 -0
- package/templates/commands/efcore/db-deploy.md +193 -0
- package/templates/commands/efcore/db-reset.md +426 -0
- package/templates/commands/efcore/db-seed.md +326 -0
- package/templates/commands/efcore/db-status.md +214 -0
- package/templates/commands/efcore/migration.md +388 -0
- package/templates/commands/efcore/rebase-snapshot.md +264 -0
- package/templates/commands/efcore/scan.md +202 -0
- package/templates/commands/efcore/squash.md +298 -0
- package/templates/commands/efcore.md +176 -0
- package/templates/commands/epct.md +69 -0
- package/templates/commands/explain.md +186 -0
- package/templates/commands/explore.md +45 -0
- package/templates/commands/feature-full.md +267 -0
- package/templates/commands/gitflow/1-init.md +1038 -0
- package/templates/commands/gitflow/10-start.md +768 -0
- package/templates/commands/gitflow/11-finish.md +323 -0
- package/templates/commands/gitflow/12-cleanup.md +276 -0
- package/templates/commands/gitflow/13-sync.md +216 -0
- package/templates/commands/gitflow/14-rebase.md +251 -0
- package/templates/commands/gitflow/2-status.md +167 -0
- package/templates/commands/gitflow/3-commit.md +194 -0
- package/templates/commands/gitflow/4-plan.md +145 -0
- package/templates/commands/gitflow/5-exec.md +147 -0
- package/templates/commands/gitflow/6-abort.md +344 -0
- package/templates/commands/gitflow/7-pull-request.md +226 -0
- package/templates/commands/gitflow/8-review.md +176 -0
- package/templates/commands/gitflow/9-merge.md +224 -0
- package/templates/commands/gitflow.md +128 -0
- package/templates/commands/implement.md +663 -0
- package/templates/commands/notification.md +129 -0
- package/templates/commands/oneshot.md +57 -0
- package/templates/commands/quick-search.md +72 -0
- package/templates/commands/review.md +106 -0
- package/templates/commands/utils/test-web-config.md +160 -0
- package/templates/commands/utils/test-web.md +151 -0
- package/templates/commands/workflow.md +193 -0
- package/templates/gitflow/config.json +138 -0
- package/templates/hooks/ef-migration-check.md +139 -0
- package/templates/hooks/hooks.json +15 -0
- package/templates/skills/ai-prompt/SKILL.md +778 -0
- package/templates/skills/application/SKILL.md +563 -0
- package/templates/skills/application/templates-backend.md +450 -0
- package/templates/skills/application/templates-frontend.md +531 -0
- package/templates/skills/application/templates-i18n.md +520 -0
- package/templates/skills/application/templates-seed.md +647 -0
- package/templates/skills/business-analyse/SKILL.md +191 -0
- package/templates/skills/business-analyse/questionnaire.md +283 -0
- package/templates/skills/business-analyse/templates-frd.md +477 -0
- package/templates/skills/business-analyse/templates-react.md +580 -0
- package/templates/skills/controller/SKILL.md +240 -0
- package/templates/skills/controller/postman-templates.md +614 -0
- package/templates/skills/controller/templates.md +1468 -0
- package/templates/skills/documentation/SKILL.md +133 -0
- package/templates/skills/documentation/templates.md +476 -0
- package/templates/skills/feature-full/SKILL.md +838 -0
- package/templates/skills/notification/SKILL.md +555 -0
- package/templates/skills/ui-components/SKILL.md +870 -0
- package/templates/skills/workflow/SKILL.md +582 -0
- package/templates/test-web/api-health.json +38 -0
- package/templates/test-web/minimal.json +19 -0
- package/templates/test-web/npm-package.json +46 -0
- package/templates/test-web/seo-check.json +54 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Phase 13 - Sync local branch with remote (push/pull)
|
|
3
|
+
agent: gitflow-status
|
|
4
|
+
model: haiku
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Phase 13: SYNC - Synchronize with Remote
|
|
8
|
+
|
|
9
|
+
Synchronise la branche locale avec sa branche remote tracking.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## STEP 1: Fetch et analyse
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Fetch pour avoir les infos a jour
|
|
17
|
+
git fetch --quiet 2>/dev/null
|
|
18
|
+
|
|
19
|
+
BRANCH=$(git branch --show-current)
|
|
20
|
+
UPSTREAM=$(git rev-parse --abbrev-ref @{upstream} 2>/dev/null)
|
|
21
|
+
|
|
22
|
+
echo "Branche locale: $BRANCH"
|
|
23
|
+
echo "Remote tracking: $UPSTREAM"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## STEP 2: Determiner l'action necessaire
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
if [ -z "$UPSTREAM" ]; then
|
|
32
|
+
# Pas de remote tracking - proposer push initial
|
|
33
|
+
ACTION="PUSH_NEW"
|
|
34
|
+
echo "Status: NO REMOTE - branche non pushee"
|
|
35
|
+
else
|
|
36
|
+
LOCAL=$(git rev-parse @)
|
|
37
|
+
REMOTE=$(git rev-parse @{upstream})
|
|
38
|
+
BASE=$(git merge-base @ @{upstream})
|
|
39
|
+
|
|
40
|
+
if [ "$LOCAL" = "$REMOTE" ]; then
|
|
41
|
+
ACTION="UP_TO_DATE"
|
|
42
|
+
echo "Status: UP-TO-DATE - rien a faire"
|
|
43
|
+
elif [ "$LOCAL" = "$BASE" ]; then
|
|
44
|
+
BEHIND=$(git rev-list --count @..@{upstream})
|
|
45
|
+
ACTION="PULL"
|
|
46
|
+
echo "Status: BEHIND $BEHIND commits - pull needed"
|
|
47
|
+
elif [ "$REMOTE" = "$BASE" ]; then
|
|
48
|
+
AHEAD=$(git rev-list --count @{upstream}..@)
|
|
49
|
+
ACTION="PUSH"
|
|
50
|
+
echo "Status: AHEAD $AHEAD commits - push needed"
|
|
51
|
+
else
|
|
52
|
+
AHEAD=$(git rev-list --count @{upstream}..@)
|
|
53
|
+
BEHIND=$(git rev-list --count @..@{upstream})
|
|
54
|
+
ACTION="DIVERGED"
|
|
55
|
+
echo "Status: DIVERGED +$AHEAD/-$BEHIND - pull --rebase needed"
|
|
56
|
+
fi
|
|
57
|
+
fi
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## STEP 3: Executer l'action
|
|
63
|
+
|
|
64
|
+
### Si UP_TO_DATE
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
================================================================================
|
|
68
|
+
ALREADY SYNCHRONIZED
|
|
69
|
+
================================================================================
|
|
70
|
+
|
|
71
|
+
Branche: {branch}
|
|
72
|
+
Remote: {upstream}
|
|
73
|
+
Status: UP-TO-DATE
|
|
74
|
+
|
|
75
|
+
Rien a faire.
|
|
76
|
+
|
|
77
|
+
================================================================================
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Si PUSH_NEW (pas de remote)
|
|
81
|
+
|
|
82
|
+
```javascript
|
|
83
|
+
AskUserQuestion({
|
|
84
|
+
questions: [{
|
|
85
|
+
question: "Push this branch to remote for the first time?",
|
|
86
|
+
header: "Push new",
|
|
87
|
+
options: [
|
|
88
|
+
{ label: "Yes, push", description: "git push -u origin {branch}" },
|
|
89
|
+
{ label: "No, cancel", description: "Keep local only" }
|
|
90
|
+
],
|
|
91
|
+
multiSelect: false
|
|
92
|
+
}]
|
|
93
|
+
})
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Si Yes:**
|
|
97
|
+
```bash
|
|
98
|
+
git push -u origin "$BRANCH"
|
|
99
|
+
echo "Branche pushee et tracking configure"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Si PULL
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
echo "Pulling $BEHIND commits from remote..."
|
|
106
|
+
git pull --ff-only
|
|
107
|
+
|
|
108
|
+
if [ $? -ne 0 ]; then
|
|
109
|
+
echo "WARNING: Fast-forward not possible, trying rebase..."
|
|
110
|
+
git pull --rebase
|
|
111
|
+
fi
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Si PUSH
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
echo "Pushing $AHEAD commits to remote..."
|
|
118
|
+
git push
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Si DIVERGED
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
AskUserQuestion({
|
|
125
|
+
questions: [{
|
|
126
|
+
question: "Branch has diverged from remote. How to resolve?",
|
|
127
|
+
header: "Diverged",
|
|
128
|
+
options: [
|
|
129
|
+
{ label: "Pull --rebase (recommended)", description: "Rebase local commits on top of remote" },
|
|
130
|
+
{ label: "Force push", description: "Overwrite remote with local (DANGEROUS)" },
|
|
131
|
+
{ label: "Cancel", description: "Review manually first" }
|
|
132
|
+
],
|
|
133
|
+
multiSelect: false
|
|
134
|
+
}]
|
|
135
|
+
})
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Si Pull --rebase:**
|
|
139
|
+
```bash
|
|
140
|
+
git pull --rebase
|
|
141
|
+
if [ $? -ne 0 ]; then
|
|
142
|
+
echo "CONFLITS DETECTES - resolvez puis: git rebase --continue"
|
|
143
|
+
exit 1
|
|
144
|
+
fi
|
|
145
|
+
git push
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Si Force push:**
|
|
149
|
+
```bash
|
|
150
|
+
# Double confirmation pour force push
|
|
151
|
+
echo "WARNING: Force push va ecraser les commits distants!"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
```javascript
|
|
155
|
+
AskUserQuestion({
|
|
156
|
+
questions: [{
|
|
157
|
+
question: "CONFIRM: Force push will overwrite remote commits. Are you sure?",
|
|
158
|
+
header: "Force push",
|
|
159
|
+
options: [
|
|
160
|
+
{ label: "Yes, force push", description: "I understand the risk" },
|
|
161
|
+
{ label: "No, cancel", description: "Abort operation" }
|
|
162
|
+
],
|
|
163
|
+
multiSelect: false
|
|
164
|
+
}]
|
|
165
|
+
})
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
git push --force-with-lease
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## STEP 4: Verification
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
echo ""
|
|
178
|
+
echo "Verification post-sync..."
|
|
179
|
+
|
|
180
|
+
LOCAL=$(git rev-parse @)
|
|
181
|
+
REMOTE=$(git rev-parse @{upstream} 2>/dev/null)
|
|
182
|
+
|
|
183
|
+
if [ "$LOCAL" = "$REMOTE" ]; then
|
|
184
|
+
echo "SYNCHRONIZED"
|
|
185
|
+
else
|
|
186
|
+
echo "WARNING: Still not synchronized"
|
|
187
|
+
git status
|
|
188
|
+
fi
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Summary
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
================================================================================
|
|
197
|
+
SYNC COMPLETE
|
|
198
|
+
================================================================================
|
|
199
|
+
|
|
200
|
+
Branche: {branch}
|
|
201
|
+
Remote: origin/{branch}
|
|
202
|
+
Action: {PULL|PUSH|PUSH_NEW|REBASE}
|
|
203
|
+
Status: SYNCHRONIZED
|
|
204
|
+
|
|
205
|
+
================================================================================
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Codes sortie
|
|
211
|
+
|
|
212
|
+
| Code | Signification |
|
|
213
|
+
|------|---------------|
|
|
214
|
+
| 0 | Sync reussie |
|
|
215
|
+
| 1 | Conflits (rebase en cours) |
|
|
216
|
+
| 2 | Erreur reseau ou permission |
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Phase 14 - Rebase current branch on develop (or specified base)
|
|
3
|
+
agent: gitflow-status
|
|
4
|
+
model: haiku
|
|
5
|
+
argument-hint: "[base-branch]"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Phase 14: REBASE - Rebase on Base Branch
|
|
9
|
+
|
|
10
|
+
Rebase la branche courante sur develop (ou une autre branche specifiee).
|
|
11
|
+
|
|
12
|
+
**Usage:**
|
|
13
|
+
- `/gitflow:14-rebase` - Rebase sur develop (default)
|
|
14
|
+
- `/gitflow:14-rebase main` - Rebase sur main
|
|
15
|
+
- `/gitflow:14-rebase feature/other` - Rebase sur une autre feature
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## STEP 1: Verification pre-rebase
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
BRANCH=$(git branch --show-current)
|
|
23
|
+
BASE_BRANCH="${1:-develop}"
|
|
24
|
+
|
|
25
|
+
echo "Branche courante: $BRANCH"
|
|
26
|
+
echo "Branche cible: $BASE_BRANCH"
|
|
27
|
+
|
|
28
|
+
# Verifier working directory clean
|
|
29
|
+
if [ -n "$(git status --porcelain)" ]; then
|
|
30
|
+
echo "ERROR: Working directory not clean"
|
|
31
|
+
git status --short
|
|
32
|
+
exit 1
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
# Verifier que la branche cible existe
|
|
36
|
+
if ! git rev-parse --verify "$BASE_BRANCH" >/dev/null 2>&1; then
|
|
37
|
+
echo "ERROR: Branch '$BASE_BRANCH' does not exist"
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## STEP 2: Fetch et analyse divergence
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
git fetch --quiet 2>/dev/null
|
|
48
|
+
|
|
49
|
+
# Calculer divergence
|
|
50
|
+
AHEAD=$(git rev-list --count "$BASE_BRANCH".."$BRANCH")
|
|
51
|
+
BEHIND=$(git rev-list --count "$BRANCH".."$BASE_BRANCH")
|
|
52
|
+
|
|
53
|
+
echo ""
|
|
54
|
+
echo "Divergence vs $BASE_BRANCH:"
|
|
55
|
+
echo " Commits ahead: $AHEAD"
|
|
56
|
+
echo " Commits behind: $BEHIND"
|
|
57
|
+
|
|
58
|
+
if [ "$BEHIND" -eq 0 ]; then
|
|
59
|
+
echo ""
|
|
60
|
+
echo "Already up-to-date with $BASE_BRANCH"
|
|
61
|
+
fi
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## STEP 3: Confirmation
|
|
67
|
+
|
|
68
|
+
```javascript
|
|
69
|
+
AskUserQuestion({
|
|
70
|
+
questions: [{
|
|
71
|
+
question: "Rebase {branch} on {base_branch}? ({ahead} commits will be replayed)",
|
|
72
|
+
header: "Rebase",
|
|
73
|
+
options: [
|
|
74
|
+
{ label: "Yes, rebase", description: "Replay commits on top of {base_branch}" },
|
|
75
|
+
{ label: "No, cancel", description: "Keep current state" }
|
|
76
|
+
],
|
|
77
|
+
multiSelect: false
|
|
78
|
+
}]
|
|
79
|
+
})
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Si No -> Stop**
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## STEP 4: Check EF Core migrations (si applicable)
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Detecter si des migrations sont impliquees
|
|
90
|
+
MIGRATIONS_IN_BRANCH=$(git diff "$BASE_BRANCH"..."$BRANCH" --name-only | grep -E "Migrations/.*\.cs$" | grep -v Designer | wc -l)
|
|
91
|
+
SNAPSHOT_MODIFIED=$(git diff "$BASE_BRANCH"..."$BRANCH" --name-only | grep "ModelSnapshot.cs" | wc -l)
|
|
92
|
+
|
|
93
|
+
if [ "$MIGRATIONS_IN_BRANCH" -gt 0 ] || [ "$SNAPSHOT_MODIFIED" -gt 0 ]; then
|
|
94
|
+
echo ""
|
|
95
|
+
echo "WARNING: EF Core migrations detected in this branch!"
|
|
96
|
+
echo " Migrations: $MIGRATIONS_IN_BRANCH"
|
|
97
|
+
echo " ModelSnapshot modified: $SNAPSHOT_MODIFIED"
|
|
98
|
+
fi
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Si migrations detectees:
|
|
102
|
+
|
|
103
|
+
```javascript
|
|
104
|
+
AskUserQuestion({
|
|
105
|
+
questions: [{
|
|
106
|
+
question: "EF Core migrations detected. Rebase may cause ModelSnapshot conflicts. Continue?",
|
|
107
|
+
header: "EF Core",
|
|
108
|
+
options: [
|
|
109
|
+
{ label: "Continue rebase", description: "I'll handle migration conflicts manually" },
|
|
110
|
+
{ label: "Use /efcore:rebase-snapshot", description: "Specialized command for EF Core rebase" },
|
|
111
|
+
{ label: "Cancel", description: "Review migrations first" }
|
|
112
|
+
],
|
|
113
|
+
multiSelect: false
|
|
114
|
+
}]
|
|
115
|
+
})
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Si "Use /efcore:rebase-snapshot" -> Redirect:**
|
|
119
|
+
```
|
|
120
|
+
Utilisez la commande specialisee:
|
|
121
|
+
|
|
122
|
+
/efcore:rebase-snapshot
|
|
123
|
+
|
|
124
|
+
Cette commande gere automatiquement:
|
|
125
|
+
- Regeneration du ModelSnapshot
|
|
126
|
+
- Resolution des conflits de migration
|
|
127
|
+
- Validation post-rebase
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## STEP 5: Execute rebase
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
echo "Starting rebase..."
|
|
136
|
+
|
|
137
|
+
git rebase "$BASE_BRANCH"
|
|
138
|
+
|
|
139
|
+
if [ $? -ne 0 ]; then
|
|
140
|
+
echo ""
|
|
141
|
+
echo "================================================================================
|
|
142
|
+
REBASE CONFLICTS DETECTED
|
|
143
|
+
================================================================================"
|
|
144
|
+
echo ""
|
|
145
|
+
echo "Des conflits ont ete detectes. Pour les resoudre:"
|
|
146
|
+
echo ""
|
|
147
|
+
echo " 1. Editez les fichiers en conflit"
|
|
148
|
+
echo " 2. git add <fichiers resolus>"
|
|
149
|
+
echo " 3. git rebase --continue"
|
|
150
|
+
echo ""
|
|
151
|
+
echo "Pour annuler le rebase:"
|
|
152
|
+
echo " git rebase --abort"
|
|
153
|
+
echo " ou /gitflow:6-abort"
|
|
154
|
+
echo ""
|
|
155
|
+
exit 1
|
|
156
|
+
fi
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## STEP 6: Push avec force-with-lease
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
UPSTREAM=$(git rev-parse --abbrev-ref @{upstream} 2>/dev/null)
|
|
165
|
+
|
|
166
|
+
if [ -n "$UPSTREAM" ]; then
|
|
167
|
+
echo ""
|
|
168
|
+
echo "La branche a ete rebasee. Un force push est necessaire."
|
|
169
|
+
fi
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
```javascript
|
|
173
|
+
AskUserQuestion({
|
|
174
|
+
questions: [{
|
|
175
|
+
question: "Push rebased branch to remote? (requires force push)",
|
|
176
|
+
header: "Push",
|
|
177
|
+
options: [
|
|
178
|
+
{ label: "Yes, force push", description: "git push --force-with-lease (safe)" },
|
|
179
|
+
{ label: "No, later", description: "Push manually when ready" }
|
|
180
|
+
],
|
|
181
|
+
multiSelect: false
|
|
182
|
+
}]
|
|
183
|
+
})
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Si Yes:**
|
|
187
|
+
```bash
|
|
188
|
+
git push --force-with-lease
|
|
189
|
+
|
|
190
|
+
if [ $? -eq 0 ]; then
|
|
191
|
+
echo "Force push successful"
|
|
192
|
+
else
|
|
193
|
+
echo "ERROR: Force push failed (remote may have new commits)"
|
|
194
|
+
echo "Retry with: git push --force-with-lease"
|
|
195
|
+
fi
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## STEP 7: Summary
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
================================================================================
|
|
204
|
+
REBASE COMPLETE
|
|
205
|
+
================================================================================
|
|
206
|
+
|
|
207
|
+
Branche: {branch}
|
|
208
|
+
Rebase sur: {base_branch}
|
|
209
|
+
Commits: {ahead} replayed
|
|
210
|
+
Push: {done|pending}
|
|
211
|
+
|
|
212
|
+
DIVERGENCE APRES REBASE:
|
|
213
|
+
vs {base_branch}: +{ahead}/-0
|
|
214
|
+
|
|
215
|
+
{Si EF Core:}
|
|
216
|
+
NEXT: Verifiez les migrations avec /efcore:db-status
|
|
217
|
+
|
|
218
|
+
================================================================================
|
|
219
|
+
Actions: /gitflow:2-status | /gitflow:13-sync | /gitflow:3-commit
|
|
220
|
+
================================================================================
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Codes sortie
|
|
226
|
+
|
|
227
|
+
| Code | Signification |
|
|
228
|
+
|------|---------------|
|
|
229
|
+
| 0 | Rebase reussi |
|
|
230
|
+
| 1 | Conflits (rebase en cours) |
|
|
231
|
+
| 2 | Working directory dirty |
|
|
232
|
+
| 3 | Branche cible inexistante |
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Recovery si conflits
|
|
237
|
+
|
|
238
|
+
Si le rebase echoue avec des conflits:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
# Option 1: Resoudre manuellement
|
|
242
|
+
# Editez les fichiers, puis:
|
|
243
|
+
git add .
|
|
244
|
+
git rebase --continue
|
|
245
|
+
|
|
246
|
+
# Option 2: Annuler completement
|
|
247
|
+
git rebase --abort
|
|
248
|
+
|
|
249
|
+
# Option 3: Via Claude Code
|
|
250
|
+
/gitflow:6-abort
|
|
251
|
+
```
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Phase 2 - Display GitFlow state with versioning and EF Core details
|
|
3
|
+
agent: gitflow-status
|
|
4
|
+
model: haiku
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Phase 2: STATUS - Overview
|
|
8
|
+
|
|
9
|
+
Tu es expert GitFlow et EF Core. Affiche l'etat complet du projet .NET.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Informations a collecter
|
|
14
|
+
|
|
15
|
+
### Git
|
|
16
|
+
- Branche courante et type (feature/release/hotfix/develop/main)
|
|
17
|
+
- Etat working directory (clean/dirty)
|
|
18
|
+
- Synchronisation locale vs remote (push/pull needed)
|
|
19
|
+
- Synchronisation vs develop et main (commits ahead/behind)
|
|
20
|
+
- Dernier tag
|
|
21
|
+
|
|
22
|
+
### Sync Local vs Remote
|
|
23
|
+
```bash
|
|
24
|
+
# Fetch pour avoir les infos a jour (sans modifier le working directory)
|
|
25
|
+
git fetch --quiet 2>/dev/null
|
|
26
|
+
|
|
27
|
+
# Verifier si la branche a un remote tracking
|
|
28
|
+
UPSTREAM=$(git rev-parse --abbrev-ref @{upstream} 2>/dev/null)
|
|
29
|
+
|
|
30
|
+
if [ -n "$UPSTREAM" ]; then
|
|
31
|
+
# Comparer local vs remote
|
|
32
|
+
LOCAL=$(git rev-parse @)
|
|
33
|
+
REMOTE=$(git rev-parse @{upstream})
|
|
34
|
+
BASE=$(git merge-base @ @{upstream})
|
|
35
|
+
|
|
36
|
+
if [ "$LOCAL" = "$REMOTE" ]; then
|
|
37
|
+
SYNC_STATUS="UP-TO-DATE"
|
|
38
|
+
elif [ "$LOCAL" = "$BASE" ]; then
|
|
39
|
+
BEHIND=$(git rev-list --count @..@{upstream})
|
|
40
|
+
SYNC_STATUS="BEHIND $BEHIND (pull needed)"
|
|
41
|
+
elif [ "$REMOTE" = "$BASE" ]; then
|
|
42
|
+
AHEAD=$(git rev-list --count @{upstream}..@)
|
|
43
|
+
SYNC_STATUS="AHEAD $AHEAD (push needed)"
|
|
44
|
+
else
|
|
45
|
+
AHEAD=$(git rev-list --count @{upstream}..@)
|
|
46
|
+
BEHIND=$(git rev-list --count @..@{upstream})
|
|
47
|
+
SYNC_STATUS="DIVERGED +$AHEAD/-$BEHIND (pull --rebase needed)"
|
|
48
|
+
fi
|
|
49
|
+
else
|
|
50
|
+
SYNC_STATUS="NO REMOTE (not pushed yet)"
|
|
51
|
+
fi
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Version
|
|
55
|
+
Read from configured source in [.claude/gitflow/config.json](.claude/gitflow/config.json):
|
|
56
|
+
- `versioning.source` → type (csproj, Directory.Build.props, AssemblyInfo, VERSION, git-tag)
|
|
57
|
+
- `versioning.sourceFile` → file path
|
|
58
|
+
- Read current version from THAT file (not from config.json)
|
|
59
|
+
|
|
60
|
+
### EF Core
|
|
61
|
+
- Lister les migrations (total et pending)
|
|
62
|
+
- Lister les DbContext detectes
|
|
63
|
+
|
|
64
|
+
### EF Core - Vue globale (toutes branches)
|
|
65
|
+
Si `--all-branches` ou si plusieurs branches GitFlow actives:
|
|
66
|
+
```bash
|
|
67
|
+
# Scanner les branches actives
|
|
68
|
+
FEATURES=$(git branch -r | grep 'feature/' | wc -l)
|
|
69
|
+
RELEASES=$(git branch -r | grep 'release/' | wc -l)
|
|
70
|
+
HOTFIXES=$(git branch -r | grep 'hotfix/' | wc -l)
|
|
71
|
+
|
|
72
|
+
# Pour chaque branche, detecter migrations ajoutees
|
|
73
|
+
for BRANCH in $(git branch -r | grep -E 'feature/|release/|hotfix/'); do
|
|
74
|
+
MIGRATIONS=$(git diff origin/develop..$BRANCH --name-only | grep -E "Migrations/.*\.cs$" | grep -v Designer | grep -v ModelSnapshot)
|
|
75
|
+
CONFLICT=$(git diff origin/develop..$BRANCH --name-only | grep "ModelSnapshot" | wc -l)
|
|
76
|
+
done
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Plans GitFlow
|
|
80
|
+
- Plans actifs (non termines)
|
|
81
|
+
- Plans termines recemment (7 jours)
|
|
82
|
+
|
|
83
|
+
### Operations en cours
|
|
84
|
+
- Rebase, merge, cherry-pick en cours?
|
|
85
|
+
- Conflits detectes?
|
|
86
|
+
|
|
87
|
+
### Risques
|
|
88
|
+
- Divergence > 5 commits vs develop
|
|
89
|
+
- Migrations non commitees
|
|
90
|
+
- ModelSnapshot modifie non commite
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Affichage
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
================================================================================
|
|
98
|
+
GITFLOW STATUS
|
|
99
|
+
================================================================================
|
|
100
|
+
|
|
101
|
+
BRANCHE: {branch} ({type}) | {clean|dirty}
|
|
102
|
+
VERSION: {version} ({source})
|
|
103
|
+
|
|
104
|
+
REMOTE SYNC
|
|
105
|
+
vs origin/{branch}: {UP-TO-DATE|AHEAD N|BEHIND N|DIVERGED|NO REMOTE}
|
|
106
|
+
{Action: /gitflow:13-sync}
|
|
107
|
+
|
|
108
|
+
SYNC vs BASE BRANCHES
|
|
109
|
+
vs develop: +{ahead}/-{behind} | vs main: +{ahead}/-{behind} | Tag: {tag}
|
|
110
|
+
|
|
111
|
+
EF CORE (branche courante)
|
|
112
|
+
Migrations: {total} total, {pending} pending
|
|
113
|
+
[Pending] {liste}
|
|
114
|
+
|
|
115
|
+
--------------------------------------------------------------------------------
|
|
116
|
+
BRANCHES ACTIVES ({features} features, {releases} releases, {hotfixes} hotfixes)
|
|
117
|
+
--------------------------------------------------------------------------------
|
|
118
|
+
{Si branches actives avec migrations:}
|
|
119
|
+
feature/add-users +1 migration (AddUsersTable) Conflit: NON
|
|
120
|
+
feature/add-orders +1 migration (AddOrdersTable) Conflit: NON
|
|
121
|
+
feature/add-products +2 migrations (AddProducts, AddFK) Conflit: OUI
|
|
122
|
+
|
|
123
|
+
ORDRE DE MERGE RECOMMANDE:
|
|
124
|
+
1. feature/add-users (independant)
|
|
125
|
+
2. feature/add-orders (independant)
|
|
126
|
+
3. feature/add-products (conflit ModelSnapshot - rebase requis)
|
|
127
|
+
--------------------------------------------------------------------------------
|
|
128
|
+
|
|
129
|
+
PLANS: {n} active | OPERATIONS: {none|rebase|merge} | RISKS: {liste}
|
|
130
|
+
|
|
131
|
+
================================================================================
|
|
132
|
+
Actions: /gitflow:13-sync | /gitflow:14-rebase | /gitflow:3-commit | /gitflow:4-plan
|
|
133
|
+
================================================================================
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Modes
|
|
139
|
+
|
|
140
|
+
| Mode | Output |
|
|
141
|
+
|------|--------|
|
|
142
|
+
| Normal | Affichage complet |
|
|
143
|
+
| `--short` | `[branch] status \| vX.Y.Z \| +X/-Y \| N pending` |
|
|
144
|
+
| `--json` | JSON structure |
|
|
145
|
+
|
|
146
|
+
## Codes sortie
|
|
147
|
+
|
|
148
|
+
| Code | Signification |
|
|
149
|
+
|------|---------------|
|
|
150
|
+
| 0 | OK |
|
|
151
|
+
| 1 | Warnings (pending, divergence) |
|
|
152
|
+
| 2 | Problemes (conflits, operation en cours) |
|
|
153
|
+
| 3 | Erreur (pas repo, no config) |
|
|
154
|
+
|
|
155
|
+
## Actions suggerees
|
|
156
|
+
|
|
157
|
+
| Etat | Commande Claude Code |
|
|
158
|
+
|------|----------------------|
|
|
159
|
+
| AHEAD N (push needed) | `/gitflow:13-sync` |
|
|
160
|
+
| BEHIND N (pull needed) | `/gitflow:13-sync` |
|
|
161
|
+
| DIVERGED (pull --rebase needed) | `/gitflow:13-sync` |
|
|
162
|
+
| NO REMOTE (not pushed yet) | `/gitflow:13-sync` |
|
|
163
|
+
| Divergence > 5 vs develop | `/gitflow:14-rebase` |
|
|
164
|
+
| Pending migrations | `/efcore:db-deploy` |
|
|
165
|
+
| Dirty workdir | `/gitflow:3-commit` |
|
|
166
|
+
| Operation en cours | `/gitflow:6-abort` |
|
|
167
|
+
| No config | `/gitflow:1-init` |
|