Merge Automatisé des PRs d'une EPIC
Ce skill identifie, ordonne et merge toutes les PRs d'une EPIC en gérant les dépendances.
Invocation
code
@merge-epic-prs EPIC-XXX
Phase 0: Découverte des PRs
- •
Lister toutes les PRs ouvertes de l'EPIC :
powershellgh pr list --search "EPIC-XXX in:title" --state open --json number,title,baseRefName,headRefName,mergeable
- •
Pour chaque PR, extraire :
- •
number: numéro PR - •
baseRefName: branche cible - •
headRefName: branche source - •
mergeable: status merge
- •
Phase 1: Construction du Graphe de Dépendances
Règles de dépendance
| Base | Signification |
|---|---|
develop | PR racine, peut être mergée directement |
main | PR de release |
feature/* | Dépend d'une autre PR |
Algorithme
code
graph = {}
for pr in prs:
if pr.base == "develop" or pr.base == "main":
graph[pr.number] = None # Pas de dépendance
else:
# Trouver la PR dont headRefName == pr.baseRefName
parent = find_pr_by_head(pr.baseRefName)
graph[pr.number] = parent.number
Phase 2: Tri Topologique
Ordonner les PRs pour merger les parents avant les enfants :
code
ordre_merge = topological_sort(graph)
Phase 3: Boucle de Merge
Pour CHAQUE PR dans ordre_merge :
Étape 3.1: Vérification Pré-merge
powershell
$status = gh pr view $PR_NUMBER --json mergeable,mergeStateStatus
if ($status.mergeable -ne "MERGEABLE") {
Write-Error "PR #$PR_NUMBER non mergeable"
# Proposer résolution
}
Étape 3.2: Checkout et Rebase
powershell
git fetch origin git checkout $HEAD_BRANCH git fetch origin develop git rebase origin/develop
Si conflits :
- •Lister les fichiers en conflit
- •Proposer résolution automatique si possible
- •Sinon demander intervention manuelle
- •Après résolution : continuer
Étape 3.3: Validation Locale
powershell
cargo fmt --all -- --check cargo clippy -- -D warnings cargo test --workspace
Si échec : Arrêter et signaler.
Étape 3.4: Push et Merge
powershell
git push origin $HEAD_BRANCH --force-with-lease gh pr merge $PR_NUMBER --squash --delete-branch
Étape 3.5: Mise à jour develop local
powershell
git checkout develop git pull origin develop
Étape 3.6: Point de Contrôle
code
✅ PR #XX mergée : [titre] 📊 Progression : X/Y PRs ⏭️ Prochaine PR : #YY
Phase 4: Gestion PR avec Base Feature
Si une PR a comme base une feature branch :
powershell
# Changer la base vers develop gh pr edit $PR_NUMBER --base develop # Rebase sur le nouveau develop (qui contient maintenant la PR parente) git checkout $HEAD_BRANCH git rebase origin/develop git push origin $HEAD_BRANCH --force-with-lease
Phase 5: Résumé Final
code
🎉 EPIC-XXX : Toutes les PRs mergées ! 📊 Statistiques : - PRs mergées : X - Commits squashés : Y - Branches supprimées : Z 📋 PRs traitées : - #92: AgentMemory trait ✅ - #93: Memory impl ✅ - #94: Python bindings ✅ - #95: Langchain ✅ 🔗 Prochaines actions : - Vérifier CI sur develop - Créer tag si release
Gestion des Erreurs
Conflit de merge non résolvable
- •Sauvegarder l'état actuel
- •Afficher les fichiers en conflit
- •Proposer : résoudre manuellement ou skip cette PR
- •Si skip : noter pour traitement ultérieur
Tests échouent après rebase
- •Afficher les tests en échec
- •Proposer debug avec utilisateur
- •Option : skip avec warning
PR non mergeable (checks failed)
- •Afficher les checks en échec
- •Proposer de fixer localement
- •Re-push et retry
Options
| Option | Description |
|---|---|
--dry-run | Afficher le plan sans exécuter |
--skip-tests | Sauter la validation locale (déconseillé) |
--no-delete-branch | Garder les branches après merge |
--include-release | Inclure les PRs vers main |