suite support feature branches

This commit is contained in:
Jephté Clain 2025-10-17 20:21:43 +04:00
parent 0b01946090
commit e4e6a98be2

View File

@ -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