deploy/hotfix: ne pousser que les branches nommées (plus de co-push de master)
This commit is contained in:
@@ -81,11 +81,15 @@ git deploy gitea prod -m "ajout du bloc contact"
|
||||
|
||||
1. commit sur `master` (message obligatoire s'il y a des modifs) ;
|
||||
2. merge `master` → `prod` ;
|
||||
3. push atomique (dernière étape) ;
|
||||
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`.
|
||||
|
||||
Plusieurs environnements en une commande (commit unique, merges enchaînés,
|
||||
**push atomique de tout à la fin** — tout ou rien) :
|
||||
**push atomique de toutes les branches nommées à la fin** — tout ou rien) :
|
||||
|
||||
```bash
|
||||
git deploy gitea prod stage -m "ajout du bloc contact"
|
||||
@@ -100,11 +104,13 @@ git hotfix gitea prod -m "fix: lien du menu"
|
||||
|
||||
1. met tes modifs de côté (stash) ;
|
||||
2. bascule sur `prod`, applique et committe le correctif ;
|
||||
3. rapatrie le correctif dans `master` (merge) ;
|
||||
4. push atomique puis retour sur `master`.
|
||||
3. rapatrie le correctif dans `master` en local (merge) ;
|
||||
4. push de `prod` puis retour sur `master`.
|
||||
|
||||
Résultat : le correctif est sur `prod` **et** sur `master`, sans embarquer les
|
||||
features non livrées de `master`.
|
||||
Résultat : le correctif est sur `prod` (poussé) **et** dans ton `master` local,
|
||||
sans embarquer les features non livrées de `master`. Comme `git deploy`, `git
|
||||
hotfix` ne pousse **que** la branche d'env, pas `master` : ton `master` distant
|
||||
se mettra à jour quand tu le pousseras explicitement.
|
||||
|
||||
## Sûreté
|
||||
|
||||
|
||||
+6
-6
@@ -55,7 +55,7 @@ fi
|
||||
|
||||
# ---- Confirmation ----------------------------------------------------------
|
||||
list="${BRANCHES[*]}"
|
||||
if [ "$PUSH" = true ]; then push_line="OUI vers '$REMOTE' ($list + '$SOURCE', atomique)"; else push_line="NON (désactivé)"; fi
|
||||
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)"
|
||||
confirm " • $commit_line
|
||||
• merge '$SOURCE' → $list
|
||||
@@ -106,14 +106,14 @@ echo "✓ Local OK : $list."
|
||||
# ---- Push : dernière étape, atomique, jamais forcé -------------------------
|
||||
if [ "$PUSH" = true ]; then
|
||||
echo "→ Vérification du push (dry-run)…"
|
||||
git push --atomic --dry-run "$REMOTE" "${BRANCHES[@]}" "$SOURCE" \
|
||||
git push --atomic --dry-run "$REMOTE" "${BRANCHES[@]}" \
|
||||
|| { echo "✗ Push rejeté au dry-run (non fast-forward ?). RIEN poussé. Local conservé." >&2; exit 1; }
|
||||
echo "→ Push atomique ($list + '$SOURCE') → '$REMOTE'…"
|
||||
git push --atomic "$REMOTE" "${BRANCHES[@]}" "$SOURCE" \
|
||||
echo "→ Push atomique ($list) → '$REMOTE'…"
|
||||
git push --atomic "$REMOTE" "${BRANCHES[@]}" \
|
||||
|| { echo "✗ Échec du push. RIEN poussé (atomique). Local conservé." >&2; \
|
||||
echo " Relance : git push --atomic $REMOTE $list $SOURCE" >&2; exit 1; }
|
||||
echo " Relance : git push --atomic $REMOTE $list" >&2; exit 1; }
|
||||
echo "✓ Poussé sur '$REMOTE'."
|
||||
else
|
||||
echo "→ (push désactivé) aurait fait : git push --atomic $REMOTE $list $SOURCE"
|
||||
echo "→ (push désactivé) aurait fait : git push --atomic $REMOTE $list"
|
||||
fi
|
||||
echo "✓ Terminé. Tu es sur '$SOURCE'."
|
||||
|
||||
+7
-7
@@ -50,7 +50,7 @@ assert_clean_git_state
|
||||
{ [ "$MSG_SET" = 1 ] && [ -n "$MSG" ]; } || die 'Message requis : -m "…".'
|
||||
|
||||
# ---- Confirmation ----------------------------------------------------------
|
||||
if [ "$PUSH" = true ]; then push_line="OUI vers '$REMOTE' ('$BRANCH' + '$SOURCE', atomique)"; else push_line="NON (désactivé)"; fi
|
||||
if [ "$PUSH" = true ]; then push_line="OUI vers '$REMOTE' ('$BRANCH')"; else push_line="NON (désactivé)"; fi
|
||||
confirm " • stash des modifs de '$SOURCE'
|
||||
• application + commit sur '$BRANCH' : \"$MSG\"
|
||||
• rapatriement (merge) dans '$SOURCE'
|
||||
@@ -99,14 +99,14 @@ echo "✓ Local OK : hotfix sur '$BRANCH' + rapatrié dans '$SOURCE'."
|
||||
# ---- Push : dernière étape, atomique, jamais forcé -------------------------
|
||||
if [ "$PUSH" = true ]; then
|
||||
echo "→ Vérification du push (dry-run)…"
|
||||
git push --atomic --dry-run "$REMOTE" "$BRANCH" "$SOURCE" \
|
||||
git push --dry-run "$REMOTE" "$BRANCH" \
|
||||
|| { echo "✗ Push rejeté au dry-run (non fast-forward ?). RIEN poussé. Local conservé." >&2; exit 1; }
|
||||
echo "→ Push atomique '$BRANCH' + '$SOURCE' → '$REMOTE'…"
|
||||
git push --atomic "$REMOTE" "$BRANCH" "$SOURCE" \
|
||||
|| { echo "✗ Échec du push. RIEN poussé (atomique). Local conservé." >&2; \
|
||||
echo " Relance : git push --atomic $REMOTE $BRANCH $SOURCE" >&2; exit 1; }
|
||||
echo "→ Push '$BRANCH' → '$REMOTE'…"
|
||||
git push "$REMOTE" "$BRANCH" \
|
||||
|| { echo "✗ Échec du push. RIEN poussé. Local conservé." >&2; \
|
||||
echo " Relance : git push $REMOTE $BRANCH" >&2; exit 1; }
|
||||
echo "✓ Poussé sur '$REMOTE'."
|
||||
else
|
||||
echo "→ (push désactivé) aurait fait : git push --atomic $REMOTE $BRANCH $SOURCE"
|
||||
echo "→ (push désactivé) aurait fait : git push $REMOTE $BRANCH"
|
||||
fi
|
||||
echo "✓ Terminé. Tu es sur '$SOURCE'."
|
||||
|
||||
Reference in New Issue
Block a user