From 7c67a7f37aca0f8cd205e25269108710727ba5a7 Mon Sep 17 00:00:00 2001 From: Jephte CLAIN Date: Sat, 28 Mar 2015 01:04:57 +0400 Subject: [PATCH] tenir compte des branches potentielles --- lib/completion.d/ptools | 7 ++++++- lib/ulib/ptools | 9 ++++++--- lib/ulib/vcs | 10 ++++++++++ pdev | 2 +- prel | 20 ++++++++++---------- 5 files changed, 33 insertions(+), 15 deletions(-) diff --git a/lib/completion.d/ptools b/lib/completion.d/ptools index dd979a4..7b652ef 100644 --- a/lib/completion.d/ptools +++ b/lib/completion.d/ptools @@ -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-' diff --git a/lib/ulib/ptools b/lib/ulib/ptools index 8b0db09..1083dce 100644 --- a/lib/ulib/ptools +++ b/lib/ulib/ptools @@ -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-' | diff --git a/lib/ulib/vcs b/lib/ulib/vcs index 8bfc336..075f1e4 100644 --- a/lib/ulib/vcs +++ b/lib/ulib/vcs @@ -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" } diff --git a/pdev b/pdev index 9f9dafd..7ef5f51 100755 --- a/pdev +++ b/pdev @@ -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 diff --git a/prel b/prel index 3527c85..8183e46 100755 --- a/prel +++ b/prel @@ -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