From bf4d934daa88b8d0fa458df6838391a599a598f3 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Mon, 20 Oct 2025 20:55:35 +0400 Subject: [PATCH] migration prel --- bash/src/pman.sh | 231 +++++++++++++++++++++++++++++++++++------------ bin/prel | 71 ++++----------- bin/ptool | 162 +++------------------------------ 3 files changed, 203 insertions(+), 261 deletions(-) diff --git a/bash/src/pman.sh b/bash/src/pman.sh index 52f7ff3..fab38e2 100644 --- a/bash/src/pman.sh +++ b/bash/src/pman.sh @@ -36,11 +36,11 @@ PMAN_TOOL_PDEV=DEVELOP PMAN_TOOL_PWIP=FEATURE PMAN_TOOL_PMAIN=MAIN PMAN_TOOL_PDIST=DIST -UPSTREAM_BASE= ; UPSTREAM_MERGE_FROM= ; UPSTREAM_MERGE_TO=DEVELOP ; UPSTREAM_PREL= ; UPSTREAM_DELETE= -DEVELOP_BASE=MAIN ; DEVELOP_MERGE_FROM=FEATURE ; DEVELOP_MERGE_TO=MAIN ; DEVELOP_PREL=to ; DEVELOP_DELETE=from -MAIN_BASE= ; MAIN_MERGE_FROM=DEVELOP ; MAIN_MERGE_TO=DIST ; MAIN_PREL=from ; MAIN_DELETE= -DIST_BASE=MAIN ; DIST_MERGE_FROM=MAIN ; DIST_MERGE_TO= ; DIST_PREL= ; DIST_DELETE= -FEATURE_BASE=DEVELOP ; FEATURE_MERGE_FROM= ; FEATURE_MERGE_TO=DEVELOP ; FEATURE_PREL= ; FEATURE_DELETE=to +UPSTREAM_BASE= ; UPSTREAM_MERGE_FROM= ; UPSTREAM_MERGE_TO=DEVELOP ; UPSTREAM_PREL= ; UPSTREAM_DELETE= +DEVELOP_BASE=MAIN ; DEVELOP_MERGE_FROM=FEATURE ; DEVELOP_MERGE_TO=MAIN ; DEVELOP_PREL=from ; DEVELOP_DELETE=to +MAIN_BASE= ; MAIN_MERGE_FROM=DEVELOP ; MAIN_MERGE_TO=DIST ; MAIN_PREL=to ; MAIN_DELETE= +DIST_BASE=MAIN ; DIST_MERGE_FROM=MAIN ; DIST_MERGE_TO= ; DIST_PREL= ; DIST_DELETE= +FEATURE_BASE=DEVELOP ; FEATURE_MERGE_FROM= ; FEATURE_MERGE_TO=DEVELOP ; FEATURE_PREL= ; FEATURE_DELETE=from function get_base_branch() { # afficher la branche depuis laquelle créer la branche $1 @@ -112,8 +112,8 @@ function should_delete_merged() { * PMAN_MERGE_TO -- code de la branche destination dans laquelle la fusion est faite depuis PMAN_REF_BRANCH. vide si la branche n'a pas de destination * PMAN_DIR -- direction de la fusion: - 'from' si on fait PMAN_MERGE_FROM --> PMAN_REF_BRANCH - 'to' si on fait PMAN_REF_BRANCH --> PMAN_MERGE_TO + 'from' si on fait PMAN_REF_BRANCH --> PMAN_MERGE_TO + 'to' si on fait PMAN_MERGE_FROM --> PMAN_REF_BRANCH * PMAN_PREL_MERGE -- si la fusion devrait se faire avec prel * PMAN_DELETE_MERGED -- s'il faut supprimer la branche source après la fusion @@ -144,18 +144,16 @@ function set_pman_vars() { PMAN_MERGE_FROM=$(get_merge_from_branch "$PMAN_REF_BRANCH") PMAN_MERGE_TO=$(get_merge_to_branch "$PMAN_REF_BRANCH") if [ -n "$1" ]; then PMAN_DIR="$1" - else PMAN_DIR=to - #elif [ -n "$PMAN_MERGE_TO" ]; then PMAN_DIR=to - #else PMAN_DIR=from + else PMAN_DIR=from fi PMAN_PREL_MERGE=$(should_prel_merge "$PMAN_REF_BRANCH" "$PMAN_DIR" && echo 1) PMAN_DELETE_MERGED=$(should_delete_merged "$PMAN_REF_BRANCH" "$PMAN_DIR" && echo 1) case "$PMAN_DIR" in - to) + from) PMAN_MERGE_SRC="$PMAN_REF_BRANCH" PMAN_MERGE_DEST="$PMAN_MERGE_TO" ;; - from) + to) PMAN_MERGE_SRC="$PMAN_MERGE_FROM" PMAN_MERGE_DEST="$PMAN_REF_BRANCH" ;; @@ -216,7 +214,7 @@ $1 == "|" { } function _list_commits() { - local source="${1:-$SrcBranch}" dest="${2:-$DestBranch}" mergebase + local source="${1:-$PmanMergeSrc}" dest="${2:-$PmanMergeDest}" mergebase setx mergebase=git merge-base "$dest" "$source" git log --oneline --graph --no-decorate "$mergebase..$source" | grep -vF '|\' | grep -vF '|/' | sed -r 's/^(\| )+\* +/| /; s/^\* +/+ /' | @@ -224,7 +222,7 @@ function _list_commits() { } function _show_diff() { - local source="${1:-$SrcBranch}" dest="${2:-$DestBranch}" mergebase + local source="${1:-$PmanMergeSrc}" dest="${2:-$PmanMergeDest}" mergebase setx mergebase=git merge-base "$dest" "$source" git diff ${_sd_COLOR:+--color=$_sd_COLOR} "$mergebase..$source" } @@ -306,7 +304,7 @@ function ensure_gitdir() { } function load_branches() { - local what="${1:-all}"; shift + local branch what="${1:-all}"; shift case "$what" in all) [ -n "$Origin" ] || Origin=origin @@ -316,30 +314,6 @@ function load_branches() { setx -a AllBranches=git_list_pbranches "$Origin" ;; current) - SrcBranch="$1" - [ -n "$SrcBranch" ] || SrcBranch="$CurrentBranch" - case "$SrcBranch" in - "$UPSTREAM") SrcType=upstream; DestBranch="$DEVELOP";; - "$FEATURE"*) SrcType=feature; DestBranch="$DEVELOP";; - "$DEVELOP") SrcType=develop; DestBranch="$MAIN";; - "$RELEASE"*) SrcType=release; DestBranch="$MAIN";; - "$HOTFIX"*) SrcType=hotfix; DestBranch="$MAIN";; - "$MAIN") SrcType=main; DestBranch="$DIST";; - "$DIST") SrcType=dist; DestBranch=;; - *) SrcType=; DestBranch=;; - esac - case "$DestBranch" in - "$UPSTREAM") DestType=upstream;; - "$FEATURE"*) DestType=feature;; - "$DEVELOP") DestType=develop;; - "$RELEASE"*) DestType=release;; - "$HOTFIX"*) DestType=hotfix;; - "$MAIN") DestType=main;; - "$DIST") DestType=dist;; - *) DestType=;; - esac - - local branch UpstreamBranch= FeatureBranches=() DevelopBranch= @@ -469,10 +443,8 @@ function _mscript_start() { #!/bin/bash $(qvals source "$NULIBDIR/load.sh") || exit 1 -$(echo_setv SrcBranch="$SrcBranch") -$(echo_setv SrcType="$SrcType") -$(echo_setv DestBranch="$DestBranch") -$(echo_setv DestType="$DestType") +$(echo_setv SrcBranch="$PmanMergeSrc") +$(echo_setv DestBranch="$PmanMergeDest") merge= delete= @@ -492,32 +464,32 @@ function _mscript_merge_branch() { local msg # basculer sur la branche - _scripta "switch to branch $DestBranch" < $PmanMergeDest + +$commits +" + _sd_COLOR=always _show_diff + } | less -eRF + else + einfo "Commits à fusionner $PmanMergeSrc --> $PmanMergeDest" + eecho "$commits" + fi + fi +} + +function show_action() { + git_check_cleancheckout || ewarn "$git_cleancheckout_DIRTY" + [ -n "$PMAN_UNIQUE" ] || resolve_unique_branch "$@" + ensure_merge_branches + _show_action "$@" +} diff --git a/bin/prel b/bin/prel index 2ec3a31..4f9afe5 100755 --- a/bin/prel +++ b/bin/prel @@ -7,33 +7,7 @@ git_cleancheckout_DIRTY="\ Vous avez des modifications locales. Enregistrez ces modifications avant de créer une release" -function show_action() { - local commits - setx commits=_list_commits - if [ -n "$commits" ]; then - if [ $ShowLevel -ge 2 ]; then - { - echo "\ -# Commits à fusionner $SrcBranch --> $DestBranch - -$commits -" - _sd_COLOR=always _show_diff - } | less -eRF - else - einfo "Commits à fusionner $SrcBranch --> $DestBranch" - eecho "$commits" - fi - fi -} - -function ensure_branches() { - [ -n "$SrcBranch" -a -n "$DestBranch" ] || - die "$SrcBranch: Aucune configuration de fusion trouvée pour cette branche" - - array_contains LocalBranches "$SrcBranch" || die "$SrcBranch: branche source introuvable" - array_contains LocalBranches "$DestBranch" || die "$DestBranch: branche destination introuvable" - +function ensure_rel_infos() { Tag="$TAG_PREFIX$Version$TAG_SUFFIX" local -a tags setx -a tags=git tag -l "${TAG_PREFIX}*${TAG_SUFFIX}" @@ -71,14 +45,14 @@ L'option --no-push a été forcée puisque ce dépôt n'a pas d'origine" if [ -n "$Merge" ]; then enote "\ Ce script va: -- créer la branche de release ${COULEUR_VERTE}$ReleaseBranch${COULEUR_NORMALE} <-- ${COULEUR_BLEUE}$SrcBranch${COULEUR_NORMALE} +- créer la branche de release ${COULEUR_VERTE}$ReleaseBranch${COULEUR_NORMALE} <-- ${COULEUR_BLEUE}$PmanMergeSrc${COULEUR_NORMALE} - la provisionner avec une description des changements -- la fusionner dans la branche destination ${COULEUR_ROUGE}$DestBranch${COULEUR_NORMALE}${Push:+ +- la fusionner dans la branche destination ${COULEUR_ROUGE}$PmanMergeDest${COULEUR_NORMALE}${Push:+ - pousser les branches modifiées}" else enote "\ Ce script va: -- créer la branche de release ${COULEUR_VERTE}$ReleaseBranch${COULEUR_NORMALE} <-- ${COULEUR_BLEUE}$SrcBranch${COULEUR_NORMALE} +- créer la branche de release ${COULEUR_VERTE}$ReleaseBranch${COULEUR_NORMALE} <-- ${COULEUR_BLEUE}$PmanMergeSrc${COULEUR_NORMALE} - la provisionner avec une description des changements Vous devrez: - mettre à jour les informations de release puis relancer ce script" @@ -123,8 +97,8 @@ EOF $BEFORE_MERGE_RELEASE )$or_die EOF - _rscript_merge_release_branch "$DestBranch" "$Tag" - _rscript_merge_release_branch "$SrcBranch" + _rscript_merge_release_branch "$PmanMergeDest" "$Tag" + _rscript_merge_release_branch "$PmanMergeSrc" _rscript_delete_release_branch [ -n "$AFTER_MERGE_RELEASE" ] && _scripta < $PmanMergeDest - -$commits -" - _sd_COLOR=always _show_diff - } | less -eRF - else - einfo "Commits à fusionner $PmanMergeSrc --> $PmanMergeDest" - eecho "$commits" - fi - fi -} - -function show_action() { - git_check_cleancheckout || ewarn "$git_cleancheckout_DIRTY" - [ -n "$PMAN_UNIQUE" ] || resolve_unique_branch "$@" - ensure_merge_branches - _show_action "$@" -} - function _merge_action() { enote "\ Ce script va @@ -304,10 +164,10 @@ USAGE OPTIONS REF - -t, --merge-to REF + -f, --merge-from REF spécifier la branche de référence et indiquer que la fusion se fait dans le sens REF --> DEST. DEST est calculé en fonction de REF - -f, --merge-from REF + -t, --merge-to REF spécifier la branche de référence et indiquer que la fusion se fait dans le sens SRC --> REF. SRC est calculé en fonction de REF" fi @@ -317,14 +177,6 @@ OPTIONS [ -n "$ref" ] || die "vous spécifier la branche de référence" case "$ref" in - -t|--merge-to) - ref="$1"; shift - dir=to - ;; - -t*) - ref="${ref#-t}" - dir=to - ;; -f|--merge-from) ref="$1"; shift dir=from @@ -333,6 +185,14 @@ OPTIONS ref="${ref#-f}" dir=from ;; + -t|--merge-to) + ref="$1"; shift + dir=to + ;; + -t*) + ref="${ref#-t}" + dir=to + ;; esac PMAN_TOOL= PMAN_REF_BRANCH="${ref^^}" @@ -420,7 +280,7 @@ if [ -n "$PMAN_MERGE_SRC" -a -n "$PMAN_MERGE_DEST" ]; then usage="${usage} $PMAN_REF_BRANCH --show|--merge" fi - [ "$PMAN_REF_BRANCH" != "$PMAN_MERGE_SRC" ] && bewareDir=" + [ "$PMAN_REF_BRANCH" != "$PMAN_MERGE_DEST" ] && bewareDir=" NB: la fusion se fait dans le sens inverse" || bewareDir= variables="\ Les variables supplémentaires suivantes peuvent être définies: