migration prel
This commit is contained in:
		
							parent
							
								
									a732d22d92
								
							
						
					
					
						commit
						bf4d934daa
					
				
							
								
								
									
										231
									
								
								bash/src/pman.sh
									
									
									
									
									
								
							
							
						
						
									
										231
									
								
								bash/src/pman.sh
									
									
									
									
									
								
							| @ -36,11 +36,11 @@ PMAN_TOOL_PDEV=DEVELOP | |||||||
| PMAN_TOOL_PWIP=FEATURE | PMAN_TOOL_PWIP=FEATURE | ||||||
| PMAN_TOOL_PMAIN=MAIN | PMAN_TOOL_PMAIN=MAIN | ||||||
| PMAN_TOOL_PDIST=DIST | PMAN_TOOL_PDIST=DIST | ||||||
| UPSTREAM_BASE=       ; UPSTREAM_MERGE_FROM=       ; UPSTREAM_MERGE_TO=DEVELOP ; UPSTREAM_PREL=  ; UPSTREAM_DELETE= | 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 | 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=from  ; MAIN_DELETE= | 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= | 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 | FEATURE_BASE=DEVELOP ; FEATURE_MERGE_FROM=        ; FEATURE_MERGE_TO=DEVELOP  ; FEATURE_PREL=     ; FEATURE_DELETE=from | ||||||
| 
 | 
 | ||||||
| function get_base_branch() { | function get_base_branch() { | ||||||
|     # afficher la branche depuis laquelle créer la branche $1 |     # 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 | * 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 |   faite depuis PMAN_REF_BRANCH. vide si la branche n'a pas de destination | ||||||
| * PMAN_DIR -- direction de la fusion: | * PMAN_DIR -- direction de la fusion: | ||||||
|   'from' si on fait PMAN_MERGE_FROM --> PMAN_REF_BRANCH |   'from' si on fait PMAN_REF_BRANCH --> PMAN_MERGE_TO | ||||||
|   'to' 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_PREL_MERGE -- si la fusion devrait se faire avec prel | ||||||
| * PMAN_DELETE_MERGED -- s'il faut supprimer la branche source après la fusion | * 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_FROM=$(get_merge_from_branch "$PMAN_REF_BRANCH") | ||||||
|     PMAN_MERGE_TO=$(get_merge_to_branch "$PMAN_REF_BRANCH") |     PMAN_MERGE_TO=$(get_merge_to_branch "$PMAN_REF_BRANCH") | ||||||
|     if [ -n "$1" ]; then PMAN_DIR="$1" |     if [ -n "$1" ]; then PMAN_DIR="$1" | ||||||
|     else PMAN_DIR=to |     else PMAN_DIR=from | ||||||
|     #elif [ -n "$PMAN_MERGE_TO" ]; then PMAN_DIR=to |  | ||||||
|     #else PMAN_DIR=from |  | ||||||
|     fi |     fi | ||||||
|     PMAN_PREL_MERGE=$(should_prel_merge "$PMAN_REF_BRANCH" "$PMAN_DIR" && echo 1) |     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) |     PMAN_DELETE_MERGED=$(should_delete_merged "$PMAN_REF_BRANCH" "$PMAN_DIR" && echo 1) | ||||||
|     case "$PMAN_DIR" in |     case "$PMAN_DIR" in | ||||||
|     to) |     from) | ||||||
|         PMAN_MERGE_SRC="$PMAN_REF_BRANCH" |         PMAN_MERGE_SRC="$PMAN_REF_BRANCH" | ||||||
|         PMAN_MERGE_DEST="$PMAN_MERGE_TO" |         PMAN_MERGE_DEST="$PMAN_MERGE_TO" | ||||||
|         ;; |         ;; | ||||||
|     from) |     to) | ||||||
|         PMAN_MERGE_SRC="$PMAN_MERGE_FROM" |         PMAN_MERGE_SRC="$PMAN_MERGE_FROM" | ||||||
|         PMAN_MERGE_DEST="$PMAN_REF_BRANCH" |         PMAN_MERGE_DEST="$PMAN_REF_BRANCH" | ||||||
|         ;; |         ;; | ||||||
| @ -216,7 +214,7 @@ $1 == "|" { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function _list_commits() { | 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" |     setx mergebase=git merge-base "$dest" "$source" | ||||||
|     git log --oneline --graph --no-decorate "$mergebase..$source" | |     git log --oneline --graph --no-decorate "$mergebase..$source" | | ||||||
|         grep -vF '|\' | grep -vF '|/' | sed -r 's/^(\| )+\* +/| /; s/^\* +/+ /' | |         grep -vF '|\' | grep -vF '|/' | sed -r 's/^(\| )+\* +/| /; s/^\* +/+ /' | | ||||||
| @ -224,7 +222,7 @@ function _list_commits() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function _show_diff() { | 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" |     setx mergebase=git merge-base "$dest" "$source" | ||||||
|     git diff ${_sd_COLOR:+--color=$_sd_COLOR} "$mergebase..$source" |     git diff ${_sd_COLOR:+--color=$_sd_COLOR} "$mergebase..$source" | ||||||
| } | } | ||||||
| @ -306,7 +304,7 @@ function ensure_gitdir() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function load_branches() { | function load_branches() { | ||||||
|     local what="${1:-all}"; shift |     local branch what="${1:-all}"; shift | ||||||
|     case "$what" in |     case "$what" in | ||||||
|     all) |     all) | ||||||
|         [ -n "$Origin" ] || Origin=origin |         [ -n "$Origin" ] || Origin=origin | ||||||
| @ -316,30 +314,6 @@ function load_branches() { | |||||||
|         setx -a AllBranches=git_list_pbranches "$Origin" |         setx -a AllBranches=git_list_pbranches "$Origin" | ||||||
|         ;; |         ;; | ||||||
|     current) |     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= |         UpstreamBranch= | ||||||
|         FeatureBranches=() |         FeatureBranches=() | ||||||
|         DevelopBranch= |         DevelopBranch= | ||||||
| @ -469,10 +443,8 @@ function _mscript_start() { | |||||||
| #!/bin/bash | #!/bin/bash | ||||||
| $(qvals source "$NULIBDIR/load.sh") || exit 1 | $(qvals source "$NULIBDIR/load.sh") || exit 1 | ||||||
| 
 | 
 | ||||||
| $(echo_setv SrcBranch="$SrcBranch") | $(echo_setv SrcBranch="$PmanMergeSrc") | ||||||
| $(echo_setv SrcType="$SrcType") | $(echo_setv DestBranch="$PmanMergeDest") | ||||||
| $(echo_setv DestBranch="$DestBranch") |  | ||||||
| $(echo_setv DestType="$DestType") |  | ||||||
| 
 | 
 | ||||||
| merge= | merge= | ||||||
| delete= | delete= | ||||||
| @ -492,32 +464,32 @@ function _mscript_merge_branch() { | |||||||
|     local msg |     local msg | ||||||
| 
 | 
 | ||||||
|     # basculer sur la branche |     # basculer sur la branche | ||||||
|     _scripta "switch to branch $DestBranch" <<EOF |     _scripta "switch to branch $PmanMergeDest" <<EOF | ||||||
| $comment$(qvals git checkout "$DestBranch")$or_die | $comment$(qvals git checkout "$PmanMergeDest")$or_die | ||||||
| EOF | EOF | ||||||
| 
 | 
 | ||||||
|     if [ -n "$SquashMsg" ]; then |     if [ -n "$SquashMsg" ]; then | ||||||
|         msg="$SquashMsg" |         msg="$SquashMsg" | ||||||
|         [ -n "$TechMerge" ] && msg="<pman>$msg" |         [ -n "$TechMerge" ] && msg="<pman>$msg" | ||||||
|         _scripta "squash merge $SrcBranch" <<EOF |         _scripta "squash merge $PmanMergeSrc" <<EOF | ||||||
| $comment$(qvals git merge "$SrcBranch" --squash)$or_die | $comment$(qvals git merge "$PmanMergeSrc" --squash)$or_die | ||||||
| $comment$(qvals git commit -m "$msg")$or_die | $comment$(qvals git commit -m "$msg")$or_die | ||||||
| EOF | EOF | ||||||
|     else |     else | ||||||
|         msg="Intégration de la branche $SrcBranch" |         msg="Intégration de la branche $PmanMergeSrc" | ||||||
|         [ -n "$TechMerge" ] && msg="<pman>$msg" |         [ -n "$TechMerge" ] && msg="<pman>$msg" | ||||||
|         _scripta "merge $SrcBranch" <<EOF |         _scripta "merge $PmanMergeSrc" <<EOF | ||||||
| $comment$(qvals git merge "$SrcBranch" --no-ff -m "$msg")$or_die | $comment$(qvals git merge "$PmanMergeSrc" --no-ff -m "$msg")$or_die | ||||||
| EOF | EOF | ||||||
|     fi |     fi | ||||||
|     array_addu push_branches "$DestBranch" |     array_addu push_branches "$PmanMergeDest" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function _mscript_delete_branch() { | function _mscript_delete_branch() { | ||||||
|     _scripta "delete branch $SrcBranch" <<EOF |     _scripta "delete branch $PmanMergeSrc" <<EOF | ||||||
| $comment$(qvals git branch -D "$SrcBranch")$or_die | $comment$(qvals git branch -D "$PmanMergeSrc")$or_die | ||||||
| EOF | EOF | ||||||
|     array_addu delete_branches ":$SrcBranch" |     array_addu delete_branches ":$PmanMergeSrc" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ################################################################################ | ################################################################################ | ||||||
| @ -529,13 +501,11 @@ function _rscript_start() { | |||||||
| #!/bin/bash | #!/bin/bash | ||||||
| $(qvals source "$NULIBDIR/load.sh") || exit 1 | $(qvals source "$NULIBDIR/load.sh") || exit 1 | ||||||
| 
 | 
 | ||||||
| $(echo_setv SrcBranch="$SrcBranch") | $(echo_setv SrcBranch="$PmanMergeSrc") | ||||||
| $(echo_setv SrcType="$SrcType") |  | ||||||
| $(echo_setv Version="$Version") | $(echo_setv Version="$Version") | ||||||
| $(echo_setv Tag="$Tag") | $(echo_setv Tag="$Tag") | ||||||
| $(echo_setv ReleaseBranch="$ReleaseBranch") | $(echo_setv ReleaseBranch="$ReleaseBranch") | ||||||
| $(echo_setv DestBranch="$DestBranch") | $(echo_setv DestBranch="$PmanMergeDest") | ||||||
| $(echo_setv DestType="$DestType") |  | ||||||
| 
 | 
 | ||||||
| create= | create= | ||||||
| merge= | merge= | ||||||
| @ -564,7 +534,7 @@ function _rscript_create_release_branch() { | |||||||
| 
 | 
 | ||||||
|     # créer la branche de release et basculer dessus |     # créer la branche de release et basculer dessus | ||||||
|     _scripta "create branch $ReleaseBranch" <<EOF |     _scripta "create branch $ReleaseBranch" <<EOF | ||||||
| $(qvals git checkout -b "$ReleaseBranch" "$SrcBranch")$or_die | $(qvals git checkout -b "$ReleaseBranch" "$PmanMergeSrc")$or_die | ||||||
| EOF | EOF | ||||||
| 
 | 
 | ||||||
|     # créer le changelog |     # créer le changelog | ||||||
| @ -624,3 +594,146 @@ function _rscript_delete_release_branch() { | |||||||
| $comment$(qvals git branch -D "$ReleaseBranch")$or_die | $comment$(qvals git branch -D "$ReleaseBranch")$or_die | ||||||
| EOF | EOF | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | ################################################################################ | ||||||
|  | # Outils | ||||||
|  | 
 | ||||||
|  | function dump_action() { | ||||||
|  |     enote "Valeurs des variables: | ||||||
|  | PMAN_TOOL=$PMAN_TOOL | ||||||
|  | PMAN_REF_BRANCH=$PMAN_REF_BRANCH${PmanRefBranch:+ PmanRefBranch=$PmanRefBranch IfRefBranch=$IfRefBranch} | ||||||
|  | PMAN_BASE_BRANCH=$PMAN_BASE_BRANCH${PmanBaseBranch:+ PmanBaseBranch=$PmanBaseBranch IfBaseBranch=$IfBaseBranch} | ||||||
|  | PMAN_MERGE_FROM=$PMAN_MERGE_FROM | ||||||
|  | PMAN_MERGE_TO=$PMAN_MERGE_TO | ||||||
|  | PMAN_DIR=$PMAN_DIR | ||||||
|  | PMAN_PREL_MERGE=$PMAN_PREL_MERGE | ||||||
|  | PMAN_DELETE_MERGED=$PMAN_DELETE_MERGED | ||||||
|  | PMAN_MERGE_SRC=$PMAN_MERGE_SRC${PmanMergeSrc:+ PmanMergeSrc=$PmanMergeSrc IfMergeSrc=$IfMergeSrc} | ||||||
|  | PMAN_MERGE_DEST=$PMAN_MERGE_DEST${PmanMergeDest:+ PmanMergeDest=$PmanMergeDest IfMergeDest=$IfMergeDest} | ||||||
|  | 
 | ||||||
|  | CurrentBranch=$CurrentBranch | ||||||
|  | LocalBranches=${LocalBranches[*]} | ||||||
|  | RemoteBranches=${RemoteBranches[*]} | ||||||
|  | AllBranches=${AllBranches[*]} | ||||||
|  | 
 | ||||||
|  | UpstreamBranch=$UpstreamBranch | ||||||
|  | FeatureBranches=${FeatureBranches[*]} | ||||||
|  | DevelopBranch=$DevelopBranch | ||||||
|  | ReleaseBranch=$ReleaseBranch | ||||||
|  | HotfixBranch=$HotfixBranch | ||||||
|  | MainBranch=$MainBranch | ||||||
|  | DistBranch=$DistBranch | ||||||
|  | " | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function resolve_unique_branch() { | ||||||
|  |     if [ "$PMAN_REF_BRANCH" == FEATURE ]; then | ||||||
|  |         if [ $# -gt 0 ]; then | ||||||
|  |             PmanRefBranch="$FEATURE${1#$FEATURE}" | ||||||
|  |         elif [[ "$CurrentBranch" == "$FEATURE"* ]]; then | ||||||
|  |             PmanRefBranch="$CurrentBranch" | ||||||
|  |         elif [ ${#FeatureBranches[*]} -eq 0 ]; then | ||||||
|  |             die "Vous devez spécifier la branche de feature" | ||||||
|  |         elif [ ${#FeatureBranches[*]} -eq 1 ]; then | ||||||
|  |             PmanRefBranch="${FeatureBranches[0]}" | ||||||
|  |         else | ||||||
|  |             simple_menu \ | ||||||
|  |                 PmanRefBranch FeatureBranches \ | ||||||
|  |                 -t "Branches de feature" \ | ||||||
|  |                 -m "Veuillez choisir la branche de feature" \ | ||||||
|  |                 -d "${FeatureBranches[0]}" | ||||||
|  |         fi | ||||||
|  |     else | ||||||
|  |         die "resolve_unique_branch: $PMAN_REF_BRANCH: non implémenté" | ||||||
|  |     fi | ||||||
|  |     if [ "$PMAN_DIR" == from ]; then | ||||||
|  |         PmanMergeSrc="$PmanRefBranch" | ||||||
|  |     elif [ "$PMAN_DIR" == to ]; then | ||||||
|  |         PmanMergeDest="$PmanRefBranch" | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function _ensure_ref_branch() { | ||||||
|  |     [ -n "$PmanRefBranch" ] || die "\ | ||||||
|  | La branche $PMAN_REF_BRANCH n'a pas été définie. | ||||||
|  | Veuillez éditer le fichier .pman.conf" | ||||||
|  |     [ "$1" == init -o -n "$IfRefBranch" ] || die "$PmanRefBranch: cette branche n'existe pas (le dépôt a-t-il été initialisé?)" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function _ensure_base_branch() { | ||||||
|  |     [ -n "$PmanBaseBranch" ] || die "\ | ||||||
|  | La branche $PMAN_BASE_BRANCH n'a pas été définie. | ||||||
|  | Veuillez éditer le fichier .pman.conf" | ||||||
|  |     [ "$1" == init -o -n "$IfBaseBranch" ] || die "$PmanBaseBranch: cette branche n'existe pas (le dépôt a-t-il été initialisé?)" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function checkout_action() { | ||||||
|  |     local -a push_branches | ||||||
|  | 
 | ||||||
|  |     [ -n "$PMAN_UNIQUE" ] || resolve_unique_branch "$@" | ||||||
|  |     _ensure_ref_branch init | ||||||
|  | 
 | ||||||
|  |     #if [ -n "$IfRefBranch" ]; then | ||||||
|  |     #    git checkout "$IfRefBranch" | ||||||
|  |     #el | ||||||
|  |     if array_contains LocalBranches "$PmanRefBranch"; then | ||||||
|  |         git checkout "$PmanRefBranch" | ||||||
|  |     elif array_contains AllBranches "$PmanRefBranch"; then | ||||||
|  |         enote "$PmanRefBranch: une branche du même nom existe dans l'origine" | ||||||
|  |         ask_yesno "Voulez-vous basculer sur cette branche?" O || die | ||||||
|  |         git checkout "$PmanRefBranch" | ||||||
|  |     else | ||||||
|  |         _ensure_base_branch | ||||||
|  |         resolve_should_push | ||||||
|  | 
 | ||||||
|  |         enote "Vous allez créer la branche ${COULEUR_BLEUE}$PmanRefBranch${COULEUR_NORMALE} <-- ${COULEUR_ROUGE}$PmanBaseBranch${COULEUR_NORMALE}" | ||||||
|  |         ask_yesno "Voulez-vous continuer?" O || die | ||||||
|  | 
 | ||||||
|  |         einfo "Création de la branche $PmanRefBranch" | ||||||
|  |         git checkout -b "$PmanRefBranch" "$PmanBaseBranch" || die | ||||||
|  |         push_branches+=("$PmanRefBranch") | ||||||
|  | 
 | ||||||
|  |         _push_branches | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function ensure_merge_branches() { | ||||||
|  |     [ -n "$PmanMergeSrc" ] || die "\ | ||||||
|  | $PmanRefBranch: configuration de fusion non trouvée: la branche $PMAN_MERGE_SRC n'a pas été définie. | ||||||
|  | Veuillez éditer le fichier .pman.conf" | ||||||
|  |     [ -n "$PmanMergeDest" ] || die "\ | ||||||
|  | $PmanRefBranch: configuration de fusion non trouvée: la branche $PMAN_MERGE_DEST n'a pas été définie. | ||||||
|  | Veuillez éditer le fichier .pman.conf" | ||||||
|  | 
 | ||||||
|  |     local branches | ||||||
|  |     [ "$1" == -a ] && branches=AllBranches || branches=LocalBranches | ||||||
|  |     array_contains "$branches" "$PmanMergeSrc" || die "$PmanMergeSrc: branche source introuvable" | ||||||
|  |     array_contains "$branches" "$PmanMergeDest" || die "$PmanMergeDest: branche destination introuvable" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function _show_action() { | ||||||
|  |     local commits | ||||||
|  |     setx commits=_list_commits "$PmanMergeSrc" "$PmanMergeDest" | ||||||
|  |     if [ -n "$commits" ]; then | ||||||
|  |         if [ $ShowLevel -ge 2 ]; then | ||||||
|  |             { | ||||||
|  |                 echo "\ | ||||||
|  | # Commits à fusionner $PmanMergeSrc --> $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 "$@" | ||||||
|  | } | ||||||
|  | |||||||
							
								
								
									
										71
									
								
								bin/prel
									
									
									
									
									
								
							
							
						
						
									
										71
									
								
								bin/prel
									
									
									
									
									
								
							| @ -7,33 +7,7 @@ git_cleancheckout_DIRTY="\ | |||||||
| Vous avez des modifications locales. | Vous avez des modifications locales. | ||||||
| Enregistrez ces modifications avant de créer une release" | Enregistrez ces modifications avant de créer une release" | ||||||
| 
 | 
 | ||||||
| function show_action() { | function ensure_rel_infos() { | ||||||
|     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" |  | ||||||
| 
 |  | ||||||
|    Tag="$TAG_PREFIX$Version$TAG_SUFFIX" |    Tag="$TAG_PREFIX$Version$TAG_SUFFIX" | ||||||
|    local -a tags |    local -a tags | ||||||
|    setx -a tags=git tag -l "${TAG_PREFIX}*${TAG_SUFFIX}" |    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 |     if [ -n "$Merge" ]; then | ||||||
|         enote "\ |         enote "\ | ||||||
| Ce script va: | 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 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}" | - pousser les branches modifiées}" | ||||||
|     else |     else | ||||||
|         enote "\ |         enote "\ | ||||||
| Ce script va: | 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 provisionner avec une description des changements | ||||||
| Vous devrez: | Vous devrez: | ||||||
| - mettre à jour les informations de release puis relancer ce script" | - mettre à jour les informations de release puis relancer ce script" | ||||||
| @ -123,8 +97,8 @@ EOF | |||||||
| $BEFORE_MERGE_RELEASE | $BEFORE_MERGE_RELEASE | ||||||
| )$or_die | )$or_die | ||||||
| EOF | EOF | ||||||
|     _rscript_merge_release_branch "$DestBranch" "$Tag" |     _rscript_merge_release_branch "$PmanMergeDest" "$Tag" | ||||||
|     _rscript_merge_release_branch "$SrcBranch" |     _rscript_merge_release_branch "$PmanMergeSrc" | ||||||
|     _rscript_delete_release_branch |     _rscript_delete_release_branch | ||||||
|     [ -n "$AFTER_MERGE_RELEASE" ] && _scripta <<EOF |     [ -n "$AFTER_MERGE_RELEASE" ] && _scripta <<EOF | ||||||
| ( | ( | ||||||
| @ -183,14 +157,14 @@ function merge_release_action() { | |||||||
|     enote "\ |     enote "\ | ||||||
| Vous allez: | Vous allez: | ||||||
| - fusionner la branche de release ${COULEUR_VERTE}$ReleaseBranch${COULEUR_NORMALE} | - fusionner la branche de release ${COULEUR_VERTE}$ReleaseBranch${COULEUR_NORMALE} | ||||||
|   dans la branche destination ${COULEUR_ROUGE}$DestBranch${COULEUR_NORMALE}" |   dans la branche destination ${COULEUR_ROUGE}$PmanMergeDest${COULEUR_NORMALE}" | ||||||
|     ask_yesno "Voulez-vous continuer?" O || die |     ask_yesno "Voulez-vous continuer?" O || die | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function merge_hotfix_action() { | function merge_hotfix_action() { | ||||||
|     enote "\ |     enote "\ | ||||||
| Vous allez intégrer la branche de hotfix ${COULEUR_JAUNE}$HotfixBranch${COULEUR_NORMALE} | Vous allez intégrer la branche de hotfix ${COULEUR_JAUNE}$HotfixBranch${COULEUR_NORMALE} | ||||||
| dans la branche destination ${COULEUR_ROUGE}$DestBranch${COULEUR_NORMALE}" | dans la branche destination ${COULEUR_ROUGE}$PmanMergeDest${COULEUR_NORMALE}" | ||||||
|     ask_yesno "Voulez-vous continuer?" O || die |     ask_yesno "Voulez-vous continuer?" O || die | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -206,14 +180,14 @@ _Fake= | |||||||
| _KeepScript= | _KeepScript= | ||||||
| action=release | action=release | ||||||
| ShowLevel=0 | ShowLevel=0 | ||||||
| [ -z "$PMAN_NO_MERGE" ] && Merge=1 || Merge= | Merge=1 | ||||||
| [ -z "$PMAN_NO_PUSH" ] && Push=1 || Push= | Push=1 | ||||||
| Version= | Version= | ||||||
| CurrentVersion= | CurrentVersion= | ||||||
| ForceCreate= | ForceCreate= | ||||||
| args=( | args=( | ||||||
|     "faire une nouvelle release à partir de la branche source" |     "faire une nouvelle release" | ||||||
|     " -v VERSION [source] |     " -v VERSION | ||||||
| 
 | 
 | ||||||
| CONFIGURATION | CONFIGURATION | ||||||
| Le fichier .pman.conf contient la configuration des branches. Les variables | Le fichier .pman.conf contient la configuration des branches. Les variables | ||||||
| @ -261,8 +235,10 @@ parse_args "$@"; set -- "${args[@]}" | |||||||
| # charger la configuration | # charger la configuration | ||||||
| ensure_gitdir "$chdir" | ensure_gitdir "$chdir" | ||||||
| load_branches all | load_branches all | ||||||
| load_config "$MYNAME" | load_config | ||||||
| load_branches current "$1"; shift | PMAN_REF_BRANCH=DEVELOP | ||||||
|  | set_pman_vars | ||||||
|  | load_branches current | ||||||
| 
 | 
 | ||||||
| [ -n "$Merge" -a -n "$NOAUTO" ] && ManualRelease=1 || ManualRelease= | [ -n "$Merge" -a -n "$NOAUTO" ] && ManualRelease=1 || ManualRelease= | ||||||
| [ -n "$ManualRelease" ] && Merge= | [ -n "$ManualRelease" ] && Merge= | ||||||
| @ -272,19 +248,12 @@ resolve_should_push quiet | |||||||
| 
 | 
 | ||||||
| # puis faire l'action que l'on nous demande | # puis faire l'action que l'on nous demande | ||||||
| case "$action" in | case "$action" in | ||||||
| show) | show) show_action "$@";; | ||||||
|     git_check_cleancheckout || ewarn "$git_cleancheckout_DIRTY" |  | ||||||
|     ensure_branches |  | ||||||
|     show_action "$@" |  | ||||||
|     ;; |  | ||||||
| release) | release) | ||||||
|     [ -z "$_Fake" ] && git_ensure_cleancheckout |     [ -z "$_Fake" ] && git_ensure_cleancheckout | ||||||
|     ensure_branches |     ensure_merge_branches | ||||||
|     case "$SrcType" in |     ensure_rel_infos | ||||||
|     release) merge_release_action "$@";; |     create_release_action "$@" | ||||||
|     hotfix) merge_hotfix_action "$@";; |  | ||||||
|     *) create_release_action "$@";; |  | ||||||
|     esac |  | ||||||
|     ;; |     ;; | ||||||
| *) | *) | ||||||
|     die "$action: action non implémentée" |     die "$action: action non implémentée" | ||||||
|  | |||||||
							
								
								
									
										162
									
								
								bin/ptool
									
									
									
									
									
								
							
							
						
						
									
										162
									
								
								bin/ptool
									
									
									
									
									
								
							| @ -7,146 +7,6 @@ git_cleancheckout_DIRTY="\ | |||||||
| Vous avez des modifications locales. | Vous avez des modifications locales. | ||||||
| Enregistrez ces modifications avant de fusionner la branche" | Enregistrez ces modifications avant de fusionner la branche" | ||||||
| 
 | 
 | ||||||
| function dump_action() { |  | ||||||
|     enote "Valeurs des variables: |  | ||||||
| PMAN_TOOL=$PMAN_TOOL |  | ||||||
| PMAN_REF_BRANCH=$PMAN_REF_BRANCH${PmanRefBranch:+ PmanRefBranch=$PmanRefBranch IfRefBranch=$IfRefBranch} |  | ||||||
| PMAN_BASE_BRANCH=$PMAN_BASE_BRANCH${PmanBaseBranch:+ PmanBaseBranch=$PmanBaseBranch IfBaseBranch=$IfBaseBranch} |  | ||||||
| PMAN_MERGE_FROM=$PMAN_MERGE_FROM |  | ||||||
| PMAN_MERGE_TO=$PMAN_MERGE_TO |  | ||||||
| PMAN_DIR=$PMAN_DIR |  | ||||||
| PMAN_PREL_MERGE=$PMAN_PREL_MERGE |  | ||||||
| PMAN_DELETE_MERGED=$PMAN_DELETE_MERGED |  | ||||||
| PMAN_MERGE_SRC=$PMAN_MERGE_SRC${PmanMergeSrc:+ PmanMergeSrc=$PmanMergeSrc IfMergeSrc=$IfMergeSrc} |  | ||||||
| PMAN_MERGE_DEST=$PMAN_MERGE_DEST${PmanMergeDest:+ PmanMergeDest=$PmanMergeDest IfMergeDest=$IfMergeDest} |  | ||||||
| 
 |  | ||||||
| CurrentBranch=$CurrentBranch |  | ||||||
| LocalBranches=${LocalBranches[*]} |  | ||||||
| RemoteBranches=${RemoteBranches[*]} |  | ||||||
| AllBranches=${AllBranches[*]} |  | ||||||
| 
 |  | ||||||
| UpstreamBranch=$UpstreamBranch |  | ||||||
| FeatureBranches=${FeatureBranches[*]} |  | ||||||
| DevelopBranch=$DevelopBranch |  | ||||||
| ReleaseBranch=$ReleaseBranch |  | ||||||
| HotfixBranch=$HotfixBranch |  | ||||||
| MainBranch=$MainBranch |  | ||||||
| DistBranch=$DistBranch |  | ||||||
| " |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function resolve_unique_branch() { |  | ||||||
|     if [ "$PMAN_REF_BRANCH" == FEATURE ]; then |  | ||||||
|         if [ $# -gt 0 ]; then |  | ||||||
|             PmanRefBranch="$FEATURE${1#$FEATURE}" |  | ||||||
|         elif [[ "$CurrentBranch" == "$FEATURE"* ]]; then |  | ||||||
|             PmanRefBranch="$CurrentBranch" |  | ||||||
|         elif [ ${#FeatureBranches[*]} -eq 0 ]; then |  | ||||||
|             die "Vous devez spécifier la branche de feature" |  | ||||||
|         elif [ ${#FeatureBranches[*]} -eq 1 ]; then |  | ||||||
|             PmanRefBranch="${FeatureBranches[0]}" |  | ||||||
|         else |  | ||||||
|             simple_menu \ |  | ||||||
|                 PmanRefBranch FeatureBranches \ |  | ||||||
|                 -t "Branches de feature" \ |  | ||||||
|                 -m "Veuillez choisir la branche de feature" \ |  | ||||||
|                 -d "${FeatureBranches[0]}" |  | ||||||
|         fi |  | ||||||
|     else |  | ||||||
|         die "resolve_unique_branch: $PMAN_REF_BRANCH: non implémenté" |  | ||||||
|     fi |  | ||||||
|     if [ "$PMAN_DIR" == to ]; then |  | ||||||
|         PmanMergeSrc="$PmanRefBranch" |  | ||||||
|     elif [ "$PMAN_DIR" == from ]; then |  | ||||||
|         PmanMergeDest="$PmanRefBranch" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function _ensure_ref_branch() { |  | ||||||
|     [ -n "$PmanRefBranch" ] || die "\ |  | ||||||
| La branche $PMAN_REF_BRANCH n'a pas été définie. |  | ||||||
| Veuillez éditer le fichier .pman.conf" |  | ||||||
|     [ "$1" == init -o -n "$IfRefBranch" ] || die "$PmanRefBranch: cette branche n'existe pas (le dépôt a-t-il été initialisé?)" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function _ensure_base_branch() { |  | ||||||
|     [ -n "$PmanBaseBranch" ] || die "\ |  | ||||||
| La branche $PMAN_BASE_BRANCH n'a pas été définie. |  | ||||||
| Veuillez éditer le fichier .pman.conf" |  | ||||||
|     [ "$1" == init -o -n "$IfBaseBranch" ] || die "$PmanBaseBranch: cette branche n'existe pas (le dépôt a-t-il été initialisé?)" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function checkout_action() { |  | ||||||
|     local -a push_branches |  | ||||||
| 
 |  | ||||||
|     [ -n "$PMAN_UNIQUE" ] || resolve_unique_branch "$@" |  | ||||||
|     _ensure_ref_branch init |  | ||||||
| 
 |  | ||||||
|     #if [ -n "$IfRefBranch" ]; then |  | ||||||
|     #    git checkout "$IfRefBranch" |  | ||||||
|     #el |  | ||||||
|     if array_contains LocalBranches "$PmanRefBranch"; then |  | ||||||
|         git checkout "$PmanRefBranch" |  | ||||||
|     elif array_contains AllBranches "$PmanRefBranch"; then |  | ||||||
|         enote "$PmanRefBranch: une branche du même nom existe dans l'origine" |  | ||||||
|         ask_yesno "Voulez-vous basculer sur cette branche?" O || die |  | ||||||
|         git checkout "$PmanRefBranch" |  | ||||||
|     else |  | ||||||
|         _ensure_base_branch |  | ||||||
|         resolve_should_push |  | ||||||
| 
 |  | ||||||
|         enote "Vous allez créer la branche ${COULEUR_BLEUE}$PmanRefBranch${COULEUR_NORMALE} <-- ${COULEUR_ROUGE}$PmanBaseBranch${COULEUR_NORMALE}" |  | ||||||
|         ask_yesno "Voulez-vous continuer?" O || die |  | ||||||
| 
 |  | ||||||
|         einfo "Création de la branche $PmanRefBranch" |  | ||||||
|         git checkout -b "$PmanRefBranch" "$PmanBaseBranch" || die |  | ||||||
|         push_branches+=("$PmanRefBranch") |  | ||||||
| 
 |  | ||||||
|         _push_branches |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function ensure_merge_branches() { |  | ||||||
|     [ -n "$PmanMergeSrc" ] || die "\ |  | ||||||
| $PmanRefBranch: configuration de fusion non trouvée: la branche $PMAN_MERGE_SRC n'a pas été définie. |  | ||||||
| Veuillez éditer le fichier .pman.conf" |  | ||||||
|     [ -n "$PmanMergeDest" ] || die "\ |  | ||||||
| $PmanRefBranch: configuration de fusion non trouvée: la branche $PMAN_MERGE_DEST n'a pas été définie. |  | ||||||
| Veuillez éditer le fichier .pman.conf" |  | ||||||
| 
 |  | ||||||
|     local branches |  | ||||||
|     [ "$1" == -a ] && branches=AllBranches || branches=LocalBranches |  | ||||||
|     array_contains "$branches" "$PmanMergeSrc" || die "$PmanMergeSrc: branche source introuvable" |  | ||||||
|     array_contains "$branches" "$PmanMergeDest" || die "$PmanMergeDest: branche destination introuvable" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function _show_action() { |  | ||||||
|     local commits |  | ||||||
|     setx commits=_list_commits "$PmanMergeSrc" "$PmanMergeDest" |  | ||||||
|     if [ -n "$commits" ]; then |  | ||||||
|         if [ $ShowLevel -ge 2 ]; then |  | ||||||
|             { |  | ||||||
|                 echo "\ |  | ||||||
| # Commits à fusionner $PmanMergeSrc --> $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() { | function _merge_action() { | ||||||
|     enote "\ |     enote "\ | ||||||
| Ce script va | Ce script va | ||||||
| @ -304,10 +164,10 @@ USAGE | |||||||
| 
 | 
 | ||||||
| OPTIONS | OPTIONS | ||||||
|     REF |     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 |         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 |         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 |         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" |         le sens SRC --> REF. SRC est calculé en fonction de REF" | ||||||
|     fi |     fi | ||||||
| @ -317,14 +177,6 @@ OPTIONS | |||||||
|     [ -n "$ref" ] || die "vous spécifier la branche de référence" |     [ -n "$ref" ] || die "vous spécifier la branche de référence" | ||||||
| 
 | 
 | ||||||
|     case "$ref" in |     case "$ref" in | ||||||
|     -t|--merge-to) |  | ||||||
|         ref="$1"; shift |  | ||||||
|         dir=to |  | ||||||
|         ;; |  | ||||||
|     -t*) |  | ||||||
|         ref="${ref#-t}" |  | ||||||
|         dir=to |  | ||||||
|         ;; |  | ||||||
|     -f|--merge-from) |     -f|--merge-from) | ||||||
|         ref="$1"; shift |         ref="$1"; shift | ||||||
|         dir=from |         dir=from | ||||||
| @ -333,6 +185,14 @@ OPTIONS | |||||||
|         ref="${ref#-f}" |         ref="${ref#-f}" | ||||||
|         dir=from |         dir=from | ||||||
|         ;; |         ;; | ||||||
|  |     -t|--merge-to) | ||||||
|  |         ref="$1"; shift | ||||||
|  |         dir=to | ||||||
|  |         ;; | ||||||
|  |     -t*) | ||||||
|  |         ref="${ref#-t}" | ||||||
|  |         dir=to | ||||||
|  |         ;; | ||||||
|     esac |     esac | ||||||
|     PMAN_TOOL= |     PMAN_TOOL= | ||||||
|     PMAN_REF_BRANCH="${ref^^}" |     PMAN_REF_BRANCH="${ref^^}" | ||||||
| @ -420,7 +280,7 @@ if [ -n "$PMAN_MERGE_SRC" -a -n "$PMAN_MERGE_DEST" ]; then | |||||||
|         usage="${usage} $PMAN_REF_BRANCH |         usage="${usage} $PMAN_REF_BRANCH | ||||||
| --show|--merge" | --show|--merge" | ||||||
|     fi |     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= | NB: la fusion se fait dans le sens inverse" || bewareDir= | ||||||
|     variables="\ |     variables="\ | ||||||
| Les variables supplémentaires suivantes peuvent être définies: | Les variables supplémentaires suivantes peuvent être définies: | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user