possibilité de spécifier l'origine

implémenter merge, log, diff
This commit is contained in:
Jephté Clain 2015-02-20 00:44:30 +04:00 committed by Jephte CLAIN
parent 18a2c641de
commit de7d12aba6
2 changed files with 68 additions and 35 deletions

View File

@ -571,7 +571,7 @@ function git_ensure_branch() {
local branch="$1" source="${2:-master}" origin="${3:-origin}" local branch="$1" source="${2:-master}" origin="${3:-origin}"
[ -n "$branch" ] || return 2 [ -n "$branch" ] || return 2
git_have_branch "$branch" && return 1 git_have_branch "$branch" && return 1
if git_have_rbranch "$branch"; then if git_have_rbranch "$branch" "$origin"; then
# une branche du même nom existe dans l'origine. faire une copie de cette branche # une branche du même nom existe dans l'origine. faire une copie de cette branche
git branch -t "$branch" "$origin/$branch" || return 2 git branch -t "$branch" "$origin/$branch" || return 2
else else

101
pdev
View File

@ -20,9 +20,8 @@ USAGE
solution, sinon afficher un menu pour choisir la branche de destination. solution, sinon afficher un menu pour choisir la branche de destination.
OPTIONS OPTIONS
--init -O, --origin ORIGIN
Créer la branche develop et la configurer le cas échéant pour qu'elle Spécifier le nom de l'origine. Par défaut, utiliser 'origin'
traque la branche origin/develop
-m, --merge -m, --merge
Si la branche actuelle est une feature branch, la merger dans develop Si la branche actuelle est une feature branch, la merger dans develop
puis la supprimer. Puis basculer sur la branche develop. puis la supprimer. Puis basculer sur la branche develop.
@ -34,49 +33,83 @@ OPTIONS
par rapport à develop, sous forme de diff." par rapport à develop, sous forme de diff."
} }
origin=origin
action=branch
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-O:,--origin: origin= \
-m,--merge action=merge \
-l,--log action=log \
-d,--diff action=diff \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
git_ensure_gitvcs git_ensure_gitvcs
if ! git_have_branch develop; then if ! git_have_branch develop; then
estepn "Configuration de la branche develop" estepn "Configuration de la branche develop"
git_ensure_branch develop git_ensure_branch develop master "$origin"
[ $? -eq 2 ] && die "Impossible de créer la branche develop. Veuillez vérifier que la branche master existe" [ $? -eq 2 ] && die "Impossible de créer la branche develop. Veuillez vérifier que la branche master existe"
fi fi
feature="$1" setx branch=git_get_branch
source="${2:-develop}"
if [ -z "$feature" ]; then if [ "$action" == branch ]; then
setx branch=git_get_branch feature="$1"
setx -a branches=list_feature_branches source="${2:-develop}"
if [ ${#branches[*]} -eq 0 ]; then if [ -z "$feature" ]; then
# En l'absence de feature branch, basculer sur develop setx -a branches=list_feature_branches
feature=develop
else if [ ${#branches[*]} -eq 0 ]; then
array_ins branches develop # En l'absence de feature branch, basculer sur develop
simple_menu feature branches -d "$branch" \ feature=develop
-t "Basculer vers une feature branch" \ else
-m "Veuillez choisir la branche vers laquelle basculer" array_ins branches develop
simple_menu feature branches -d "$branch" \
-t "Basculer vers une feature branch" \
-m "Veuillez choisir la branche vers laquelle basculer"
fi
fi fi
fi
# On est peut-être déjà sur la bonne branche
# On est peut-être déjà sur la bonne branche if git_is_branch "$feature"; then
if git_is_branch "$feature"; then git_track_branch "$feature" "$origin"
git_track_branch "$feature" exit 0
exit 0 fi
fi
# Créer/basculer vers une feature branch
# Créer/basculer vers une feature branch git_ensure_cleancheckout
git_ensure_cleancheckout if git_have_branch "$feature"; then
if git_have_branch "$feature"; then git checkout "$feature"
git checkout "$feature" else
else estepn "\
estepn "\
Vous allez créer la nouvelle feature branch ${COULEUR_VERTE}$feature${COULEUR_NORMALE} Vous allez créer la nouvelle feature branch ${COULEUR_VERTE}$feature${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
git checkout -b "$feature" "$source" git_ensure_branch "$feature" "$source" "$origin"
[ $? -eq 2 ] && die "Impossible de créer la branche $feature. Veuillez vérifier que la branche $source existe"
git checkout "$feature"
fi
elif [ "$action" == merge ]; then
is_feature_branch || exit 0
estepn "Intégration de la feature branch ${COULEUR_VERTE}$branch${COULEUR_NORMALE} dans ${COULEUR_BLEUE}develop${COULEUR_NORMALE}"
git checkout develop
git merge "$branch" -m "Intégration de la feature branch $branch" --no-ff || die
estepi "Suppression de la branche locale"
git branch -d "$branch"
if git_have_remote origin; then
estepi "Suppression de la branche distante"
git push origin ":$branch"
fi
elif [ "$action" == log ]; then
is_feature_branch || exit 0
git log develop.."$branch"
elif [ "$action" == diff ]; then
is_feature_branch || exit 0
git diff develop..."$branch"
fi fi