modifs.mineures sans commentaires
This commit is contained in:
		
							parent
							
								
									8ea5802429
								
							
						
					
					
						commit
						e14fd4d160
					
				| @ -25,7 +25,8 @@ DIST= | ||||
| NOAUTO= | ||||
| 
 | ||||
| CONFIG_VARS=( | ||||
|     UPSTREAM DEVELOP FEATURE RELEASE MAIN TAG_PREFIX TAG_SUFFIX HOTFIX DIST NOAUTO | ||||
|     UPSTREAM DEVELOP FEATURE RELEASE MAIN HOTFIX DIST | ||||
|     TAG_PREFIX TAG_SUFFIX NOAUTO | ||||
| ) | ||||
| 
 | ||||
| ################################################################################ | ||||
|  | ||||
| @ -9,4 +9,4 @@ args=( | ||||
| ) | ||||
| parse_args "$@"; set -- "${args[@]}" | ||||
| 
 | ||||
| exec "$MYDIR/pmer" --tech-merge -Bdev82 dev74 ${dev74:+-a "git checkout dev74"} "$@" | ||||
| exec "$MYDIR/ptool" upstream -Bdev82 -m --tech-merge ${dev74:+-a "git checkout dev74"} "$@" | ||||
|  | ||||
							
								
								
									
										184
									
								
								bin/_pman
									
									
									
									
									
								
							
							
						
						
									
										184
									
								
								bin/_pman
									
									
									
									
									
								
							| @ -1,184 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 | ||||
| source "$(dirname -- "$0")/../load.sh" || exit 1 | ||||
| require: git pman pman.tool pman.conf | ||||
| 
 | ||||
| if [ "$MYNAME" == _pman ]; then | ||||
|     [ "$1" == --help ] && exit_with eecho "USAGE: _pman tool [args]" | ||||
|     PMAN_TOOL=_pman | ||||
|     PMAN_REF_BRANCH="${1^^}"; shift | ||||
|     array_contains PMAN_BRANCHES "$PMAN_REF_BRANCH" || die "$PMAN_REF_BRANCH: invalid branch" | ||||
| else | ||||
|     PMAN_TOOL="${MYNAME^^}" | ||||
|     PMAN_REF_BRANCH="PMAN_TOOL_${PMAN_TOOL}"; PMAN_REF_BRANCH="${!PMAN_REF_BRANCH}" | ||||
| fi | ||||
| 
 | ||||
| loaded_config= | ||||
| if check_gitdir; then | ||||
|     load_branches all | ||||
|     load_config | ||||
|     set_pman_vars | ||||
|     load_branches current | ||||
|     loaded_config=1 | ||||
| else | ||||
|     set_pman_vars | ||||
| fi | ||||
| 
 | ||||
| BranchDesc= | ||||
| MergeSrcDesc= | ||||
| MergeDestDesc= | ||||
| if [ -n "$PMAN_REF_BRANCH" ]; then | ||||
|     BranchDesc="${COULEUR_BLANCHE}<$PMAN_REF_BRANCH>" | ||||
|     [ -n "$PmanRefBranch" -a -n "$PMAN_UNIQUE" ] && BranchDesc="$BranchDesc ($PmanRefBranch)" | ||||
|     BranchDesc="$BranchDesc${COULEUR_NORMALE}" | ||||
| fi | ||||
| if [ -n "$PMAN_MERGE_SRC" ]; then | ||||
|     MergeSrcDesc="${COULEUR_BLEUE}<$PMAN_MERGE_SRC>" | ||||
|     [ -n "$PmanMergeSrc" -a -n "$PMAN_UNIQUE" ] && MergeSrcDesc="$MergeSrcDesc ($PmanMergeSrc)" | ||||
|     MergeSrcDesc="$MergeSrcDesc${COULEUR_NORMALE}" | ||||
| fi | ||||
| if [ -n "$PMAN_MERGE_DEST" ]; then | ||||
|     MergeDestDesc="${COULEUR_ROUGE}<$PMAN_MERGE_DEST>" | ||||
|     [ -n "$PmanMergeDest" -a -n "$PMAN_UNIQUE" ] && MergeDestDesc="$MergeDestDesc ($PmanMergeDest)" | ||||
|     MergeDestDesc="$MergeDestDesc${COULEUR_NORMALE}" | ||||
| fi | ||||
| 
 | ||||
| [ -n "$PMAN_UNIQUE" ] && | ||||
|     purpose="gérer la branche $BranchDesc" || | ||||
|         purpose="gérer les branches $BranchDesc" | ||||
| usage="--checkout" | ||||
| variables= | ||||
| args=( | ||||
|     -d:,--chdir:BASEDIR chdir= "\ | ||||
| répertoire dans lequel se placer avant de lancer les opérations" | ||||
|     -O:,--origin Origin= "++\ | ||||
| origine à partir de laquelle les branches distantes sont considérées" | ||||
|     -B:,--config-branch ConfigBranch= "++\ | ||||
| branche à partir de laquelle charger la configuration" | ||||
|     -c:,--config-file:CONFIG ConfigFile= "++\ | ||||
| fichier de configuration des branches. le fichier .pman.conf dans le répertoire | ||||
| du dépôt est utilisé par défaut s'il existe. cette option est prioritaire sur | ||||
| --config-branch" | ||||
|     --fake _Fake=1 "++option non documentée" | ||||
|     --keep-script _KeepScript=1 "++option non documentée" | ||||
|     --dump action=dump "++afficher les noms des branches" | ||||
| ) | ||||
| if [ -n "$PmanRefBranch" -a -n "$PMAN_UNIQUE" ]; then | ||||
|     args+=( | ||||
|         --checkout action=checkout "++\ | ||||
| créer le cas échéant la branche $BranchDesc et basculer vers elle. | ||||
| c'est l'option par défaut" | ||||
|     ) | ||||
| elif [ -z "$PMAN_UNIQUE" ]; then | ||||
|     args+=( | ||||
|         --checkout action=checkout "\ | ||||
| créer le cas échéant la branche $BranchDesc et basculer vers elle. | ||||
| c'est l'option par défaut" | ||||
|     ) | ||||
| else | ||||
|     args+=( | ||||
|         --checkout action=checkout "\ | ||||
| créer la branche $MergeDestDesc et basculer vers elle. | ||||
| c'est l'option par défaut" | ||||
|     ) | ||||
| fi | ||||
| 
 | ||||
| if [ -n "$PMAN_MERGE_SRC" -a -n "$PMAN_MERGE_DEST" ]; then | ||||
|     if [ -n "$PMAN_UNIQUE" ]; then | ||||
|         usage="${usage}|--show|--merge" | ||||
|     else | ||||
|         usage="${usage} $PMAN_REF_BRANCH | ||||
| --show|--merge" | ||||
|     fi | ||||
|     [ "$PMAN_REF_BRANCH" != "$PMAN_MERGE_SRC" ] && bewareDir=" | ||||
| NB: la fusion se fait dans le sens inverse" || bewareDir= | ||||
|     variables="\ | ||||
| Les variables supplémentaires suivantes peuvent être définies: | ||||
|     BEFORE_MERGE_${PMAN_MERGE_SRC} | ||||
|     AFTER_MERGE_${PMAN_MERGE_SRC}" | ||||
|     args+=( | ||||
|         -w,--show '$action=show; inc@ ShowLevel' "\ | ||||
| lister ce qui serait fusionné dans la branche $MergeDestDesc" | ||||
| #        -b,--rebase action=rebase "\ | ||||
| #lancer git rebase -i sur la branche $MergeSrcDesc. cela permet de réordonner | ||||
| #les commits pour nettoyer l'historique avant la fusion" | ||||
|         -m,--merge action=merge "\ | ||||
| fusionner la branche $MergeSrcDesc dans la branche $MergeDestDesc$bewareDir" | ||||
|         --tech-merge TechMerge=1 "++option non documentée" | ||||
|         -s:,--squash:COMMIT_MSG SquashMsg= "\ | ||||
| fusionner les modifications de la branche comme un seul commit" | ||||
|     ) | ||||
|     if [ -n "$PMAN_PREL_MERGE" ]; then | ||||
|         args+=( | ||||
|             -f,--force-merge ForceMerge=1 "++\ | ||||
| forcer la fusion pour une branche qui devrait être traitée par prel" | ||||
|         ) | ||||
|     fi | ||||
|     args+=( | ||||
|         -n,--no-push Push= "\ | ||||
| ne pas pousser les branches vers leur origine après la fusion" | ||||
|         --push Push=1 "++\ | ||||
| pousser les branches vers leur origine après la fusion. | ||||
| c'est l'option par défaut" | ||||
|     ) | ||||
|     if [ -n "$PMAN_DELETE_MERGED" ]; then | ||||
|         variables="${variables} | ||||
|     AFTER_DELETE_${PMAN_MERGE_SRC}" | ||||
|         args+=( | ||||
|             -k,--no-delete Delete= "\ | ||||
| ne pas supprimer la branche $MergeSrcDesc après la fusion dans la branche | ||||
| $MergeDestDesc. cette option ne devrait pas être utilisée avec --squash" | ||||
|             --delete Delete=1 "++\ | ||||
| supprimer la branche $MergeSrcDesc après la fusion dans la branche | ||||
| $MergeDestDesc. | ||||
| c'est l'option par défaut" | ||||
|         ) | ||||
|     fi | ||||
|     if [ -n "$PMAN_MERGE_DEST" ]; then | ||||
|         variables="${variables} | ||||
|     BEFORE_PUSH_${PMAN_MERGE_DEST} | ||||
|     AFTER_PUSH_${PMAN_MERGE_DEST}" | ||||
|     fi | ||||
|     args+=( | ||||
|         -a:,--after-merge 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" | ||||
|     "\ | ||||
|  $usage | ||||
| 
 | ||||
| CONFIGURATION | ||||
| 
 | ||||
| Le fichier .pman.conf contient la configuration des branches. | ||||
| $variables" | ||||
|     "${args[@]}" | ||||
| ) | ||||
| parse_args "$@"; set -- "${args[@]}" | ||||
| 
 | ||||
| if [ -z "$loaded_config" -o -n "$chdir" -o -n "$ConfigFile" -o -n "$ConfigBranch" ]; then | ||||
|     # charger la configuration | ||||
|     ensure_gitdir "$chdir" | ||||
|     load_branches all | ||||
|     load_config | ||||
|     set_pman_vars | ||||
|     load_branches current | ||||
| fi | ||||
| resolve_should_push quiet | ||||
| 
 | ||||
| "${action}_action" "$@" | ||||
							
								
								
									
										231
									
								
								bash/src/pman.tool.sh → bin/ptool
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										231
									
								
								bash/src/pman.tool.sh → bin/ptool
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @ -1,4 +1,7 @@ | ||||
| #!/bin/bash | ||||
| # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 | ||||
| source "$(dirname -- "$0")/../load.sh" || exit 1 | ||||
| require: git pman pman.conf | ||||
| 
 | ||||
| git_cleancheckout_DIRTY="\ | ||||
| Vous avez des modifications locales. | ||||
| @ -287,3 +290,231 @@ function merge_action() { | ||||
| function rebase_action() { | ||||
|     die "non implémenté" | ||||
| } | ||||
| 
 | ||||
| ################################################################################ | ||||
| 
 | ||||
| loaded_config= | ||||
| dir= | ||||
| if [ "$MYNAME" == ptool ]; then | ||||
|     if [ "$1" == --help ]; then | ||||
|         exit_with eecho "$MYNAME: gérer les branches d'un projet | ||||
| 
 | ||||
| USAGE | ||||
|     $MYNAME [-t|-f] REF args... | ||||
| 
 | ||||
| OPTIONS | ||||
|     REF | ||||
|     -t, --merge-to 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 | ||||
|         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 | ||||
| 
 | ||||
|     ref="$1"; shift | ||||
|     dir=to | ||||
|     [ -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 | ||||
|         ;; | ||||
|     -f*) | ||||
|         ref="${ref#-f}" | ||||
|         dir=from | ||||
|         ;; | ||||
|     esac | ||||
|     PMAN_TOOL= | ||||
|     PMAN_REF_BRANCH="${ref^^}" | ||||
|     array_contains PMAN_BRANCHES "$PMAN_REF_BRANCH" || die "$ref: invalid branch" | ||||
| 
 | ||||
| else | ||||
|     PMAN_TOOL="${MYNAME^^}" | ||||
|     PMAN_REF_BRANCH="PMAN_TOOL_${PMAN_TOOL}"; PMAN_REF_BRANCH="${!PMAN_REF_BRANCH}" | ||||
| fi | ||||
| 
 | ||||
| if check_gitdir; then | ||||
|     load_branches all | ||||
|     load_config | ||||
|     set_pman_vars "$dir" | ||||
|     load_branches current | ||||
|     loaded_config=1 | ||||
| else | ||||
|     set_pman_vars "$dir" | ||||
| fi | ||||
| 
 | ||||
| BranchDesc= | ||||
| MergeSrcDesc= | ||||
| MergeDestDesc= | ||||
| if [ -n "$PMAN_REF_BRANCH" ]; then | ||||
|     BranchDesc="${COULEUR_BLANCHE}<$PMAN_REF_BRANCH>" | ||||
|     [ -n "$PmanRefBranch" -a -n "$PMAN_UNIQUE" ] && BranchDesc="$BranchDesc ($PmanRefBranch)" | ||||
|     BranchDesc="$BranchDesc${COULEUR_NORMALE}" | ||||
| fi | ||||
| if [ -n "$PMAN_MERGE_SRC" ]; then | ||||
|     MergeSrcDesc="${COULEUR_BLEUE}<$PMAN_MERGE_SRC>" | ||||
|     [ -n "$PmanMergeSrc" -a -n "$PMAN_UNIQUE" ] && MergeSrcDesc="$MergeSrcDesc ($PmanMergeSrc)" | ||||
|     MergeSrcDesc="$MergeSrcDesc${COULEUR_NORMALE}" | ||||
| fi | ||||
| if [ -n "$PMAN_MERGE_DEST" ]; then | ||||
|     MergeDestDesc="${COULEUR_ROUGE}<$PMAN_MERGE_DEST>" | ||||
|     [ -n "$PmanMergeDest" -a -n "$PMAN_UNIQUE" ] && MergeDestDesc="$MergeDestDesc ($PmanMergeDest)" | ||||
|     MergeDestDesc="$MergeDestDesc${COULEUR_NORMALE}" | ||||
| fi | ||||
| 
 | ||||
| [ -n "$PMAN_UNIQUE" ] && | ||||
|     purpose="gérer la branche $BranchDesc" || | ||||
|         purpose="gérer les branches $BranchDesc" | ||||
| usage="--checkout" | ||||
| variables= | ||||
| args=( | ||||
|     -d:,--chdir:BASEDIR chdir= "\ | ||||
| répertoire dans lequel se placer avant de lancer les opérations" | ||||
|     -O:,--origin Origin= "++\ | ||||
| origine à partir de laquelle les branches distantes sont considérées" | ||||
|     -B:,--config-branch ConfigBranch= "++\ | ||||
| branche à partir de laquelle charger la configuration" | ||||
|     -c:,--config-file:CONFIG ConfigFile= "++\ | ||||
| fichier de configuration des branches. le fichier .pman.conf dans le répertoire | ||||
| du dépôt est utilisé par défaut s'il existe. cette option est prioritaire sur | ||||
| --config-branch" | ||||
|     --fake _Fake=1 "++option non documentée" | ||||
|     --keep-script _KeepScript=1 "++option non documentée" | ||||
|     --dump action=dump "++afficher les noms des branches" | ||||
| ) | ||||
| 
 | ||||
| if [ -n "$PmanRefBranch" -a -n "$PMAN_UNIQUE" ]; then | ||||
|     args+=( | ||||
|         --checkout action=checkout "++\ | ||||
| créer le cas échéant la branche $BranchDesc et basculer vers elle. | ||||
| c'est l'option par défaut" | ||||
|     ) | ||||
| elif [ -z "$PMAN_UNIQUE" ]; then | ||||
|     args+=( | ||||
|         --checkout action=checkout "\ | ||||
| créer le cas échéant la branche $BranchDesc et basculer vers elle. | ||||
| c'est l'option par défaut" | ||||
|     ) | ||||
| else | ||||
|     args+=( | ||||
|         --checkout action=checkout "\ | ||||
| créer la branche $MergeDestDesc et basculer vers elle. | ||||
| c'est l'option par défaut" | ||||
|     ) | ||||
| fi | ||||
| 
 | ||||
| if [ -n "$PMAN_MERGE_SRC" -a -n "$PMAN_MERGE_DEST" ]; then | ||||
|     if [ -n "$PMAN_UNIQUE" ]; then | ||||
|         usage="${usage}|--show|--merge" | ||||
|     else | ||||
|         usage="${usage} $PMAN_REF_BRANCH | ||||
| --show|--merge" | ||||
|     fi | ||||
|     [ "$PMAN_REF_BRANCH" != "$PMAN_MERGE_SRC" ] && bewareDir=" | ||||
| NB: la fusion se fait dans le sens inverse" || bewareDir= | ||||
|     variables="\ | ||||
| Les variables supplémentaires suivantes peuvent être définies: | ||||
|     BEFORE_MERGE_${PMAN_MERGE_SRC} | ||||
|     AFTER_MERGE_${PMAN_MERGE_SRC}" | ||||
| 
 | ||||
|     args+=( | ||||
|         -w,--show '$action=show; inc@ ShowLevel' "\ | ||||
| lister ce qui serait fusionné dans la branche $MergeDestDesc" | ||||
| #        -b,--rebase action=rebase "\ | ||||
| #lancer git rebase -i sur la branche $MergeSrcDesc. cela permet de réordonner | ||||
| #les commits pour nettoyer l'historique avant la fusion" | ||||
|         -m,--merge action=merge "\ | ||||
| fusionner la branche $MergeSrcDesc dans la branche $MergeDestDesc$bewareDir" | ||||
|         --tech-merge TechMerge=1 "++option non documentée" | ||||
|         -s:,--squash:COMMIT_MSG SquashMsg= "\ | ||||
| fusionner les modifications de la branche comme un seul commit" | ||||
|     ) | ||||
| 
 | ||||
|     if [ -n "$PMAN_PREL_MERGE" ]; then | ||||
|         args+=( | ||||
|             -f,--force-merge ForceMerge=1 "++\ | ||||
| forcer la fusion pour une branche qui devrait être traitée par prel" | ||||
|         ) | ||||
|     fi | ||||
| 
 | ||||
|     args+=( | ||||
|         -n,--no-push Push= "\ | ||||
| ne pas pousser les branches vers leur origine après la fusion" | ||||
|         --push Push=1 "++\ | ||||
| pousser les branches vers leur origine après la fusion. | ||||
| c'est l'option par défaut" | ||||
|     ) | ||||
| 
 | ||||
|     if [ -n "$PMAN_DELETE_MERGED" ]; then | ||||
|         variables="${variables} | ||||
|     AFTER_DELETE_${PMAN_MERGE_SRC}" | ||||
|         args+=( | ||||
|             -k,--no-delete Delete= "\ | ||||
| ne pas supprimer la branche $MergeSrcDesc après la fusion dans la branche | ||||
| $MergeDestDesc. cette option ne devrait pas être utilisée avec --squash" | ||||
|             --delete Delete=1 "++\ | ||||
| supprimer la branche $MergeSrcDesc après la fusion dans la branche | ||||
| $MergeDestDesc. | ||||
| c'est l'option par défaut" | ||||
|         ) | ||||
|     fi | ||||
| 
 | ||||
|     if [ -n "$PMAN_MERGE_DEST" ]; then | ||||
|         variables="${variables} | ||||
|     BEFORE_PUSH_${PMAN_MERGE_DEST} | ||||
|     AFTER_PUSH_${PMAN_MERGE_DEST}" | ||||
|     fi | ||||
| 
 | ||||
|     args+=( | ||||
|         -a:,--after-merge 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" | ||||
|     "\ | ||||
|  $usage | ||||
| 
 | ||||
| CONFIGURATION | ||||
| 
 | ||||
| Le fichier .pman.conf contient la configuration des branches. | ||||
| $variables" | ||||
|     "${args[@]}" | ||||
| ) | ||||
| parse_args "$@"; set -- "${args[@]}" | ||||
| 
 | ||||
| if [ -z "$loaded_config" -o -n "$chdir" -o -n "$ConfigFile" -o -n "$ConfigBranch" ]; then | ||||
|     # charger la configuration | ||||
|     ensure_gitdir "$chdir" | ||||
|     load_branches all | ||||
|     load_config | ||||
|     set_pman_vars "$dir" | ||||
|     load_branches current | ||||
| fi | ||||
| resolve_should_push quiet | ||||
| 
 | ||||
| "${action}_action" "$@" | ||||
							
								
								
									
										292
									
								
								wip/prel.orig
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										292
									
								
								wip/prel.orig
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,292 @@ | ||||
| #!/bin/bash | ||||
| # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 | ||||
| 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 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" | ||||
| 
 | ||||
|    Tag="$TAG_PREFIX$Version$TAG_SUFFIX" | ||||
|    local -a tags | ||||
|    setx -a tags=git tag -l "${TAG_PREFIX}*${TAG_SUFFIX}" | ||||
|    if [ -z "$ForceCreate" ]; then | ||||
|        array_contains tags "$Tag" && die "$Tag: le tag correspondant à la version existe déjà" | ||||
|    fi | ||||
| } | ||||
| 
 | ||||
| function create_release_action() { | ||||
|     if [ -n "$ReleaseBranch" ]; then | ||||
|         Version="${ReleaseBranch#$RELEASE}" | ||||
|         Tag="$TAG_PREFIX$Version$TAG_SUFFIX" | ||||
|         merge_release_action "$@"; return $? | ||||
|     elif [ -n "$HotfixBranch" ]; then | ||||
|         Version="${HotfixBranch#$HOTFIX}" | ||||
|         Tag="$TAG_PREFIX$Version$TAG_SUFFIX" | ||||
|         merge_hotfix_action "$@"; return $? | ||||
|     fi | ||||
| 
 | ||||
|     [ -n "$ManualRelease" ] && ewarn "\ | ||||
| L'option --no-merge a été forcée puisque ce dépôt ne supporte pas les releases automatiques" | ||||
|     [ -z "$ShouldPush" ] && enote "\ | ||||
| L'option --no-push a été forcée puisque ce dépôt n'a pas d'origine" | ||||
| 
 | ||||
|     if [ -z "$Version" -a -n "$CurrentVersion" -a -f VERSION.txt ]; then | ||||
|         Version="$(<VERSION.txt)" | ||||
|         Tag="$TAG_PREFIX$Version$TAG_SUFFIX" | ||||
|     fi | ||||
|     if [ -z "$Version" ]; then | ||||
|         [ -f VERSION.txt ] && einfo "La version actuelle est $(<VERSION.txt)" | ||||
|         die "Vous devez spécifier la version de la nouvelle release avec l'une des options -v ou -C" | ||||
|     fi | ||||
| 
 | ||||
|     ReleaseBranch="${RELEASE}$Version" | ||||
|     if [ -n "$Merge" ]; then | ||||
|         enote "\ | ||||
| Ce script va: | ||||
| - créer la branche de release ${COULEUR_VERTE}$ReleaseBranch${COULEUR_NORMALE} <-- ${COULEUR_BLEUE}$SrcBranch${COULEUR_NORMALE} | ||||
| - la provisionner avec une description des changements | ||||
| - la fusionner dans la branche destination ${COULEUR_ROUGE}$DestBranch${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} | ||||
| - la provisionner avec une description des changements | ||||
| Vous devrez: | ||||
| - mettre à jour les informations de release puis relancer ce script" | ||||
|     fi | ||||
|     ask_yesno "Voulez-vous continuer?" O || die | ||||
| 
 | ||||
|     local script=".git/pman-release.sh" | ||||
|     local -a push_branches push_tags | ||||
|     local comment= | ||||
|     local or_die=" || exit 1" | ||||
| 
 | ||||
|     _rscript_start | ||||
|     _scripta <<EOF | ||||
| ################################################################################ | ||||
| # create | ||||
| if [ -n "\$create" ]; then | ||||
| esection "Création de la release" | ||||
| EOF | ||||
|     [ -n "$BEFORE_CREATE_RELEASE" ] && _scripta <<EOF | ||||
| ( | ||||
| $BEFORE_CREATE_RELEASE | ||||
| )$or_die | ||||
| EOF | ||||
|     _rscript_create_release_branch | ||||
|     [ -n "$AFTER_CREATE_RELEASE" ] && _scripta <<EOF | ||||
| ( | ||||
| $AFTER_CREATE_RELEASE | ||||
| )$or_die | ||||
| EOF | ||||
|     _scripta <<EOF | ||||
| fi | ||||
| EOF | ||||
| 
 | ||||
|     _scripta <<EOF | ||||
| ################################################################################ | ||||
| # merge | ||||
| if [ -n "\$merge" ]; then | ||||
| esection "Fusionner la release" | ||||
| EOF | ||||
|     [ -n "$BEFORE_MERGE_RELEASE" ] && _scripta <<EOF | ||||
| ( | ||||
| $BEFORE_MERGE_RELEASE | ||||
| )$or_die | ||||
| EOF | ||||
|     _rscript_merge_release_branch "$DestBranch" "$Tag" | ||||
|     _rscript_merge_release_branch "$SrcBranch" | ||||
|     _rscript_delete_release_branch | ||||
|     [ -n "$AFTER_MERGE_RELEASE" ] && _scripta <<EOF | ||||
| ( | ||||
| $AFTER_MERGE_RELEASE | ||||
| )$or_die | ||||
| EOF | ||||
|     _scripta <<EOF | ||||
| fi | ||||
| EOF | ||||
| 
 | ||||
|     _scripta <<EOF | ||||
| ################################################################################ | ||||
| # push | ||||
| if [ -n "\$push" ]; then | ||||
| esection "Pousser branches et tags" | ||||
| EOF | ||||
|     [ -n "$BEFORE_PUSH_RELEASE" ] && _scripta <<EOF | ||||
| ( | ||||
| $BEFORE_PUSH_RELEASE | ||||
| )$or_die | ||||
| EOF | ||||
|     _script_push_branches | ||||
|     _script_push_tags | ||||
|     [ -n "$AFTER_PUSH_RELEASE" ] && _scripta <<EOF | ||||
| ( | ||||
| $AFTER_PUSH_RELEASE | ||||
| )$or_die | ||||
| EOF | ||||
|     _scripta <<EOF | ||||
| fi | ||||
| EOF | ||||
| 
 | ||||
|     [ -z "$ManualRelease" -a -n "$Merge" ] && ShouldMerge= || ShouldMerge=1 | ||||
|     [ -n "$ShouldPush" -a -n "$Push" ] && ShouldPush= | ||||
|     if [ -n "$_Fake" ]; then | ||||
|         cat "$script" | ||||
|     elif ! "$script" create ${Merge:+merge} ${Push:+push}; then | ||||
|         eimportant "\ | ||||
| Le script $script a été lancé avec les arguments 'create${Merge:+ merge}${Push:+ push}' | ||||
| En cas d'erreur de merge, veuillez corriger les erreurs puis continuer avec | ||||
|     git merge --continue | ||||
| Veuillez aussi consulter le script et/ou le relancer | ||||
|     ./$script${Push:+ push}" | ||||
|         die | ||||
|     elif [ -n "$Merge" -a -n "$Push" ]; then | ||||
|         [ -n "$_KeepScript" ] || rm "$script" | ||||
|     else | ||||
|         einfo "\ | ||||
| Le script $script a été lancé avec les arguments 'create${Merge:+ merge}${Push:+ push}' | ||||
| Vous pouvez consulter le script et/ou le relancer | ||||
|     ./$script${ShouldMerge:+ merge}${ShouldPush:+ push}" | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| function merge_release_action() { | ||||
|     enote "\ | ||||
| Vous allez: | ||||
| - fusionner la branche de release ${COULEUR_VERTE}$ReleaseBranch${COULEUR_NORMALE} | ||||
|   dans la branche destination ${COULEUR_ROUGE}$DestBranch${COULEUR_NORMALE}" | ||||
|     ask_yesno "Voulez-vous continuer?" O || die | ||||
| } | ||||
| 
 | ||||
| function merge_hotfix_action() { | ||||
|     enote "\ | ||||
| Vous allez intégrer la branche de hotfix ${COULEUR_JAUNE}$HotfixBranch${COULEUR_NORMALE} | ||||
| dans la branche destination ${COULEUR_ROUGE}$DestBranch${COULEUR_NORMALE}" | ||||
|     ask_yesno "Voulez-vous continuer?" O || die | ||||
| } | ||||
| 
 | ||||
| ################################################################################ | ||||
| # Programme principal | ||||
| ################################################################################ | ||||
| 
 | ||||
| chdir= | ||||
| Origin= | ||||
| ConfigBranch= | ||||
| ConfigFile= | ||||
| _Fake= | ||||
| _KeepScript= | ||||
| action=release | ||||
| ShowLevel=0 | ||||
| [ -z "$PMAN_NO_MERGE" ] && Merge=1 || Merge= | ||||
| [ -z "$PMAN_NO_PUSH" ] && Push=1 || Push= | ||||
| Version= | ||||
| CurrentVersion= | ||||
| ForceCreate= | ||||
| args=( | ||||
|     "faire une nouvelle release à partir de la branche source" | ||||
|     " -v VERSION [source] | ||||
| 
 | ||||
| CONFIGURATION | ||||
| Le fichier .pman.conf contient la configuration des branches. Les variables | ||||
| supplémentaires suivantes peuvent être définies: | ||||
|     BEFORE_CREATE_RELEASE | ||||
|     AFTER_CREATE_RELEASE | ||||
|     BEFORE_MERGE_RELEASE | ||||
|     AFTER_MERGE_RELEASE | ||||
|     BEFORE_PUSH_RELEASE | ||||
|     AFTER_PUSH_RELEASE" | ||||
|     -d:,--chdir:BASEDIR chdir= "répertoire dans lequel se placer avant de lancer les opérations" | ||||
|     -O:,--origin Origin= "++\ | ||||
| origine à partir de laquelle les branches distantes sont considérées" | ||||
|     -B:,--config-branch ConfigBranch= "++\ | ||||
| branche à partir de laquelle charger la configuration" | ||||
|     -c:,--config-file:CONFIG ConfigFile= "++\ | ||||
| fichier de configuration des branches. cette option est prioritaire sur --config-branch | ||||
| par défaut, utiliser le fichier .pman.conf dans le répertoire du dépôt s'il existe" | ||||
|     --fake _Fake=1 "++option non documentée" | ||||
|     --keep-script _KeepScript=1 "++option non documentée" | ||||
|     -w,--show '$action=show; inc@ ShowLevel' "\ | ||||
| lister les modifications qui seraient intégrées dans la release" | ||||
|     --release action=release "++\ | ||||
| créer la release. | ||||
| c'est l'action par défaut" | ||||
|     -k,--no-merge Merge= "\ | ||||
| ne pas fusionner la branche de release après l'avoir créée. implique --no-push" | ||||
|     --merge Merge=1 "++\ | ||||
| fusionner la branche de release après l'avoir créée. | ||||
| c'est l'option par défaut" | ||||
|     -n,--no-push Push= "\ | ||||
| ne pas pousser les branches vers leur origine après la création de la release" | ||||
|     --push Push=1 "++\ | ||||
| pousser les branches vers leur origine après la création de la release. | ||||
| c'est l'option par défaut" | ||||
|     -v:,--version:VERSION Version= "\ | ||||
| spécifier la version de la release à créer" | ||||
|     -C,--current-version CurrentVersion=1 "++\ | ||||
| si aucune version n'est spécifiée, prendre la version présente dans le fichier VERSION.txt" | ||||
|     -f,--force-create ForceCreate=1 "\ | ||||
| forcer la création de la release même si le tag correspond à la version existe déjà" | ||||
| ) | ||||
| parse_args "$@"; set -- "${args[@]}" | ||||
| 
 | ||||
| # charger la configuration | ||||
| ensure_gitdir "$chdir" | ||||
| load_branches all | ||||
| load_config "$MYNAME" | ||||
| load_branches current "$1"; shift | ||||
| 
 | ||||
| [ -n "$Merge" -a -n "$NOAUTO" ] && ManualRelease=1 || ManualRelease= | ||||
| [ -n "$ManualRelease" ] && Merge= | ||||
| [ -z "$Merge" ] && Push= | ||||
| 
 | ||||
| resolve_should_push quiet | ||||
| 
 | ||||
| # puis faire l'action que l'on nous demande | ||||
| case "$action" in | ||||
| show) | ||||
|     git_check_cleancheckout || ewarn "$git_cleancheckout_DIRTY" | ||||
|     ensure_branches | ||||
|     show_action "$@" | ||||
|     ;; | ||||
| release) | ||||
|     [ -z "$_Fake" ] && git_ensure_cleancheckout | ||||
|     ensure_branches | ||||
|     case "$SrcType" in | ||||
|     release) merge_release_action "$@";; | ||||
|     hotfix) merge_hotfix_action "$@";; | ||||
|     *) create_release_action "$@";; | ||||
|     esac | ||||
|     ;; | ||||
| *) | ||||
|     die "$action: action non implémentée" | ||||
|     ;; | ||||
| esac | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user