From e4e6a98be2b74c538fb81d73ef49204536144d25 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Fri, 17 Oct 2025 20:21:43 +0400 Subject: [PATCH] suite support feature branches --- wip/_pman.tool | 55 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/wip/_pman.tool b/wip/_pman.tool index a2d3047..2cba665 100755 --- a/wip/_pman.tool +++ b/wip/_pman.tool @@ -3,6 +3,10 @@ source "$(dirname -- "$0")/../load.sh" || exit 1 require: git pman pman.conf +git_cleancheckout_DIRTY="\ +Vous avez des modifications locales. +Enregistrez ces modifications avant de fusionner la branche" + ### description des variables ### # * PMAN_TOOL -- nom de l'outil, e.g pdev, pmain, pdist # * PMAN_BRANCH -- code de la branche de référence basé sur le nom de l'outil @@ -64,9 +68,29 @@ function set_pman_vars() { [ -n "$PMAN_MERGE_SRC" -a -n "$PMAN_MERGE_DEST" ] && PMAN_CAN_MERGE=1 || PMAN_CAN_MERGE= } -git_cleancheckout_DIRTY="\ -Vous avez des modifications locales. -Enregistrez ces modifications avant de fusionner la branche" +function resolve_unique_branch() { + if [ "$PMAN_BRANCH" == FEATURE ]; then + if [ $# -gt 0 ]; then + UniqueBranch="$FEATURE${1#$FEATURE}" + elif [[ "$CurrentBranch" == "$FEATURE"* ]]; then + UniqueBranch="$CurrentBranch" + elif [ ${#FeatureBranches[*]} -eq 0 ]; then + die "Vous devez spécifier la branche de feature" + elif [ ${#FeatureBranches[*]} -eq 1 ]; then + UniqueBranch="${FeatureBranches[0]}" + else + simple_menu \ + UniqueBranch FeatureBranches \ + -t "Branches de feature" \ + -m "Veuillez choisir la branche de feature" \ + -d "${FeatureBranches[0]}" + fi + PMAN_BRANCH=UniqueBranch + PMAN_MERGE_SRC=UniqueBranch + else + die "resolve_unique_branch: $PMAN_BRANCH: non implémenté" + fi +} function dump_action() { enote "Valeurs des variables: @@ -97,10 +121,6 @@ DistBranch=$DistBranch " } -#XXXX -#[ -n "${!PMAN_MERGE_SRC}" ] || -# die "Aucune branche définie pour $PMAN_MERGE_SRC. Veuillez éditer le fichier .pman.conf" - function _ensure_branch() { [ -n "${!PMAN_BRANCH}" ] || die "\ La branche $PMAN_BRANCH n'a pas été définie. @@ -132,9 +152,13 @@ Veuillez éditer le fichier .pman.conf" function checkout_action() { local -a push_branches + [ -n "$PMAN_UNIQUE" ] || resolve_unique_branch "$@" || die _ensure_branch init + if [ -n "$PmanBranch" ]; then git checkout "$PmanBranch" + elif array_contains LocalBranches "${!PMAN_BRANCH}"; then + git checkout "${!PMAN_BRANCH}" elif array_contains AllBranches "${!PMAN_BRANCH}"; then enote "${!PMAN_BRANCH}: une branche du même nom existe dans l'origine" ask_yesno "Voulez-vous basculer sur cette branche?" O || die @@ -156,7 +180,10 @@ function checkout_action() { fi } -function ensure_branches() { +#XXXX +#[ -n "${!PMAN_MERGE_SRC}" ] || +# die "Aucune branche définie pour $PMAN_MERGE_SRC. Veuillez éditer le fichier .pman.conf" +function ensure_merge_branches() { [ -n "$PMAN_CAN_MERGE" ] || die "${!PMAN_BRANCH}: Aucune configuration de fusion trouvée pour cette branche" @@ -188,9 +215,10 @@ $commits fi fi } + function show_action() { git_check_cleancheckout || ewarn "$git_cleancheckout_DIRTY" - ensure_branches + ensure_merge_branches _show_action "$@" } @@ -305,7 +333,8 @@ Il y a aussi les commandes supplémentaires suivantes: } function merge_action() { - ensure_branches -a + [ -n "$PMAN_UNIQUE" ] || resolve_unique_branch "$@" || die + ensure_merge_branches -a if [ -n "$PMAN_PREL_MERGE" ]; then [ -n "$ForceMerge" ] || die "$SrcBranch: cette branche doit être fusionnée dans $DestBranch avec prel" @@ -324,6 +353,7 @@ function merge_action() { array_contains LocalBranches "$DestBranch" || die "$DestBranch: branche locale introuvable" resolve_should_push + set -x #XXX _merge_action "$@" } @@ -335,11 +365,11 @@ function rebase_action() { # Programme principal ################################################################################ -set_pman_vars loaded_config= if check_gitdir; then load_branches all load_config + set_pman_vars if [ -n "${!PMAN_MERGE_SRC}" ]; then load_branches current "${!PMAN_MERGE_SRC}" loaded_config=1 @@ -347,6 +377,8 @@ if check_gitdir; then load_branches current "${!PMAN_BRANCH}" loaded_config=1 fi +else + set_pman_vars fi BranchDesc= @@ -509,6 +541,7 @@ if [ -z "$loaded_config" -o -n "$chdir" -o -n "$ConfigFile" -o -n "$ConfigBranch ensure_gitdir "$chdir" load_branches all load_config + set_pman_vars if [ -n "${!PMAN_MERGE_SRC}" ]; then load_branches current "${!PMAN_MERGE_SRC}" elif [ -n "${!PMAN_BRANCH}" ]; then