tenir compte des branches potentielles

This commit is contained in:
Jephte CLAIN 2015-03-28 01:04:57 +04:00
parent b757ca13ca
commit 7c67a7f37a
5 changed files with 33 additions and 15 deletions

View File

@ -1,7 +1,12 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
function __pdev_branches() { function __pdev_branches() {
git for-each-ref --format='%(refname:short)' refs/heads | local prefix=origin/
{
git for-each-ref refs/heads/ --format='%(refname:short)'
git for-each-ref "refs/remotes/$prefix" --format='%(refname:short)' | grep -F "$prefix" | cut -c $((${#prefix} + 1))-
} | csort -u |
grep -vF HEAD |
grep -vF master | grep -vF master |
grep -v '^release-' | grep -v '^release-' |
grep -v '^hotfix-' grep -v '^hotfix-'

View File

@ -69,13 +69,16 @@ function is_hotfix_branch() { is_any_branch "$1" hotfix; }
function is_feature_branch() { is_any_branch "$1" feature; } function is_feature_branch() { is_any_branch "$1" feature; }
function list_release_branches() { function list_release_branches() {
git_list_branches | grep '^release-' local p="$1"
git_list_${p:+p}branches | grep '^release-'
} }
function list_hotfix_branches() { function list_hotfix_branches() {
git_list_branches | grep '^hotfix-' local p="$1"
git_list_${p:+p}branches | grep '^hotfix-'
} }
function list_feature_branches() { function list_feature_branches() {
git_list_branches | local p="$1"
git_list_${p:+p}branches |
grep -vF master | grep -vF master |
grep -vF develop | grep -vF develop |
grep -v '^release-' | grep -v '^release-' |

View File

@ -548,6 +548,16 @@ function git_list_branches() {
function git_list_rbranches() { function git_list_rbranches() {
git for-each-ref "refs/remotes/${1:-origin}/" --format='%(refname:short)' | csort git for-each-ref "refs/remotes/${1:-origin}/" --format='%(refname:short)' | csort
} }
function git_list_pbranches() {
# lister les branches locales et celles qui existent dans l'origine
# $1(=origin) et qui pourraient devenir une branche locale avec la commande
# git checkout
local prefix="${1:-origin}/"
{
git for-each-ref refs/heads/ --format='%(refname:short)'
git for-each-ref "refs/remotes/$prefix" --format='%(refname:short)' | grep -F "$prefix" | cut -c $((${#prefix} + 1))-
} | grep -vF HEAD | csort -u
}
function git_have_branch() { function git_have_branch() {
git_list_branches | grep -qF "$1" git_list_branches | grep -qF "$1"
} }

2
pdev
View File

@ -103,7 +103,7 @@ if [ "$action" == branch ]; then
source="${2:-develop}" source="${2:-develop}"
if [ -z "$feature" ]; then if [ -z "$feature" ]; then
setx -a branches=list_feature_branches setx -a branches=list_feature_branches p
if [ ${#branches[*]} -eq 0 ]; then if [ ${#branches[*]} -eq 0 ]; then
# En l'absence de feature branch, basculer sur develop # En l'absence de feature branch, basculer sur develop

20
prel
View File

@ -162,7 +162,7 @@ if [ "$action" == update ]; then
else else
# sinon, prendre une décision en fonction des branches de release # sinon, prendre une décision en fonction des branches de release
# qui existent déjà # qui existent déjà
setx -a branches=list_release_branches setx -a branches=list_release_branches p
if [ ${#branches[*]} -eq 0 ]; then if [ ${#branches[*]} -eq 0 ]; then
# en l'absence de branche de release, proposer d'en créer une # en l'absence de branche de release, proposer d'en créer une
incversion=menu incversion=menu
@ -175,7 +175,7 @@ if [ "$action" == update ]; then
default_branch="$branch" default_branch="$branch"
array_contains branches "$default_branch" || default_branch="${branches[0]}" array_contains branches "$default_branch" || default_branch="${branches[0]}"
simple_menu release branches -d "$default_branch" \ simple_menu release branches -d "$default_branch" \
-t "Basculer vers une release branch" \ -t "Basculer vers une branche de release" \
-m "Veuillez choisir la branche vers laquelle basculer" -m "Veuillez choisir la branche vers laquelle basculer"
fi fi
fi fi
@ -188,7 +188,7 @@ if [ "$action" == update ]; then
release="release-$minorv" release="release-$minorv"
branches=("release-$majorv" "release-$minorv" "release-$patchlevelv" master) branches=("release-$majorv" "release-$minorv" "release-$patchlevelv" master)
simple_menu release branches \ simple_menu release branches \
-t "Basculer vers une nouvelle release branch" \ -t "Basculer vers une nouvelle branche de release" \
-m "Veuillez choisir la branche à créer" -m "Veuillez choisir la branche à créer"
;; ;;
major) major)
@ -220,7 +220,7 @@ if [ "$action" == checkout ]; then
source="${2:-develop}" source="${2:-develop}"
if [ -z "$release" ]; then if [ -z "$release" ]; then
setx -a branches=list_release_branches setx -a branches=list_release_branches p
if [ ${#branches[*]} -eq 0 ]; then if [ ${#branches[*]} -eq 0 ]; then
# en l'absence de branche de release, basculer sur master # en l'absence de branche de release, basculer sur master
@ -234,7 +234,7 @@ if [ "$action" == checkout ]; then
default_branch="$branch" default_branch="$branch"
array_contains branches "$default_branch" || default_branch="${branches[0]}" array_contains branches "$default_branch" || default_branch="${branches[0]}"
simple_menu release branches -d "$default_branch" \ simple_menu release branches -d "$default_branch" \
-t "Basculer vers une release branch" \ -t "Basculer vers une branche de release" \
-m "Veuillez choisir la branche vers laquelle basculer" -m "Veuillez choisir la branche vers laquelle basculer"
fi fi
fi fi
@ -249,13 +249,13 @@ if [ "$action" == checkout ]; then
# Créer/basculer vers une release branch # Créer/basculer vers une release branch
git_ensure_cleancheckout git_ensure_cleancheckout
is_any_branch "$release" master release || die "$release: ce n'est pas une release branch" is_any_branch "$release" master release || die "$release: ce n'est pas une branche de release"
r=0 r=0
if git_have_branch "$release"; then if git_have_branch "$release"; then
git checkout "$release"; r=$? git checkout "$release"; r=$?
else else
estepn "\ estepn "\
Vous allez créer la nouvelle release branch ${COULEUR_VERTE}$release${COULEUR_NORMALE} Vous allez créer la nouvelle branche de release ${COULEUR_VERTE}$release${COULEUR_NORMALE}
à partir de la branche source ${COULEUR_BLEUE}$source${COULEUR_NORMALE}" à partir de la branche source ${COULEUR_BLEUE}$source${COULEUR_NORMALE}"
ask_yesno "Voulez-vous continuer?" O || die ask_yesno "Voulez-vous continuer?" O || die
@ -285,7 +285,7 @@ setb have_release_branches=[ ${#branches[*]} -gt 0 ]
release="$1" release="$1"
if [ -n "$release" ]; then if [ -n "$release" ]; then
if [ -n "$have_release_branches" ]; then if [ -n "$have_release_branches" ]; then
is_release_branch "$release" || die "$release: ce n'est pas une release branch" is_release_branch "$release" || die "$release: ce n'est pas une branche de release"
elif ! is_develop_branch "$release"; then elif ! is_develop_branch "$release"; then
die "Aucune branche de release n'existe, vous devez fusionner à partir de develop" die "Aucune branche de release n'existe, vous devez fusionner à partir de develop"
fi fi
@ -299,7 +299,7 @@ if [ "$action" == merge ]; then
if [ -z "$release" ]; then if [ -z "$release" ]; then
if [ ${#branches[*]} -eq 0 ]; then if [ ${#branches[*]} -eq 0 ]; then
ewarn "Aucune release branch n'a été préparée." ewarn "Aucune branche de release n'a été préparée."
ewarn "La branche develop sera fusionnée directement dans master." ewarn "La branche develop sera fusionnée directement dans master."
release=develop release=develop
confirm=-y confirm=-y
@ -310,7 +310,7 @@ if [ "$action" == merge ]; then
default_release="$branch" default_release="$branch"
array_contains branches "$default_release" || default_release="${branches[0]}" array_contains branches "$default_release" || default_release="${branches[0]}"
simple_menu release branches -d "$default_release" \ simple_menu release branches -d "$default_release" \
-t "Choix de la release branch" \ -t "Choix de la branche de release" \
-m "Veuillez choisir la branche" -m "Veuillez choisir la branche"
fi fi
fi fi