diff --git a/pdev b/pdev index fb0561b..63a2924 100755 --- a/pdev +++ b/pdev @@ -52,13 +52,16 @@ OPTIONS -m, --merge Si la branche actuelle est une feature branch, la merger dans develop puis la supprimer. Puis basculer sur la branche develop. + --merge-log + Ajouter un résumé des modifications sur la feature branch dans le + message du merge -k, --keep Avec l'option -m, ne pas supprimer une feature branch après l'avoir fusionnée dans develop. - -z, --delete + --delete Supprimer une feature branch, à condition qu'elle aie déjà été entièrement fusionnée dans la branch develop - -Z, --force-delete + --force-delete Supprimer une feature branch, même si elle n'a pas encore été fusionnée dans la branche develop @@ -76,6 +79,7 @@ OPTIONS projdir= origin=origin action=branch +merge_log= merge_delete=1 force_delete= log= @@ -87,9 +91,10 @@ parse_opts "${PRETTYOPTS[@]}" \ -o,--offline UTOOLS_VCS_OFFLINE=1 \ --online UTOOLS_VCS_OFFLINE= \ -m,--merge action=merge \ + --merge-log merge_log=1 \ -k,--keep merge_delete= \ - -z,--delete action=delete \ - -Z,--force-delete '$action=delete; force_delete=1' \ + --delete action=delete \ + --force-delete '$action=delete; force_delete=1' \ -l,--log '$action=diff; log=1' \ -d,--diff '$action=diff; diff=1' \ @ args -- "$@" && set -- "${args[@]}" || die "$args" @@ -189,8 +194,17 @@ if [ "$action" == merge ]; then estepn "Intégration ${COULEUR_VERTE}$feature${COULEUR_NORMALE} --> ${COULEUR_BLEUE}develop${COULEUR_NORMALE}" ask_yesno "Voulez-vous continuer?" O || die + # calculer la suite des modifications + mergemsg="Intégration de la branche $feature" + if [ -n "$merge_log" ]; then + setx mergebase=git merge-base develop "$feature" + setx modifs=git log --oneline "$mergebase..$feature" + [ -n "$modifs" ] && mergemsg="$mergemsg +$modifs" + fi + git checkout develop || die - git merge "$feature" -m "Intégration de la branche $feature" --no-ff || die + git merge "$feature" -m "$mergemsg" --no-ff || die # mettre à jour la branche sur laquelle on se trouve setx branch=git_get_branch diff --git a/prel b/prel index 7ca7073..8bda889 100755 --- a/prel +++ b/prel @@ -85,6 +85,11 @@ OPTIONS 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. + -e, --edit + Editer le fichier CHANGES.txt autogénéré par -u -w + Cette option est surtout utile si -m est utilisé avec -u, pour donner la + possibilité de corriger la liste des modifications avant leur + enregistrement définitif. -m, --merge Si la branche actuelle est une branche de release, ou s'il existe une @@ -93,10 +98,10 @@ 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 + --delete Supprimer une branche de release, à condition qu'elle aie déjà été entièrement fusionnée dans la branch master - -Z, --force-delete + --force-delete Supprimer une branche de release, même si elle n'a pas encore été fusionnée dans la branche master @@ -116,6 +121,7 @@ update= incversion= pver_opts=() write=1 +edit_changes= merge= force_delete= log= @@ -135,9 +141,10 @@ parse_opts "${PRETTYOPTS[@]}" \ -v: '$update=1; add@ pver_opts' \ -w,--write write=1 \ -n,--no-write write= \ + -e,--edit edit_changes=1 \ -m,--merge merge=1 \ - -z,--delete action=delete \ - -Z,--force-delete '$action=delete; force_delete=1' \ + --delete action=delete \ + --force-delete '$action=delete; force_delete=1' \ -l,--log '$action=diff; log=1' \ -d,--diff '$action=diff; diff=1' \ @ args -- "$@" && set -- "${args[@]}" || die "$args" @@ -273,11 +280,41 @@ Vous allez créer la nouvelle branche de release ${COULEUR_VERTE}$release${COULE [ $? -eq 2 ] && die "Impossible de créer la branche $release. Veuillez vérifier que la branche $source existe" git checkout "$release"; r=$? - if [ "$r" -eq 0 -a -n "$newver" -a -n "$write" ]; then - if pver -uv "$newver"; then - git add -A - git commit -m "Init version $newver" + 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 [ "$r" -eq 0 -a -n "$write" ]; then + commitmsg="Init changelog" + if [ -n "$newver" ]; then + pver -uv "$newver" && commitmsg="Init changelog & version $newver" fi + + changelog="## Version $release du $(date +%d/%m/%Y-%H:%M)" + setx mergebase=git merge-base master "$release" + setxp modifs=git log --oneline "$mergebase..$release" // grep -v "Intégration de la branche release-" + [ -n "$modifs" ] && changelog="$changelog + +$modifs" + + ac_set_tmpfile tmpchanges + echo "$changelog" >>"$tmpchanges" + + if [ -n "$edit_changes" ]; then + estep "Lancement d'un éditeur pour vérifier la liste des modifications" + "${EDITOR:-vi}" "$tmpchanges" + fi + + if [ -f CHANGES.txt ]; then + echo >>"$tmpchanges" + cat CHANGES.txt >>"$tmpchanges" + fi + cat "$tmpchanges" >CHANGES.txt + ac_clean "$tmpchanges" + + git add -A + git commit -m "$commitmsg" fi fi if [ "$r" -eq 0 ]; then @@ -345,7 +382,7 @@ if [ "$action" == merge ]; then if [ -n "$newver" ]; then estepn "Création du tag $newver" - git tag "$newver" || die + git tag --force "$newver" || die fi if [ "$release" != develop ]; then