modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2025-02-27 10:28:38 +04:00
parent add57b8345
commit c99f80b52a
8 changed files with 86 additions and 21 deletions

View File

@ -33,8 +33,7 @@ Ces lignes ne seront pas incluses dans le fichier destination
function _filter_rel() { function _filter_rel() {
# enlever les commits "techniques" générés par ce script # enlever les commits "techniques" générés par ce script
grep -v "Intégration de la branche $RELEASE" | grep -vE '<pman>'
grep -v "Branche $DEVELOP en version .*-SNAPSHOT"
} }
function _filter_changes() { function _filter_changes() {
@ -67,7 +66,7 @@ function _list_commits() {
local source="${1:-$SrcBranch}" dest="${2:-$DestBranch}" mergebase local source="${1:-$SrcBranch}" dest="${2:-$DestBranch}" mergebase
setx mergebase=git merge-base "$dest" "$source" setx mergebase=git merge-base "$dest" "$source"
git log --oneline --graph "$mergebase..$source" | git log --oneline --graph "$mergebase..$source" |
grep -vF '|\' | grep -vF '|/' | sed 's/\* //; s/^ /+ /' | grep -vF '|\' | grep -vF '|/' | sed -r 's/^(\| )+\* +/| /; s/^\* +/+ /' |
_filter_rel _filter_rel
} }
@ -297,9 +296,13 @@ function _rscript_create_release_branch() {
_init_changelog _init_changelog
echo >>"$changelog" "\ echo >>"$changelog" "\
## Release $Version du $date ## Release $Tag du $date
" "
_list_commits | _filter_changes | _format_md >>"$changelog" _list_commits | _filter_changes | _format_md >>"$changelog"
if [ -s CHANGES.md ]; then
echo >>"$changelog"
cat CHANGES.md >>"$changelog"
fi
"${EDITOR:-nano}" +7 "$changelog" "${EDITOR:-nano}" +7 "$changelog"
[ -s "$changelog" ] || exit_with ewarn "Création de la release annulée" [ -s "$changelog" ] || exit_with ewarn "Création de la release annulée"
@ -310,12 +313,11 @@ EOF
# créer le changelog # créer le changelog
_script_add "* update CHANGES.md" <<EOF _script_add "* update CHANGES.md" <<EOF
[ -s CHANGES.md ] && echo >>CHANGES.md
$(qvals echo "$(awk <"$changelog" ' $(qvals echo "$(awk <"$changelog" '
BEGIN { p = 0 } BEGIN { p = 0 }
p == 0 && $0 == "" { p = 1; next } p == 0 && $0 == "" { p = 1; next }
p == 1 { gsub(/\$/, "\\$", $0); print } p == 1 { gsub(/\$/, "\\$", $0); print }
')") >>CHANGES.md ')") >CHANGES.md
git add CHANGES.md git add CHANGES.md
EOF EOF
@ -327,7 +329,7 @@ EOF
# Enregistrer les changements # Enregistrer les changements
_script_add "* commit" <<EOF _script_add "* commit" <<EOF
$(qvals git commit -m "Init changelog & version $Version") $(qvals git commit -m "<pman>Init changelog & version $Version")
EOF EOF
} }
@ -341,7 +343,7 @@ EOF
# fusionner la branche de release # fusionner la branche de release
_script_add "* merge branch $ReleaseBranch" <<EOF _script_add "* merge branch $ReleaseBranch" <<EOF
$comment$(qvals git merge "$ReleaseBranch" -m "Intégration de la branche $ReleaseBranch" --no-ff)$or_die $comment$(qvals git merge "$ReleaseBranch" -m "<pman>Intégration de la branche $ReleaseBranch" --no-ff)$or_die
EOF EOF
array_addu push_branches "$dest" array_addu push_branches "$dest"

4
bin/_merge82 Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
exec "$(dirname -- "$0")/pdev" --tech-merge -Bdev82 dev74 "$@"

View File

@ -5,7 +5,7 @@ require: git
function git_status() { function git_status() {
local status r cwd local status r cwd
status="$(git status "$@" 2>&1)"; r=$? status="$(git -c color.status=always status "$@" 2>&1)"; r=$?
if [ -n "$status" ]; then if [ -n "$status" ]; then
setx cwd=ppath2 "$(pwd)" "$OrigCwd" setx cwd=ppath2 "$(pwd)" "$OrigCwd"
etitle "$cwd" etitle "$cwd"

View File

@ -33,15 +33,19 @@ Ce script va
- pousser les branches modifiées}" - pousser les branches modifiées}"
ask_yesno "Voulez-vous continuer?" O || die ask_yesno "Voulez-vous continuer?" O || die
local -a push_branches local -a push_branches; local msg
einfo "Fusion ${SquashMsg:+squash }dans $DestBranch" einfo "Fusion ${SquashMsg:+squash }dans $DestBranch"
git checkout "$DestBranch" || die git checkout "$DestBranch" || die
if [ -n "$SquashMsg" ]; then if [ -n "$SquashMsg" ]; then
msg="$SquashMsg"
[ -n "$TechMerge" ] && msg="<pman>$msg"
git merge "$SrcBranch" --squash git merge "$SrcBranch" --squash
git commit -m "$SquashMsg" git commit -m "$msg"
else else
git merge "$SrcBranch" --no-ff -m "Intégration de la branche $SrcBranch" msg="Intégration de la branche $SrcBranch"
[ -n "$TechMerge" ] && msg="<pman>$msg"
git merge "$SrcBranch" --no-ff -m "$msg"
fi fi
push_branches+=("$DestBranch") push_branches+=("$DestBranch")
@ -63,6 +67,7 @@ Origin=
ConfigBranch= ConfigBranch=
ConfigFile= ConfigFile=
action=merge action=merge
TechMerge=
SquashMsg= SquashMsg=
Push=1 Push=1
Delete=1 Delete=1
@ -85,6 +90,7 @@ commits pour nettoyer l'historique avant la fusion"
--merge action=merge "++\ --merge action=merge "++\
fusionner la branche source dans la branche destination correspondante. fusionner la branche source dans la branche destination correspondante.
c'est l'action par défaut" c'est l'action par défaut"
--tech-merge TechMerge=1 "++option non documentée"
-s:,--squash:COMMIT_MSG SquashMsg= "\ -s:,--squash:COMMIT_MSG SquashMsg= "\
fusionner les modifications de la branche comme un seul commit. fusionner les modifications de la branche comme un seul commit.
cette option ne devrait pas être utilisée avec --no-delete" cette option ne devrait pas être utilisée avec --no-delete"

View File

@ -118,7 +118,7 @@ function init_upstream_action() {
einfo "Fusion dans $DEVELOP" einfo "Fusion dans $DEVELOP"
git checkout "$DEVELOP" git checkout "$DEVELOP"
git merge \ git merge \
--no-ff -m "Intégration initiale de la branche $UPSTREAM" \ --no-ff -m "<pman>Intégration initiale de la branche $UPSTREAM" \
-srecursive -Xours --allow-unrelated-histories \ -srecursive -Xours --allow-unrelated-histories \
"$UPSTREAM" "$UPSTREAM"
push_branches+=("$DEVELOP") push_branches+=("$DEVELOP")

View File

@ -22,6 +22,13 @@ function ensure_branches() {
array_contains LocalBranches "$SrcBranch" || die "$SrcBranch: branche source introuvable" array_contains LocalBranches "$SrcBranch" || die "$SrcBranch: branche source introuvable"
array_contains LocalBranches "$DestBranch" || die "$DestBranch: branche destination 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 "$Force" ]; then
array_contains tags "$Tag" && die "$Tag: le tag correspondant à la version existe déjà"
fi
} }
function create_release_action() { function create_release_action() {
@ -35,8 +42,16 @@ function create_release_action() {
Version="${HotfixBranch#$HOTFIX}" Version="${HotfixBranch#$HOTFIX}"
merge_hotfix_action "$@"; return $? merge_hotfix_action "$@"; return $?
fi fi
[ -n "$Version" ] || die "Vous devez spécifier la version de la release" 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" ReleaseBranch="${RELEASE}$Version"
if [ -n "$Merge" ]; then if [ -n "$Merge" ]; then
enote "\ enote "\
@ -75,7 +90,7 @@ EOF
if [ -n "\$merge" ]; then if [ -n "\$merge" ]; then
echo "== Fusionner la release" echo "== Fusionner la release"
EOF EOF
_rscript_merge_release_branch "$DestBranch" "$TAG_PREFIX$Version$TAG_SUFFIX" _rscript_merge_release_branch "$DestBranch" "$Tag"
_rscript_merge_release_branch "$SrcBranch" _rscript_merge_release_branch "$SrcBranch"
_rscript_delete_release_branch _rscript_delete_release_branch
_script_add <<EOF _script_add <<EOF
@ -129,6 +144,8 @@ action=release
Merge=1 Merge=1
Push=1 Push=1
Version= Version=
CurrentVersion=
Force=
_KeepScript= _KeepScript=
args=( args=(
"faire une nouvelle release à partir de la branche source" "faire une nouvelle release à partir de la branche source"
@ -159,6 +176,10 @@ pousser les branches vers leur origine après la création de la release.
c'est l'option par défaut" c'est l'option par défaut"
-v:,--version Version= "\ -v:,--version Version= "\
spécifier la version de la release à créer" 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 Force= "\
forcer la création de la release même si le tag correspond à la version existe déjà"
) )
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"

37
lib/completion.d/pman Normal file
View File

@ -0,0 +1,37 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
function __pman_pdev_branches() {
local toplevel="$(git rev-parse --show-toplevel 2>/dev/null)"
[ -n "$toplevel" ] || return 0
(
# cf pman.conf.sh
UPSTREAM=
DEVELOP=develop
FEATURE=wip/
RELEASE=release-
MAIN=master
TAG_PREFIX=
TAG_SUFFIX=
HOTFIX=hotfix-
DIST=
[ -f "$toplevel/.pman.conf" ] && source "$toplevel/.pman.conf"
# lister les branches
branches="$DEVELOP|$FEATURE.*"
[ -n "$UPSTREAM" ] && branches="$branches|$UPSTREAM"
remote=origin/
{
git for-each-ref refs/heads/ --format='%(refname:short)' 2>/dev/null
git for-each-ref "refs/remotes/$remote" --format='%(refname:short)' 2>/dev/null |
grep -F "$remote" |
cut -c $((${#remote} + 1))-
} | LANG=C sort -u | grep -E "^($branches)\$"
)
}
function __pdev_completion() {
local cur
_get_comp_words_by_ref cur
COMPREPLY=($(compgen -W "$(__pman_pdev_branches)" "$cur"))
}
complete -F __pdev_completion pdev

View File

@ -1,5 +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
exec "$MYDIR/pmer" -Bdev82 dev74 "$@"