deploy: autoriser SOURCE dans la liste (poussée telle quelle, sans merge)
This commit is contained in:
@@ -84,9 +84,16 @@ git deploy gitea prod -m "ajout du bloc contact"
|
||||
3. push de `prod` (dernière étape) ;
|
||||
4. retour sur `master`.
|
||||
|
||||
> `git deploy` ne pousse **que les branches nommées**, jamais `master`. Ça évite
|
||||
> qu'un bare repo serveur (dont le hook n'attend qu'une branche précise) rejette
|
||||
> le push. Si tu veux sauvegarder `master` sur un remote central : `git push gitea master`.
|
||||
> `git deploy` ne pousse **que les branches nommées**, jamais `master` implicitement.
|
||||
> Ça évite qu'un bare repo serveur (dont le hook n'attend qu'une branche précise)
|
||||
> rejette le push.
|
||||
>
|
||||
> Pour sauvegarder `master` sur un remote central, inclus-le explicitement dans la
|
||||
> liste — il sera poussé tel quel (sans merge) :
|
||||
>
|
||||
> ```bash
|
||||
> git deploy gitea master prod stage -m "message"
|
||||
> ```
|
||||
|
||||
Plusieurs environnements en une commande (commit unique, merges enchaînés,
|
||||
**push atomique de toutes les branches nommées à la fin** — tout ou rien) :
|
||||
|
||||
+11
-2
@@ -40,10 +40,10 @@ git remote get-url "$REMOTE" >/dev/null 2>&1 || die "Remote inconnu : $REMOTE"
|
||||
seen=""
|
||||
for b in "${BRANCHES[@]}"; do
|
||||
git show-ref --verify --quiet "refs/heads/$b" || die "Branche locale inconnue : $b"
|
||||
[ "$b" != "$SOURCE" ] || die "'$SOURCE' est la branche de dev, pas une branche de déploiement."
|
||||
case " $seen " in *" $b "*) die "Branche indiquée en double : $b" ;; esac
|
||||
seen="$seen $b"
|
||||
done
|
||||
# '$SOURCE' est autorisée dans la liste : elle sera poussée telle quelle (pas de merge).
|
||||
current=$(git branch --show-current)
|
||||
[ "$current" = "$SOURCE" ] || die "Place-toi sur '$SOURCE' pour déployer (git switch $SOURCE)."
|
||||
assert_clean_git_state
|
||||
@@ -55,10 +55,15 @@ fi
|
||||
|
||||
# ---- Confirmation ----------------------------------------------------------
|
||||
list="${BRANCHES[*]}"
|
||||
# branches réellement fusionnées = toutes sauf SOURCE (qui est poussée telle quelle)
|
||||
merge_list=""
|
||||
for b in "${BRANCHES[@]}"; do [ "$b" != "$SOURCE" ] && merge_list="$merge_list $b"; done
|
||||
merge_list="${merge_list# }"
|
||||
if [ "$PUSH" = true ]; then push_line="OUI vers '$REMOTE' ($list, atomique)"; else push_line="NON (désactivé)"; fi
|
||||
[ "$dirty" = 1 ] && commit_line="commit sur '$SOURCE' : \"$MSG\"" || commit_line="aucun commit (arbre propre)"
|
||||
[ -n "$merge_list" ] && merge_line="merge '$SOURCE' → $merge_list" || merge_line="aucun merge (push direct)"
|
||||
confirm " • $commit_line
|
||||
• merge '$SOURCE' → $list
|
||||
• $merge_line
|
||||
• push : $push_line"
|
||||
|
||||
# ---- Sauvegarde de l'état pour rollback ------------------------------------
|
||||
@@ -96,6 +101,10 @@ if [ "$dirty" = 1 ]; then
|
||||
fi
|
||||
|
||||
for b in "${BRANCHES[@]}"; do
|
||||
if [ "$b" = "$SOURCE" ]; then
|
||||
echo "✓ '$b' (dev) incluse au push telle quelle."
|
||||
continue
|
||||
fi
|
||||
git switch -q "$b" || fail "Impossible de basculer sur '$b'."
|
||||
git merge --no-edit -q "$SOURCE" || fail "Conflit de merge sur '$b'."
|
||||
echo "✓ '$b' à jour depuis '$SOURCE'."
|
||||
|
||||
Reference in New Issue
Block a user