mettre à jour la version avec pver

This commit is contained in:
Jephté Clain 2015-03-23 07:33:01 +04:00
parent f98c977cde
commit 8d4d35dde5
1 changed files with 122 additions and 15 deletions

137
todo/prel
View File

@ -81,6 +81,13 @@ OPTIONS
jusqu'à la release finale. Ainsi, la branche de release est nommée jusqu'à la release finale. Ainsi, la branche de release est nommée
d'après la version finale, mais le projet peut recevoir une version de d'après la version finale, mais le projet peut recevoir une version de
pré-release incrémentale. pré-release incrémentale.
-w, --write
Si une nouvelle branche est créée avec -u, mettre à jour le fichier
VERSION.txt avec pver. C'est l'option par défaut.
-n, --no-write
Si une nouvelle branche est créée avec -u, NE PAS mettre à jour le
fichier VERSION.txt avec pver. Utiliser cette option si la mise à jour
du numéro de version doit être faite par manière particulière.
-m, --merge -m, --merge
Si la branche actuelle est une branche de release, ou s'il existe une Si la branche actuelle est une branche de release, ou s'il existe une
@ -102,6 +109,7 @@ origin=origin
action=checkout action=checkout
incversion= incversion=
pver_opts=() pver_opts=()
write=1
log= log=
diff= diff=
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
@ -117,6 +125,8 @@ parse_opts "${PRETTYOPTS[@]}" \
-z,--minor '$action=update; incversion=minor' \ -z,--minor '$action=update; incversion=minor' \
-p,--patchlevel '$action=update; incversion=patchlevel' \ -p,--patchlevel '$action=update; incversion=patchlevel' \
-v: '$action=update; add@ pver_opts' \ -v: '$action=update; add@ pver_opts' \
-w,--write write=1 \
-n,--no-write write= \
-m,--merge action=merge \ -m,--merge action=merge \
-l,--log '$action=diff; log=1' \ -l,--log '$action=diff; log=1' \
-d,--diff '$action=diff; diff=1' \ -d,--diff '$action=diff; diff=1' \
@ -131,13 +141,14 @@ git_ensure_gitvcs
setx branch=git_get_branch setx branch=git_get_branch
if [ "$action" == update ]; then if [ "$action" == update ]; then
setx version=pver -g "" setx oldver=pver -g ""
newver=
if [ "$incversion" == auto ]; then if [ "$incversion" == auto ]; then
if [ ${#pver_opts[*]} -gt 0 ]; then if [ ${#pver_opts[*]} -gt 0 ]; then
# des options ont été spécifiées, les honorer # des options ont été spécifiées, les honorer
setx specv=pver -s "$version" "${pver_opts[@]}" setx newver=pver -s "$oldver" "${pver_opts[@]}"
release="release-$specv" release="release-$newver"
else else
# sinon, prendre une décision en fonction des branches de release # sinon, prendre une décision en fonction des branches de release
# qui existent déjà # qui existent déjà
@ -161,9 +172,9 @@ if [ "$action" == update ]; then
fi fi
case "$incversion" in case "$incversion" in
menu) menu)
setx majorv=pver -s "$version" -ux "${pver_opts[@]}" setx majorv=pver -s "$oldver" -ux "${pver_opts[@]}"
setx minorv=pver -s "$version" -uz "${pver_opts[@]}" setx minorv=pver -s "$oldver" -uz "${pver_opts[@]}"
setx patchlevelv=pver -g "$version" -up "${pver_opts[@]}" setx patchlevelv=pver -g "$oldver" -up "${pver_opts[@]}"
release="release-$minorv" release="release-$minorv"
branches=("release-$majorv" "release-$minorv" "release-$patchlevelv" master) branches=("release-$majorv" "release-$minorv" "release-$patchlevelv" master)
simple_menu release branches \ simple_menu release branches \
@ -171,19 +182,25 @@ if [ "$action" == update ]; then
-m "Veuillez choisir la branche à créer" -m "Veuillez choisir la branche à créer"
;; ;;
major) major)
setx majorv=pver -s "$version" -ux "${pver_opts[@]}" setx newver=pver -s "$oldver" -ux "${pver_opts[@]}"
release="release-$majorv" release="release-$newver"
;; ;;
minor) minor)
setx minorv=pver -s "$version" -uz "${pver_opts[@]}" setx newver=pver -s "$oldver" -uz "${pver_opts[@]}"
release="release-$minorv" release="release-$newver"
;; ;;
patchlevel) patchlevel)
setx patchlevelv=pver -g "$version" -up "${pver_opts[@]}" setx newver=pver -g "$oldver" -up "${pver_opts[@]}"
release="release-$patchlevelv" release="release-$newver"
;; ;;
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
@ -223,8 +240,9 @@ if [ "$action" == checkout ]; then
# Créer/basculer vers une release branch # Créer/basculer vers une release branch
git_ensure_cleancheckout git_ensure_cleancheckout
is_any_branch "$release" master release || die "$release: ce n'est pas une release branch" is_any_branch "$release" master release || die "$release: ce n'est pas une release branch"
r=0
if git_have_branch "$release"; then if git_have_branch "$release"; then
git checkout "$release" git checkout "$release"; r=$?
else else
estepn "\ estepn "\
Vous allez créer la nouvelle release branch ${COULEUR_VERTE}$release${COULEUR_NORMALE} Vous allez créer la nouvelle release branch ${COULEUR_VERTE}$release${COULEUR_NORMALE}
@ -233,8 +251,97 @@ Vous allez créer la nouvelle release branch ${COULEUR_VERTE}$release${COULEUR_N
git_ensure_branch "$release" "$source" "$origin" git_ensure_branch "$release" "$source" "$origin"
[ $? -eq 2 ] && die "Impossible de créer la branche $release. Veuillez vérifier que la branche $source existe" [ $? -eq 2 ] && die "Impossible de créer la branche $release. Veuillez vérifier que la branche $source existe"
git checkout "$release" git checkout "$release"; r=$?
if [ "$r" -eq 0 -a -n "$newver" ]; then
if pver -uv "$newver"; then
git add -A
git commit -m "Initialiser la version $newver"
fi
fi
fi fi
exit $? exit "$r"
fi
setx -a branches=list_release_branches
setb have_release_branches=[ ${#branches[*]} -gt 0 ]
release="$1"
if [ -n "$release" ]; then
if [ -n "$have_release_branches" ]; then
is_release_branch "$release" || die "$release: ce n'est pas une release branch"
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"
elif is_release_branch "$branch"; then
release="$branch"
fi
if [ "$action" == merge ]; then
confirm=
if [ -z "$release" ]; then
if [ ${#branches[*]} -eq 0 ]; then
ewarn "Aucune release branch n'a été préparée.
Si vous continuez, la branche develop sera fusionnée directement dans master."
release=develop
confirm=-y
elif [ ${#branches[*]} -eq 1 ]; then
release="${branches[0]}"
estepn "Autosélection de $release"
else
default_release="$branch"
array_contains branches "$default_release" || default_release="${branches[0]}"
simple_menu release branches -d "$default_release" \
-t "Choix de la release branch" \
-m "Veuillez choisir la branche"
fi
fi
estepn "\
Intégration de la branche ${COULEUR_VERTE}$release${COULEUR_NORMALE}
dans la branche de destination ${COULEUR_BLEUE}master${COULEUR_NORMALE}"
ask_yesno $confirm "Voulez-vous continuer?" O || die
git checkout master
git merge "$release" -m "Intégration de la release branch $release" --no-ff || die
if [ "$release" != develop ]; then
git checkout develop
git merge "$release" -m "Intégration de la release branch $release" --no-ff || die
git checkout master
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"
else
eimportant "\
La branche $release n'a plus lieu d'être, mais la configuration actuelle interdit de la supprimer dans le dépôt distant.
Veuillez le faire manuellement avec la commande suivante:
$(quoted_args git push "$origin" ":$release")"
fi
fi
fi
elif [ "$action" == diff ]; then
if [ -n "$log" ]; then
if [ -n "$release" ]; then
git log ${diff:+-p} master.."$release"
else
git log ${diff:+-p} master..develop
fi
elif [ -n "$diff" ]; then
if [ -n "$release" ]; then
git diff master.."$release"
else
git diff master..develop
fi
fi
fi fi