implémener -z et -Z

This commit is contained in:
Jephte CLAIN 2015-03-31 17:59:47 +04:00
parent 2f41de35b7
commit 6c8e750d31
1 changed files with 42 additions and 17 deletions

59
prel
View File

@ -93,10 +93,10 @@ OPTIONS
S'il n'existe pas de branche de release, proposer de fusionner les S'il n'existe pas de branche de release, proposer de fusionner les
modifications de la branche develop dans la branche master, sans modifications de la branche develop dans la branche master, sans
préparer de branche de release au préalable. préparer de branche de release au préalable.
-d, --delete -z, --delete
Supprimer une branche de release, à condition qu'elle aie déjà été Supprimer une branche de release, à condition qu'elle aie déjà été
entièrement fusionnée dans la branch master entièrement fusionnée dans la branch master
--force-delete -Z, --force-delete
Supprimer une branche de release, même si elle n'a pas encore été Supprimer une branche de release, même si elle n'a pas encore été
fusionnée dans la branche master fusionnée dans la branche master
@ -111,12 +111,13 @@ OPTIONS
projdir= projdir=
origin=origin origin=origin
action=auto action=auto
update=
merge=
checkout= checkout=
update=
incversion= incversion=
pver_opts=() pver_opts=()
write=1 write=1
merge=
force_delete=
log= log=
diff= diff=
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
@ -135,6 +136,8 @@ parse_opts "${PRETTYOPTS[@]}" \
-w,--write write=1 \ -w,--write write=1 \
-n,--no-write write= \ -n,--no-write write= \
-m,--merge merge=1 \ -m,--merge merge=1 \
-z,--delete action=delete \
-Z,--force-delete '$action=delete; force_delete=1' \
-l,--log '$action=diff; log=1' \ -l,--log '$action=diff; log=1' \
-d,--diff '$action=diff; diff=1' \ -d,--diff '$action=diff; diff=1' \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
@ -287,6 +290,9 @@ Vous allez créer la nouvelle branche de release ${COULEUR_VERTE}$release${COULE
fi fi
if [ "$r" -eq 0 -a -n "$merge" ]; then if [ "$r" -eq 0 -a -n "$merge" ]; then
# mettre à jour la branche sur laquelle on se trouve
setx branch=git_get_branch
set -- "$release" set -- "$release"
action=merge action=merge
else else
@ -304,7 +310,7 @@ if [ -n "$release" ]; then
elif ! is_develop_branch "$release"; then elif ! is_develop_branch "$release"; then
die "Aucune branche de release n'existe, vous devez fusionner à partir de develop" die "Aucune branche de release n'existe, vous devez fusionner à partir de develop"
fi fi
git_have_branch "$release" || die "$release: branche invalide" git_have_branch "$release" || die "$release: branche introuvable"
elif is_release_branch "$branch"; then elif is_release_branch "$branch"; then
release="$branch" release="$branch"
fi fi
@ -333,7 +339,7 @@ if [ "$action" == merge ]; then
estepn "Intégration ${COULEUR_VERTE}$release${COULEUR_NORMALE} --> ${COULEUR_BLEUE}master${COULEUR_NORMALE}" estepn "Intégration ${COULEUR_VERTE}$release${COULEUR_NORMALE} --> ${COULEUR_BLEUE}master${COULEUR_NORMALE}"
ask_yesno $confirm "Voulez-vous continuer?" O || die ask_yesno $confirm "Voulez-vous continuer?" O || die
git checkout master git checkout master || die
git merge "$release" -m "Intégration de la branche $release" --no-ff || die git merge "$release" -m "Intégration de la branche $release" --no-ff || die
if [ -n "$newver" ]; then if [ -n "$newver" ]; then
@ -345,26 +351,45 @@ if [ "$action" == merge ]; then
estepn "Intégration ${COULEUR_VERTE}$release${COULEUR_NORMALE} --> ${COULEUR_BLEUE}develop${COULEUR_NORMALE}" estepn "Intégration ${COULEUR_VERTE}$release${COULEUR_NORMALE} --> ${COULEUR_BLEUE}develop${COULEUR_NORMALE}"
git checkout develop git checkout develop
git merge "$release" -m "Intégration de la branche $release" --no-ff || die git merge "$release" -m "Intégration de la branche $release" --no-ff || die
fi
git checkout master # mettre à jour la branche sur laquelle on se trouve
git checkout master || die
setx branch=git_get_branch
estepi "Suppression de la branche locale" [ -n "$merge_delete" ] && action=delete
git branch -D "$release" fi
if git_have_remote "$origin"; then if [ "$action" == delete ]; then
if [ -z "$UTOOLS_VCS_OFFLINE" ]; then if [ -z "$force_delete" ]; then
estepi "Suppression de la branche distante" # vérifier que la branche a été fusionnée
git push "$origin" ":$release" git_is_merged "$release" master || die "Refus de supprimer la branche $release: elle n'a pas été fusionnée dans master"
elif git_have_rbranch "$release" "$origin"; then git_is_merged "$release" develop || die "Refus de supprimer la branche $release: elle n'a pas été fusionnée dans develop"
eimportant "\ fi
if [ "$branch" == "$release" ]; then
# si on est sur la branche en question, en sortir pour pouvoir la
# supprimer
git checkout master || die
fi
estepi "Suppression de la branche locale"
git branch -D "$release"
if git_have_remote "$origin"; then
if [ -z "$UTOOLS_VCS_OFFLINE" ]; then
estepi "Suppression de la branche distante"
git push "$origin" ":$release"
elif git_have_rbranch "$release" "$origin"; then
eimportant "\
La branche $origin/$release n'a plus lieu d'être, mais la configuration actuelle interdit de la supprimer. La branche $origin/$release n'a plus lieu d'être, mais la configuration actuelle interdit de la supprimer.
Veuillez le faire manuellement avec la commande suivante: Veuillez le faire manuellement avec la commande suivante:
$(qvals git push "$origin" ":$release")" $(qvals git push "$origin" ":$release")"
fi
fi fi
fi fi
fi
elif [ "$action" == diff ]; then if [ "$action" == diff ]; then
if [ -n "$log" ]; then if [ -n "$log" ]; then
if [ -n "$release" ]; then if [ -n "$release" ]; then
git log ${diff:+-p} master.."$release" git log ${diff:+-p} master.."$release"