@atlashub/smartstack-cli 1.7.0 → 1.8.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/init.html +9 -65
- package/README.md +556 -78
- package/dist/index.js +29 -134
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/agents/gitflow/status.md +98 -11
- package/templates/commands/efcore/conflicts.md +98 -32
- package/templates/commands/efcore/db-deploy.md +107 -10
- package/templates/commands/efcore/db-reset.md +69 -14
- package/templates/commands/efcore/db-seed.md +67 -11
- package/templates/commands/efcore/db-status.md +57 -20
- package/templates/commands/efcore/migration.md +84 -23
- package/templates/commands/efcore/rebase-snapshot.md +81 -23
- package/templates/commands/efcore/scan.md +94 -29
- package/templates/commands/efcore/squash.md +97 -41
- package/templates/commands/gitflow/1-init.md +216 -5
- package/templates/commands/gitflow/10-start.md +194 -24
- package/templates/commands/gitflow/11-finish.md +141 -59
- package/templates/commands/gitflow/2-status.md +238 -58
- package/templates/commands/gitflow/3-commit.md +93 -0
- package/templates/commands/gitflow/7-pull-request.md +133 -16
|
@@ -163,11 +163,112 @@ mkdir -p .claude/gitflow/{plans,logs,migrations,backup,cache}
|
|
|
163
163
|
└── {hotfix-name}/
|
|
164
164
|
```
|
|
165
165
|
|
|
166
|
+
### ÉTAPE 7.5 : Détection et Configuration Azure DevOps (Optionnel)
|
|
167
|
+
|
|
168
|
+
**Détecter si Azure CLI est installé:**
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# Vérifier Azure CLI
|
|
172
|
+
AZ_CLI_INSTALLED=$(az --version 2>/dev/null | head -1)
|
|
173
|
+
|
|
174
|
+
# Vérifier l'extension azure-devops
|
|
175
|
+
AZ_DEVOPS_EXT=$(az extension show --name azure-devops 2>/dev/null | grep -o '"name": "azure-devops"')
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Si Azure CLI détecté, proposer la configuration:**
|
|
179
|
+
|
|
180
|
+
```javascript
|
|
181
|
+
if (AZ_CLI_INSTALLED) {
|
|
182
|
+
AskUserQuestion({
|
|
183
|
+
questions: [{
|
|
184
|
+
question: "Azure CLI détecté. Voulez-vous configurer l'intégration Azure DevOps ?",
|
|
185
|
+
header: "Azure DevOps",
|
|
186
|
+
options: [
|
|
187
|
+
{ label: "Oui", description: "Configurer Azure DevOps pour PR, work items et boards (Recommandé si vous utilisez Azure DevOps)" },
|
|
188
|
+
{ label: "Non", description: "Ignorer pour l'instant (peut être configuré plus tard)" },
|
|
189
|
+
{ label: "Installer extension", description: "L'extension azure-devops n'est pas installée" }
|
|
190
|
+
],
|
|
191
|
+
multiSelect: false
|
|
192
|
+
}]
|
|
193
|
+
})
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Si "Oui" sélectionné, demander les informations:**
|
|
198
|
+
|
|
199
|
+
```javascript
|
|
200
|
+
// Détecter l'organisation depuis le remote URL si Azure DevOps
|
|
201
|
+
REMOTE_URL=$(git remote get-url origin 2>/dev/null)
|
|
202
|
+
// https://dev.azure.com/myorg/myproject/_git/myrepo → org=myorg, project=myproject
|
|
203
|
+
|
|
204
|
+
AskUserQuestion({
|
|
205
|
+
questions: [
|
|
206
|
+
{
|
|
207
|
+
question: "Quelle est votre organisation Azure DevOps ?",
|
|
208
|
+
header: "Organisation",
|
|
209
|
+
options: [
|
|
210
|
+
{ label: "${DETECTED_ORG}", description: "Détecté depuis l'URL remote (Recommandé)" },
|
|
211
|
+
{ label: "Autre", description: "Entrer une autre organisation" }
|
|
212
|
+
],
|
|
213
|
+
multiSelect: false
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
question: "Quel est le nom de votre projet Azure DevOps ?",
|
|
217
|
+
header: "Projet",
|
|
218
|
+
options: [
|
|
219
|
+
{ label: "${DETECTED_PROJECT}", description: "Détecté depuis l'URL remote (Recommandé)" },
|
|
220
|
+
{ label: "Autre", description: "Entrer un autre projet" }
|
|
221
|
+
],
|
|
222
|
+
multiSelect: false
|
|
223
|
+
}
|
|
224
|
+
]
|
|
225
|
+
})
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
**Configurer Azure CLI defaults:**
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
# Configurer les defaults Azure DevOps
|
|
232
|
+
az devops configure --defaults organization="$AZ_ORG" project="$AZ_PROJECT"
|
|
233
|
+
|
|
234
|
+
# Vérifier la connexion
|
|
235
|
+
az devops project show --project "$AZ_PROJECT" > /dev/null 2>&1 || {
|
|
236
|
+
echo "⚠️ Impossible de se connecter à Azure DevOps."
|
|
237
|
+
echo " Exécutez 'az login' pour vous authentifier."
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Si Azure CLI non installé, afficher les instructions:**
|
|
242
|
+
|
|
243
|
+
```
|
|
244
|
+
┌──────────────────────────────────────────────────────────────────────────────┐
|
|
245
|
+
│ ℹ️ AZURE DEVOPS CLI NON DÉTECTÉ │
|
|
246
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
247
|
+
│ Pour activer l'intégration Azure DevOps (PR, work items, boards): │
|
|
248
|
+
│ │
|
|
249
|
+
│ 1. Installer Azure CLI: │
|
|
250
|
+
│ winget install Microsoft.AzureCLI │
|
|
251
|
+
│ │
|
|
252
|
+
│ 2. Installer l'extension: │
|
|
253
|
+
│ az extension add --name azure-devops │
|
|
254
|
+
│ │
|
|
255
|
+
│ 3. Se connecter: │
|
|
256
|
+
│ az login │
|
|
257
|
+
│ │
|
|
258
|
+
│ 4. Reconfigurer GitFlow: │
|
|
259
|
+
│ /gitflow:1-init --migrate │
|
|
260
|
+
│ │
|
|
261
|
+
│ Documentation: https://learn.microsoft.com/cli/azure/boards │
|
|
262
|
+
└──────────────────────────────────────────────────────────────────────────────┘
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
166
267
|
### ÉTAPE 8 : Configuration
|
|
167
268
|
|
|
168
269
|
```json
|
|
169
270
|
{
|
|
170
|
-
"version": "1.
|
|
271
|
+
"version": "1.4.0",
|
|
171
272
|
"initMode": "clone",
|
|
172
273
|
"repository": {
|
|
173
274
|
"name": "{repo_name}",
|
|
@@ -769,7 +870,7 @@ parent/
|
|
|
769
870
|
#### Organized Mode (v1.3)
|
|
770
871
|
```json
|
|
771
872
|
{
|
|
772
|
-
"version": "1.
|
|
873
|
+
"version": "1.4.0",
|
|
773
874
|
"initMode": "organized",
|
|
774
875
|
"repository": { "name": "", "defaultBranch": "main", "remoteUrl": "" },
|
|
775
876
|
"versioning": { "strategy": "semver", "current": "0.1.0", "source": "auto", "sourceFile": "", "tagPrefix": "v", "autoIncrement": { "feature": "minor", "hotfix": "patch", "release": "manual" } },
|
|
@@ -799,6 +900,19 @@ parent/
|
|
|
799
900
|
"namePrefix": "",
|
|
800
901
|
"autoCreateLocalConfig": true
|
|
801
902
|
},
|
|
903
|
+
"azureDevOps": {
|
|
904
|
+
"enabled": false,
|
|
905
|
+
"organization": "",
|
|
906
|
+
"project": "",
|
|
907
|
+
"defaultReviewers": [],
|
|
908
|
+
"workItemTypes": {
|
|
909
|
+
"feature": "User Story",
|
|
910
|
+
"hotfix": "Bug",
|
|
911
|
+
"release": "Epic"
|
|
912
|
+
},
|
|
913
|
+
"linkWorkItems": true,
|
|
914
|
+
"autoTransitionWorkItems": true
|
|
915
|
+
},
|
|
802
916
|
"efcore": {
|
|
803
917
|
"enabled": false, "contexts": [], "generateScript": false, "scriptOutputPath": "",
|
|
804
918
|
"crossBranch": { "enabled": true, "scanOnMigrationCreate": true, "blockOnConflict": true, "cacheExpiry": "1h" }
|
|
@@ -807,6 +921,49 @@ parent/
|
|
|
807
921
|
}
|
|
808
922
|
```
|
|
809
923
|
|
|
924
|
+
### Azure DevOps Configuration (NEW in v1.4)
|
|
925
|
+
|
|
926
|
+
La section `azureDevOps` configure l'integration avec Azure DevOps CLI pour les PR, work items et boards:
|
|
927
|
+
|
|
928
|
+
| Parametre | Description | Defaut |
|
|
929
|
+
|-----------|-------------|--------|
|
|
930
|
+
| `enabled` | Activer l'integration Azure DevOps | `false` |
|
|
931
|
+
| `organization` | URL de l'organisation (ex: `https://dev.azure.com/myorg`) | - |
|
|
932
|
+
| `project` | Nom du projet Azure DevOps | - |
|
|
933
|
+
| `defaultReviewers` | Liste des reviewers par defaut pour les PR | `[]` |
|
|
934
|
+
| `workItemTypes.feature` | Type de work item pour les features | `User Story` |
|
|
935
|
+
| `workItemTypes.hotfix` | Type de work item pour les hotfixes | `Bug` |
|
|
936
|
+
| `workItemTypes.release` | Type de work item pour les releases | `Epic` |
|
|
937
|
+
| `linkWorkItems` | Lier automatiquement les PR aux work items | `true` |
|
|
938
|
+
| `autoTransitionWorkItems` | Transitionner automatiquement les work items au merge | `true` |
|
|
939
|
+
|
|
940
|
+
**Commandes disponibles avec Azure DevOps:**
|
|
941
|
+
|
|
942
|
+
| Action | Commande |
|
|
943
|
+
|--------|----------|
|
|
944
|
+
| Creer PR avec work item | `az repos pr create --work-items 123` |
|
|
945
|
+
| Completer PR (merge) | `az repos pr update --id 42 --status completed` |
|
|
946
|
+
| Creer work item | `az boards work-item create --type "User Story" --title "..."` |
|
|
947
|
+
| Lier commit a work item | Message commit avec `#123` |
|
|
948
|
+
|
|
949
|
+
**Installation Azure CLI:**
|
|
950
|
+
|
|
951
|
+
```bash
|
|
952
|
+
# 1. Installer Azure CLI
|
|
953
|
+
winget install Microsoft.AzureCLI
|
|
954
|
+
|
|
955
|
+
# 2. Ajouter l'extension Azure DevOps (auto-install au premier usage)
|
|
956
|
+
az extension add --name azure-devops
|
|
957
|
+
|
|
958
|
+
# 3. Se connecter
|
|
959
|
+
az login
|
|
960
|
+
|
|
961
|
+
# 4. Configurer les defaults (fait automatiquement par /gitflow:1-init)
|
|
962
|
+
az devops configure --defaults organization=https://dev.azure.com/VOTRE_ORG project=VOTRE_PROJET
|
|
963
|
+
```
|
|
964
|
+
|
|
965
|
+
---
|
|
966
|
+
|
|
810
967
|
### Database Configuration (NEW in v1.3)
|
|
811
968
|
|
|
812
969
|
La section `database` configure la creation automatique de `appsettings.Local.json` lors du `/gitflow:10-start`:
|
|
@@ -839,7 +996,7 @@ La section `database` configure la creation automatique de `appsettings.Local.js
|
|
|
839
996
|
#### Adjacent/Legacy Mode (v1.2 compatible)
|
|
840
997
|
```json
|
|
841
998
|
{
|
|
842
|
-
"version": "1.
|
|
999
|
+
"version": "1.4.0",
|
|
843
1000
|
"initMode": "adjacent",
|
|
844
1001
|
"repository": { "name": "", "defaultBranch": "main", "remoteUrl": "" },
|
|
845
1002
|
"versioning": { "strategy": "semver", "current": "0.1.0", "source": "auto", "sourceFile": "", "tagPrefix": "v", "autoIncrement": { "feature": "minor", "hotfix": "patch", "release": "manual" } },
|
|
@@ -852,6 +1009,15 @@ La section `database` configure la creation automatique de `appsettings.Local.js
|
|
|
852
1009
|
"structure": { "features": "features/", "releases": "releases/", "hotfixes": "hotfixes/" },
|
|
853
1010
|
"cleanupOnFinish": true
|
|
854
1011
|
},
|
|
1012
|
+
"azureDevOps": {
|
|
1013
|
+
"enabled": false,
|
|
1014
|
+
"organization": "",
|
|
1015
|
+
"project": "",
|
|
1016
|
+
"defaultReviewers": [],
|
|
1017
|
+
"workItemTypes": { "feature": "User Story", "hotfix": "Bug", "release": "Epic" },
|
|
1018
|
+
"linkWorkItems": true,
|
|
1019
|
+
"autoTransitionWorkItems": true
|
|
1020
|
+
},
|
|
855
1021
|
"efcore": {
|
|
856
1022
|
"enabled": false, "contexts": [], "generateScript": false, "scriptOutputPath": "",
|
|
857
1023
|
"crossBranch": { "enabled": true, "scanOnMigrationCreate": true, "blockOnConflict": true, "cacheExpiry": "1h" }
|
|
@@ -929,16 +1095,61 @@ User runs: /gitflow:1-init
|
|
|
929
1095
|
| `/gitflow:1-init` | Generate plan (asks if structure exists, asks for structure style) |
|
|
930
1096
|
| `/gitflow:1-init --exec` | Execute existing plan |
|
|
931
1097
|
| `/gitflow:1-init --yes` | Generate + execute without intermediate file |
|
|
932
|
-
| `/gitflow:1-init --migrate` | Force migration of existing structure to v1.
|
|
1098
|
+
| `/gitflow:1-init --migrate` | Force migration of existing structure to v1.4.0 |
|
|
933
1099
|
| `/gitflow:1-init --reset` | Force reset (backup + recreate from scratch) |
|
|
934
1100
|
| `/gitflow:1-init --organized` | Force organized structure (01-Main, 02-Develop) |
|
|
935
1101
|
| `/gitflow:1-init --adjacent` | Force adjacent/legacy structure (../worktrees) |
|
|
936
1102
|
| `/gitflow:1-init --no-worktrees` | Generate plan without worktrees |
|
|
1103
|
+
| `/gitflow:1-init --with-azure-devops` | Configure Azure DevOps integration during init |
|
|
1104
|
+
| `/gitflow:1-init --skip-azure-devops` | Skip Azure DevOps detection/configuration |
|
|
937
1105
|
|
|
938
1106
|
---
|
|
939
1107
|
|
|
940
1108
|
## Migration Details
|
|
941
1109
|
|
|
1110
|
+
### v1.3 → v1.4 (Azure DevOps Integration)
|
|
1111
|
+
|
|
1112
|
+
When migrating to v1.4, these changes are available:
|
|
1113
|
+
|
|
1114
|
+
#### New Config Fields
|
|
1115
|
+
|
|
1116
|
+
```json
|
|
1117
|
+
{
|
|
1118
|
+
"version": "1.4.0",
|
|
1119
|
+
"azureDevOps": {
|
|
1120
|
+
"enabled": false, // NEW - Enable Azure DevOps CLI integration
|
|
1121
|
+
"organization": "", // NEW - Azure DevOps organization URL
|
|
1122
|
+
"project": "", // NEW - Azure DevOps project name
|
|
1123
|
+
"defaultReviewers": [], // NEW - Default PR reviewers
|
|
1124
|
+
"workItemTypes": { // NEW - Work item type mapping
|
|
1125
|
+
"feature": "User Story",
|
|
1126
|
+
"hotfix": "Bug",
|
|
1127
|
+
"release": "Epic"
|
|
1128
|
+
},
|
|
1129
|
+
"linkWorkItems": true, // NEW - Auto-link PR to work items
|
|
1130
|
+
"autoTransitionWorkItems": true // NEW - Auto-transition work items on merge
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
```
|
|
1134
|
+
|
|
1135
|
+
#### Migration Options
|
|
1136
|
+
|
|
1137
|
+
```javascript
|
|
1138
|
+
AskUserQuestion({
|
|
1139
|
+
questions: [{
|
|
1140
|
+
question: "v1.3 config detected. Azure DevOps integration is now available. Configure it?",
|
|
1141
|
+
header: "Azure DevOps",
|
|
1142
|
+
options: [
|
|
1143
|
+
{ label: "Yes, configure", description: "Set up Azure DevOps CLI integration (Recommended if using Azure DevOps)" },
|
|
1144
|
+
{ label: "Skip for now", description: "Just update version to v1.4.0, configure later" }
|
|
1145
|
+
],
|
|
1146
|
+
multiSelect: false
|
|
1147
|
+
}]
|
|
1148
|
+
})
|
|
1149
|
+
```
|
|
1150
|
+
|
|
1151
|
+
---
|
|
1152
|
+
|
|
942
1153
|
### v1.2 → v1.3 (Organized Structure)
|
|
943
1154
|
|
|
944
1155
|
When migrating to v1.3, these changes are available:
|
|
@@ -947,7 +1158,7 @@ When migrating to v1.3, these changes are available:
|
|
|
947
1158
|
|
|
948
1159
|
```json
|
|
949
1160
|
{
|
|
950
|
-
"version": "1.
|
|
1161
|
+
"version": "1.4.0",
|
|
951
1162
|
"initMode": "organized", // NEW - "organized" | "adjacent" | "clone" | "interactive"
|
|
952
1163
|
"worktrees": {
|
|
953
1164
|
"mode": "organized", // NEW - matches initMode
|
|
@@ -263,9 +263,71 @@ AskUserQuestion({
|
|
|
263
263
|
| Check | Commande | Action si echec |
|
|
264
264
|
|-------|----------|-----------------|
|
|
265
265
|
| Working tree clean | `git status --porcelain` | Proposer stash ou commit |
|
|
266
|
-
| Branche n'existe pas | `git branch --list {branch}` | Erreur avec suggestion |
|
|
266
|
+
| Branche n'existe pas | `git branch -a --list {branch}` | Erreur avec suggestion |
|
|
267
267
|
| Base a jour | `git fetch origin` | Fetch automatique |
|
|
268
268
|
|
|
269
|
+
### 5.1 Verifier que la branche SPECIFIQUE n'existe pas
|
|
270
|
+
|
|
271
|
+
**IMPORTANT:** Cette verification doit etre faite sur la branche EXACTE demandee, pas sur le nombre total de branches.
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
# Construire le nom complet de la branche
|
|
275
|
+
BRANCH_FULL_NAME="${TYPE}/${NAME}" # ex: feature/add-user-auth
|
|
276
|
+
|
|
277
|
+
# Fetch pour avoir les branches remote a jour
|
|
278
|
+
git fetch origin --quiet
|
|
279
|
+
|
|
280
|
+
# Verifier si la branche existe en LOCAL
|
|
281
|
+
LOCAL_EXISTS=$(git branch --list "$BRANCH_FULL_NAME")
|
|
282
|
+
|
|
283
|
+
# Verifier si la branche existe en REMOTE
|
|
284
|
+
REMOTE_EXISTS=$(git branch -r --list "origin/$BRANCH_FULL_NAME")
|
|
285
|
+
|
|
286
|
+
# Si la branche existe deja
|
|
287
|
+
if [ -n "$LOCAL_EXISTS" ] || [ -n "$REMOTE_EXISTS" ]; then
|
|
288
|
+
echo ""
|
|
289
|
+
echo "ERROR: La branche '$BRANCH_FULL_NAME' existe deja!"
|
|
290
|
+
echo ""
|
|
291
|
+
|
|
292
|
+
if [ -n "$LOCAL_EXISTS" ]; then
|
|
293
|
+
echo " - Existe en LOCAL"
|
|
294
|
+
fi
|
|
295
|
+
if [ -n "$REMOTE_EXISTS" ]; then
|
|
296
|
+
echo " - Existe en REMOTE (origin)"
|
|
297
|
+
fi
|
|
298
|
+
|
|
299
|
+
echo ""
|
|
300
|
+
echo "Options:"
|
|
301
|
+
echo " 1. Choisir un autre nom"
|
|
302
|
+
echo " 2. Supprimer la branche existante: git branch -D $BRANCH_FULL_NAME"
|
|
303
|
+
echo " 3. Continuer sur la branche existante: git checkout $BRANCH_FULL_NAME"
|
|
304
|
+
echo ""
|
|
305
|
+
|
|
306
|
+
# Proposer a l'utilisateur
|
|
307
|
+
AskUserQuestion({
|
|
308
|
+
questions: [{
|
|
309
|
+
question: "La branche '$BRANCH_FULL_NAME' existe deja. Que faire ?",
|
|
310
|
+
header: "Conflit",
|
|
311
|
+
options: [
|
|
312
|
+
{ label: "Autre nom", description: "Choisir un nom different" },
|
|
313
|
+
{ label: "Checkout", description: "Basculer sur la branche existante" },
|
|
314
|
+
{ label: "Supprimer", description: "Supprimer et recreer (ATTENTION: perte de donnees)" }
|
|
315
|
+
],
|
|
316
|
+
multiSelect: false
|
|
317
|
+
}]
|
|
318
|
+
})
|
|
319
|
+
|
|
320
|
+
# Actions selon choix:
|
|
321
|
+
# - "Autre nom" -> Retourner a ETAPE 4 pour redemander le nom
|
|
322
|
+
# - "Checkout" -> git checkout $BRANCH_FULL_NAME && exit
|
|
323
|
+
# - "Supprimer" -> git branch -D $BRANCH_FULL_NAME && git push origin --delete $BRANCH_FULL_NAME 2>/dev/null
|
|
324
|
+
fi
|
|
325
|
+
|
|
326
|
+
echo "OK Branche '$BRANCH_FULL_NAME' disponible"
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### 5.2 Verifier working directory
|
|
330
|
+
|
|
269
331
|
**Si working directory dirty:**
|
|
270
332
|
|
|
271
333
|
```javascript
|
|
@@ -289,16 +351,44 @@ AskUserQuestion({
|
|
|
289
351
|
|
|
290
352
|
### Detecter le mode worktree
|
|
291
353
|
|
|
354
|
+
**IMPORTANT:** Toujours detecter la structure EXISTANTE en priorite, avant de lire la config.
|
|
355
|
+
|
|
292
356
|
```bash
|
|
293
|
-
#
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
357
|
+
# ═══════════════════════════════════════════════════════════════
|
|
358
|
+
# ETAPE 1: Detection automatique basee sur la structure des dossiers
|
|
359
|
+
# ═══════════════════════════════════════════════════════════════
|
|
360
|
+
|
|
361
|
+
# Verifier si on est dans une structure "organized" (01-Main, 02-Develop, features/, etc.)
|
|
362
|
+
# Ces dossiers sont a la racine du projet parent (..)
|
|
363
|
+
if [ -d "../features" ] && [ -d "../releases" ] && [ -d "../hotfixes" ]; then
|
|
364
|
+
# Structure organized detectee
|
|
365
|
+
WORKTREE_MODE="organized"
|
|
366
|
+
echo "[AUTO-DETECT] Structure organized detectee (../features/, ../releases/, ../hotfixes/)"
|
|
367
|
+
elif [ -d "../01-Main" ] && [ -d "../02-Develop" ]; then
|
|
368
|
+
# Structure organized detectee via les prefixes numerotes
|
|
369
|
+
WORKTREE_MODE="organized"
|
|
370
|
+
echo "[AUTO-DETECT] Structure organized detectee (../01-Main/, ../02-Develop/)"
|
|
371
|
+
elif [ -d "../worktrees" ]; then
|
|
372
|
+
# Structure adjacent/legacy detectee
|
|
300
373
|
WORKTREE_MODE="adjacent"
|
|
374
|
+
echo "[AUTO-DETECT] Structure adjacent detectee (../worktrees/)"
|
|
375
|
+
else
|
|
376
|
+
# ═══════════════════════════════════════════════════════════════
|
|
377
|
+
# ETAPE 2: Fallback sur la config GitFlow si structure non detectee
|
|
378
|
+
# ═══════════════════════════════════════════════════════════════
|
|
379
|
+
CONFIG_FILE=".claude/gitflow/config.json"
|
|
380
|
+
if [ -f "$CONFIG_FILE" ]; then
|
|
381
|
+
WORKTREE_MODE=$(grep -o '"mode": *"[^"]*"' "$CONFIG_FILE" | head -1 | cut -d'"' -f4)
|
|
382
|
+
WORKTREE_MODE=${WORKTREE_MODE:-adjacent}
|
|
383
|
+
echo "[CONFIG] Mode lu depuis config.json: $WORKTREE_MODE"
|
|
384
|
+
else
|
|
385
|
+
# Default: adjacent si rien n'est detecte
|
|
386
|
+
WORKTREE_MODE="adjacent"
|
|
387
|
+
echo "[DEFAULT] Aucune structure detectee, mode par defaut: adjacent"
|
|
388
|
+
fi
|
|
301
389
|
fi
|
|
390
|
+
|
|
391
|
+
echo "WORKTREE_MODE=$WORKTREE_MODE"
|
|
302
392
|
```
|
|
303
393
|
|
|
304
394
|
### Mode Worktree - Organized (v1.3)
|
|
@@ -619,34 +709,114 @@ git push -u origin {branch}
|
|
|
619
709
|
|
|
620
710
|
## ETAPE 8: Resume et prochaines etapes
|
|
621
711
|
|
|
712
|
+
**Afficher un resume adapte au TYPE de branche creee:**
|
|
713
|
+
|
|
714
|
+
### Si FEATURE:
|
|
715
|
+
|
|
622
716
|
```
|
|
623
717
|
================================================================================
|
|
624
|
-
|
|
718
|
+
FEATURE CREEE
|
|
625
719
|
================================================================================
|
|
626
720
|
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
721
|
+
BRANCHE: feature/{name}
|
|
722
|
+
BASE: develop
|
|
723
|
+
CIBLE: develop
|
|
724
|
+
WORKTREE: ../features/{name}/
|
|
725
|
+
|
|
726
|
+
================================================================================
|
|
727
|
+
PROCHAINES ETAPES
|
|
728
|
+
================================================================================
|
|
729
|
+
|
|
730
|
+
1. Naviguer vers le worktree:
|
|
731
|
+
cd ../features/{name}
|
|
732
|
+
# ou dans VSCode:
|
|
733
|
+
code ../features/{name}
|
|
734
|
+
|
|
735
|
+
2. Faire vos modifications et committer:
|
|
736
|
+
/gitflow:3-commit
|
|
737
|
+
|
|
738
|
+
3. Creer une Pull Request (feature/{name} → develop):
|
|
739
|
+
/gitflow:7-pull-request feature/{name}
|
|
740
|
+
|
|
741
|
+
4. Apres merge de la PR, nettoyer:
|
|
742
|
+
/gitflow:11-finish feature/{name}
|
|
743
|
+
Cela va:
|
|
744
|
+
✓ Supprimer la branche feature/{name}
|
|
745
|
+
✓ Nettoyer le worktree
|
|
746
|
+
|
|
747
|
+
================================================================================
|
|
748
|
+
```
|
|
749
|
+
|
|
750
|
+
### Si RELEASE:
|
|
751
|
+
|
|
752
|
+
```
|
|
753
|
+
================================================================================
|
|
754
|
+
RELEASE CREEE
|
|
755
|
+
================================================================================
|
|
632
756
|
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
757
|
+
BRANCHE: release/v{version}
|
|
758
|
+
BASE: develop
|
|
759
|
+
CIBLE: main + develop (merge back)
|
|
760
|
+
VERSION: v{version}
|
|
761
|
+
WORKTREE: ../releases/v{version}/
|
|
637
762
|
|
|
638
763
|
================================================================================
|
|
639
764
|
PROCHAINES ETAPES
|
|
640
765
|
================================================================================
|
|
641
766
|
|
|
642
767
|
1. Naviguer vers le worktree:
|
|
643
|
-
|
|
644
|
-
|
|
768
|
+
cd ../releases/v{version}
|
|
769
|
+
# ou dans VSCode:
|
|
770
|
+
code ../releases/v{version}
|
|
771
|
+
|
|
772
|
+
2. Creer une Pull Request (release/v{version} → main):
|
|
773
|
+
/gitflow:7-pull-request release/v{version}
|
|
774
|
+
|
|
775
|
+
3. Apres merge de la PR, finaliser:
|
|
776
|
+
/gitflow:11-finish release/v{version}
|
|
777
|
+
Cela va:
|
|
778
|
+
✓ Creer le tag v{version}
|
|
779
|
+
✓ Merger main → develop (merge back)
|
|
780
|
+
✓ Incrementer la version sur develop ({version} → {next_minor})
|
|
781
|
+
✓ Nettoyer le worktree
|
|
645
782
|
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
783
|
+
================================================================================
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
### Si HOTFIX:
|
|
787
|
+
|
|
788
|
+
```
|
|
789
|
+
================================================================================
|
|
790
|
+
HOTFIX CREE
|
|
791
|
+
================================================================================
|
|
792
|
+
|
|
793
|
+
BRANCHE: hotfix/{name}
|
|
794
|
+
BASE: main
|
|
795
|
+
CIBLE: main + develop (merge back)
|
|
796
|
+
WORKTREE: ../hotfixes/{name}/
|
|
797
|
+
|
|
798
|
+
================================================================================
|
|
799
|
+
PROCHAINES ETAPES
|
|
800
|
+
================================================================================
|
|
801
|
+
|
|
802
|
+
1. Naviguer vers le worktree:
|
|
803
|
+
cd ../hotfixes/{name}
|
|
804
|
+
# ou dans VSCode:
|
|
805
|
+
code ../hotfixes/{name}
|
|
806
|
+
|
|
807
|
+
2. Faire vos corrections et committer:
|
|
808
|
+
/gitflow:3-commit
|
|
809
|
+
|
|
810
|
+
3. Creer une Pull Request (hotfix/{name} → main):
|
|
811
|
+
/gitflow:7-pull-request hotfix/{name}
|
|
812
|
+
|
|
813
|
+
4. Apres merge de la PR, finaliser:
|
|
814
|
+
/gitflow:11-finish hotfix/{name}
|
|
815
|
+
Cela va:
|
|
816
|
+
✓ Incrementer la version PATCH ({current} → {current+patch})
|
|
817
|
+
✓ Creer le tag v{new_version}
|
|
818
|
+
✓ Merger main → develop (merge back)
|
|
819
|
+
✓ Nettoyer le worktree
|
|
650
820
|
|
|
651
821
|
================================================================================
|
|
652
822
|
```
|