Intégration de la feature branch ptools

This commit is contained in:
Jephte CLAIN 2015-03-31 18:54:42 +04:00
commit 0e6e94ca59
2 changed files with 97 additions and 41 deletions

63
pdev
View File

@ -55,6 +55,12 @@ OPTIONS
-k, --keep -k, --keep
Avec l'option -m, ne pas supprimer une feature branch après l'avoir Avec l'option -m, ne pas supprimer une feature branch après l'avoir
fusionnée dans develop. fusionnée dans develop.
-z, --delete
Supprimer une feature branch, à condition qu'elle aie déjà été
entièrement fusionnée dans la branch develop
-Z, --force-delete
Supprimer une feature branch, même si elle n'a pas encore été fusionnée
dans la branche develop
-l, --log -l, --log
-d, --diff -d, --diff
@ -71,6 +77,7 @@ projdir=
origin=origin origin=origin
action=branch action=branch
merge_delete=1 merge_delete=1
force_delete=
log= log=
diff= diff=
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
@ -81,6 +88,8 @@ parse_opts "${PRETTYOPTS[@]}" \
--online UTOOLS_VCS_OFFLINE= \ --online UTOOLS_VCS_OFFLINE= \
-m,--merge action=merge \ -m,--merge action=merge \
-k,--keep merge_delete= \ -k,--keep merge_delete= \
-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"
@ -97,7 +106,6 @@ if ! git_have_branch develop; then
fi fi
setx branch=git_get_branch setx branch=git_get_branch
if [ "$action" == branch ]; then if [ "$action" == branch ]; then
feature="$1" feature="$1"
source="${2:-develop}" source="${2:-develop}"
@ -154,7 +162,7 @@ fi
feature="$1" feature="$1"
if [ -n "$feature" ]; then if [ -n "$feature" ]; then
is_feature_branch "$feature" || die "$feature: ce n'est pas une feature branch" is_feature_branch "$feature" || die "$feature: ce n'est pas une feature branch"
git_have_branch "$feature" || die "$feature: branche invalide" git_have_branch "$feature" || die "$feature: branche introuvable"
elif is_feature_branch "$branch"; then elif is_feature_branch "$branch"; then
feature="$branch" feature="$branch"
fi fi
@ -179,27 +187,44 @@ if [ "$action" == merge ]; then
estepn "Intégration ${COULEUR_VERTE}$feature${COULEUR_NORMALE} --> ${COULEUR_BLEUE}develop${COULEUR_NORMALE}" estepn "Intégration ${COULEUR_VERTE}$feature${COULEUR_NORMALE} --> ${COULEUR_BLEUE}develop${COULEUR_NORMALE}"
ask_yesno "Voulez-vous continuer?" O || die ask_yesno "Voulez-vous continuer?" O || die
git checkout develop git checkout develop || die
git merge "$feature" -m "Intégration de la feature branch $feature" --no-ff || die git merge "$feature" -m "Intégration de la branche $feature" --no-ff || die
if [ -n "$merge_delete" ]; then # mettre à jour la branche sur laquelle on se trouve
estepi "Suppression de la branche locale" setx branch=git_get_branch
git branch -D "$feature"
if git_have_remote "$origin"; then [ -n "$merge_delete" ] && action=delete
if [ -z "$UTOOLS_VCS_OFFLINE" ]; then fi
estepi "Suppression de la branche distante"
git push "$origin" ":$feature" if [ "$action" == delete ]; then
else if [ -z "$force_delete" ]; then
eimportant "\ # vérifier que la branche a été fusionnée
La branche $feature n'a plus lieu d'être, mais la configuration actuelle interdit de la supprimer dans le dépôt distant. git_is_merged "$feature" develop || die "Refus de supprimer la branche $feature: elle n'a pas été fusionnée dans develop"
Veuillez le faire manuellement avec la commande suivante:
$(quoted_args git push "$origin" ":$feature")"
fi
fi
fi fi
elif [ "$action" == diff ]; then if [ "$branch" == "$feature" ]; then
# si on est sur la branche en question, en sortir pour pouvoir la
# supprimer
git checkout develop || die
fi
estepi "Suppression de la branche locale"
git branch -D "$feature"
if git_have_remote "$origin"; then
if [ -z "$UTOOLS_VCS_OFFLINE" ]; then
estepi "Suppression de la branche distante"
git push "$origin" ":$feature"
elif git_have_rbranch "$feature" "$origin"; then
eimportant "\
La branche $origin/$feature n'a plus lieu d'être, mais la configuration actuelle interdit de la supprimer.
Veuillez le faire manuellement avec la commande suivante:
$(quoted_args git push "$origin" ":$feature")"
fi
fi
fi
if [ "$action" == diff ]; then
if [ -n "$log" ]; then if [ -n "$log" ]; then
if [ -n "$feature" ]; then if [ -n "$feature" ]; then
git log ${diff:+-p} develop.."$feature" git log ${diff:+-p} develop.."$feature"

75
prel
View File

@ -93,6 +93,13 @@ 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.
-z, --delete
Supprimer une branche de release, à condition qu'elle aie déjà été
entièrement fusionnée dans la branch master
-Z, --force-delete
Supprimer une branche de release, même si elle n'a pas encore été
fusionnée dans la branche master
-l, --log -l, --log
Afficher les modifications actuellement effectuée dans la branche de Afficher les modifications actuellement effectuée dans la branche de
release par rapport à develop. release par rapport à develop.
@ -104,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[@]}" \
@ -128,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"
@ -208,12 +218,6 @@ if [ "$action" == update ]; then
;; ;;
esac esac
if [ -z "$newver" ]; then
# le cas échéant, tenter de calculer la version en fonction de la
# release
[[ "$release" == release-* ]] && newver="${release#release-}"
fi
set -- "$release" "$1" set -- "$release" "$1"
action=checkout action=checkout
fi fi
@ -280,6 +284,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
@ -297,7 +304,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
@ -326,11 +333,16 @@ 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 [ -z "$newver" ]; then
# le cas échéant, tenter de calculer la version en fonction de la release
is_release_branch "$release" && newver="${release#release-}"
fi
if [ -n "$newver" ]; then if [ -n "$newver" ]; then
estep "Création du tag $newver" estepn "Création du tag $newver"
git tag "$newver" || die git tag "$newver" || die
fi fi
@ -338,26 +350,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" 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"