From cf867765d1f7e32f63b80b9bef35f849a819e465 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Tue, 21 Oct 2025 11:05:07 +0400 Subject: [PATCH] finaliser ptool --- bash/src/pman.sh | 61 +++++++++++++++++++++++++++++++++++++----------- bin/ptool | 43 +++++++++++++++++----------------- 2 files changed, 69 insertions(+), 35 deletions(-) diff --git a/bash/src/pman.sh b/bash/src/pman.sh index ddc7f3d..41e2da9 100644 --- a/bash/src/pman.sh +++ b/bash/src/pman.sh @@ -36,11 +36,13 @@ 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=from ; DEVELOP_DELETE=to -MAIN_BASE=DEVELOP ; 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 +UPSTREAM_BASE=DEVELOP ; 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=DEVELOP ; 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 + +UPSTREAM_CREATE_FUNCTION=_create_upstream_action function get_base_branch() { # afficher la branche depuis laquelle créer la branche $1 @@ -664,15 +666,48 @@ Veuillez éditer le fichier .pman.conf" [ "$1" == init -o -n "$IfBaseBranch" ] || die "$BaseBranch: cette branche n'existe pas (le dépôt a-t-il été initialisé?)" } +function _create_default_action() { + enote "Vous allez créer la branche ${COULEUR_BLEUE}$RefBranch${COULEUR_NORMALE} <-- ${COULEUR_ROUGE}$BaseBranch${COULEUR_NORMALE}" + ask_yesno "Voulez-vous continuer?" O || die + + einfo "Création de la branche $RefBranch" + git checkout -b "$RefBranch" "$BaseBranch" || die + push_branches+=("$RefBranch") +} + +function _create_upstream_action() { + enote "Vous allez créer la branche ${COULEUR_BLEUE}$RefBranch${COULEUR_NORMALE}" + ask_yesno "Voulez-vous continuer?" O || die + + # faire une copie de la configuration actuelle + local config; ac_set_tmpfile config + set -x; ls -l "$ConfigFile" #XXX + cp "$ConfigFile" "$config" + set +x #XXX + + einfo "Création de la branche $RefBranch" + git checkout --orphan "$RefBranch" || die + git rm -rf . + cp "$config" .pman.conf + git add .pman.conf + git commit -m "commit initial" + push_branches+=("$RefBranch") + + einfo "Fusion dans $DevelopBranch" + git checkout "$DevelopBranch" + git merge \ + --no-ff -m "Intégration initiale de la branche $RefBranch" \ + -srecursive -Xours --allow-unrelated-histories \ + "$RefBranch" + push_branches+=("$DevelopBranch") +} + function checkout_action() { local -a push_branches [ -n "$REF_UNIQUE" ] || resolve_unique_branch "$@" _ensure_ref_branch init - #if [ -n "$IfRefBranch" ]; then - # git checkout "$IfRefBranch" - #el if array_contains LocalBranches "$RefBranch"; then git checkout "$RefBranch" elif array_contains AllBranches "$RefBranch"; then @@ -683,12 +718,10 @@ function checkout_action() { _ensure_base_branch resolve_should_push - enote "Vous allez créer la branche ${COULEUR_BLEUE}$RefBranch${COULEUR_NORMALE} <-- ${COULEUR_ROUGE}$BaseBranch${COULEUR_NORMALE}" - ask_yesno "Voulez-vous continuer?" O || die - - einfo "Création de la branche $RefBranch" - git checkout -b "$RefBranch" "$BaseBranch" || die - push_branches+=("$RefBranch") + local create_function + create_function="${REF_BRANCH}_CREATE_FUNCTION"; create_function="${!create_function}" + [ -n "$create_function" ] || create_function=_create_default_action + "$create_function" _push_branches fi diff --git a/bin/ptool b/bin/ptool index 300c507..44d907b 100755 --- a/bin/ptool +++ b/bin/ptool @@ -153,6 +153,20 @@ function rebase_action() { ################################################################################ +chdir= +Origin= +ConfigBranch= +ConfigFile= +_Fake= +_KeepScript= +action=checkout +ShowLevel=0 +TechMerge= +SquashMsg= +Push=1 +Delete=1 +AfterMerge= + loaded_config= merge_dir= if [ "$MYNAME" == ptool ]; then @@ -211,13 +225,13 @@ else set_pman_vars "$merge_dir" fi -BranchDesc= +RefDesc= MergeSrcDesc= MergeDestDesc= if [ -n "$REF_BRANCH" ]; then - BranchDesc="${COULEUR_BLANCHE}<$REF_BRANCH>" - [ -n "$RefBranch" -a -n "$REF_UNIQUE" ] && BranchDesc="$BranchDesc ($RefBranch)" - BranchDesc="$BranchDesc${COULEUR_NORMALE}" + RefDesc="${COULEUR_BLANCHE}<$REF_BRANCH>" + [ -n "$RefBranch" -a -n "$REF_UNIQUE" ] && RefDesc="$RefDesc ($RefBranch)" + RefDesc="$RefDesc${COULEUR_NORMALE}" fi if [ -n "$MERGE_SRC" ]; then MergeSrcDesc="${COULEUR_BLEUE}<$MERGE_SRC>" @@ -231,8 +245,8 @@ if [ -n "$MERGE_DEST" ]; then fi if [ -n "$REF_UNIQUE" ] -then purpose="gérer la branche $BranchDesc" -else purpose="gérer les branches $BranchDesc" +then purpose="gérer la branche $RefDesc" +else purpose="gérer les branches $RefDesc" fi usage="--checkout" variables= @@ -262,11 +276,11 @@ after_merge_def=('$:' "++non applicable") if [ -n "$RefBranch" -a -n "$REF_UNIQUE" ]; then checkout_action_def=(action=checkout "++\ -créer le cas échéant la branche $BranchDesc et basculer vers elle. +créer le cas échéant la branche $RefDesc et basculer vers elle. c'est l'option par défaut") elif [ -z "$REF_UNIQUE" ]; then checkout_action_def=(action=checkout "\ -créer le cas échéant la branche $BranchDesc et basculer vers elle. +créer le cas échéant la branche $RefDesc et basculer vers elle. c'est l'option par défaut") else checkout_action_def=(action=checkout "\ @@ -325,19 +339,6 @@ c'est l'option par défaut") after_merge_def=(AfterMerge= "évaluer le script spécifié après une fusion *réussie*") fi -chdir= -Origin= -ConfigBranch= -ConfigFile= -_Fake= -_KeepScript= -action=checkout -ShowLevel=0 -TechMerge= -SquashMsg= -Push=1 -Delete=1 -AfterMerge= args=( "$purpose" "\