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

41
pdev
View File

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

57
prel
View File

@ -93,6 +93,13 @@ OPTIONS
S'il n'existe pas de branche de release, proposer de fusionner les
modifications de la branche develop dans la branche master, sans
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
Afficher les modifications actuellement effectuée dans la branche de
release par rapport à develop.
@ -104,12 +111,13 @@ OPTIONS
projdir=
origin=origin
action=auto
update=
merge=
checkout=
update=
incversion=
pver_opts=()
write=1
merge=
force_delete=
log=
diff=
parse_opts "${PRETTYOPTS[@]}" \
@ -128,6 +136,8 @@ parse_opts "${PRETTYOPTS[@]}" \
-w,--write write=1 \
-n,--no-write write= \
-m,--merge merge=1 \
-z,--delete action=delete \
-Z,--force-delete '$action=delete; force_delete=1' \
-l,--log '$action=diff; log=1' \
-d,--diff '$action=diff; diff=1' \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
@ -208,12 +218,6 @@ if [ "$action" == update ]; then
;;
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"
action=checkout
fi
@ -280,6 +284,9 @@ Vous allez créer la nouvelle branche de release ${COULEUR_VERTE}$release${COULE
fi
if [ "$r" -eq 0 -a -n "$merge" ]; then
# mettre à jour la branche sur laquelle on se trouve
setx branch=git_get_branch
set -- "$release"
action=merge
else
@ -297,7 +304,7 @@ if [ -n "$release" ]; then
elif ! is_develop_branch "$release"; then
die "Aucune branche de release n'existe, vous devez fusionner à partir de develop"
fi
git_have_branch "$release" || die "$release: branche invalide"
git_have_branch "$release" || die "$release: branche introuvable"
elif is_release_branch "$branch"; then
release="$branch"
fi
@ -326,11 +333,16 @@ if [ "$action" == merge ]; then
estepn "Intégration ${COULEUR_VERTE}$release${COULEUR_NORMALE} --> ${COULEUR_BLEUE}master${COULEUR_NORMALE}"
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
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
estep "Création du tag $newver"
estepn "Création du tag $newver"
git tag "$newver" || die
fi
@ -338,8 +350,27 @@ if [ "$action" == merge ]; then
estepn "Intégration ${COULEUR_VERTE}$release${COULEUR_NORMALE} --> ${COULEUR_BLEUE}develop${COULEUR_NORMALE}"
git checkout develop
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
action=delete
fi
if [ "$action" == delete ]; then
if [ -z "$force_delete" ]; then
# vérifier que la branche a été fusionnée
git_is_merged "$release" master || die "Refus de supprimer la branche $release: elle n'a pas été fusionnée dans master"
git_is_merged "$release" develop || die "Refus de supprimer la branche $release: elle n'a pas été fusionnée dans develop"
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"
@ -357,7 +388,7 @@ Veuillez le faire manuellement avec la commande suivante:
fi
fi
elif [ "$action" == diff ]; then
if [ "$action" == diff ]; then
if [ -n "$log" ]; then
if [ -n "$release" ]; then
git log ${diff:+-p} master.."$release"