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
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 -v '^release-' |
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 list_release_branches() {
git_list_branches | grep '^release-'
local p="$1"
git_list_${p:+p}branches | grep '^release-'
}
function list_hotfix_branches() {
git_list_branches | grep '^hotfix-'
local p="$1"
git_list_${p:+p}branches | grep '^hotfix-'
}
function list_feature_branches() {
git_list_branches |
local p="$1"
git_list_${p:+p}branches |
grep -vF master |
grep -vF develop |
grep -v '^release-' |

View File

@ -548,6 +548,16 @@ function git_list_branches() {
function git_list_rbranches() {
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() {
git_list_branches | grep -qF "$1"
}

2
pdev
View File

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

20
prel
View File

@ -162,7 +162,7 @@ if [ "$action" == update ]; then
else
# sinon, prendre une décision en fonction des branches de release
# qui existent déjà
setx -a branches=list_release_branches
setx -a branches=list_release_branches p
if [ ${#branches[*]} -eq 0 ]; then
# en l'absence de branche de release, proposer d'en créer une
incversion=menu
@ -175,7 +175,7 @@ if [ "$action" == update ]; then
default_branch="$branch"
array_contains branches "$default_branch" || default_branch="${branches[0]}"
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"
fi
fi
@ -188,7 +188,7 @@ if [ "$action" == update ]; then
release="release-$minorv"
branches=("release-$majorv" "release-$minorv" "release-$patchlevelv" master)
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"
;;
major)
@ -220,7 +220,7 @@ if [ "$action" == checkout ]; then
source="${2:-develop}"
if [ -z "$release" ]; then
setx -a branches=list_release_branches
setx -a branches=list_release_branches p
if [ ${#branches[*]} -eq 0 ]; then
# en l'absence de branche de release, basculer sur master
@ -234,7 +234,7 @@ if [ "$action" == checkout ]; then
default_branch="$branch"
array_contains branches "$default_branch" || default_branch="${branches[0]}"
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"
fi
fi
@ -249,13 +249,13 @@ if [ "$action" == checkout ]; then
# Créer/basculer vers une release branch
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
if git_have_branch "$release"; then
git checkout "$release"; r=$?
else
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}"
ask_yesno "Voulez-vous continuer?" O || die
@ -285,7 +285,7 @@ setb have_release_branches=[ ${#branches[*]} -gt 0 ]
release="$1"
if [ -n "$release" ]; 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
die "Aucune branche de release n'existe, vous devez fusionner à partir de develop"
fi
@ -299,7 +299,7 @@ if [ "$action" == merge ]; then
if [ -z "$release" ]; 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."
release=develop
confirm=-y
@ -310,7 +310,7 @@ if [ "$action" == merge ]; then
default_release="$branch"
array_contains branches "$default_release" || default_release="${branches[0]}"
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"
fi
fi