ajouter les options -b et -s à pdev

This commit is contained in:
Jephté Clain 2015-07-01 03:08:23 +04:00
parent cb96bddb89
commit 80d7a73092
1 changed files with 50 additions and 7 deletions

57
pdev
View File

@ -54,15 +54,33 @@ OPTIONS
qui la traque, et pour chaque feature branche locale, vérifier qu'il
existe une branche distante associée. Cette option nécessite --online
-s, --squash COMMIT_MSG
Si la branche actuelle est une feature branch, la merger comme un seul
commit avec le message COMMIT_MSG dans develop puis la supprimer. Puis
basculer sur la branche develop.
Cette option ne devrait pas être utilisée avec -k, puisque bien que les
modifications soient mergées, la branche elle-même n'est pas considérée
comme mergée. Les résultats sont donc indéfinis si la branche est mergée
à plusieurs reprises.
-b, --rebase
Si la branche actuelle est une feature branch, lancer 'git rebase -i'
sur la feature branch. Cela permet de réordonner les commits pour
nettoyer l'historique avant de fusionner la branche avec -m
Cette option devrait le cas échéant être utilisée immédiatement avant -m
ou alors il faut forcer le push et communiquer avec l'équipe sur le fait
que la branche de feature a été rebasée.
-m, --merge
Si la branche actuelle est une feature branch, la merger dans develop
puis la supprimer. Puis basculer sur la branche develop.
--merge-log
Ajouter un résumé des modifications sur la feature branch dans le
message du merge
Ajouter un résumé des modifications sur la feature branch en ajoutant le
log en une ligne de chaque commit dans le message du merge. Cette option
n'est en principe pas nécessaire puisque 'prel -um' intègre la liste des
commits dans CHANGES.txt
-k, --keep
Avec l'option -m, ne pas supprimer une feature branch après l'avoir
fusionnée dans develop.
fusionnée dans develop. Cela permet d'intégrer les modifications petit à
petit.
--delete
Supprimer une feature branch, à condition qu'elle aie déjà été
entièrement fusionnée dans la branch develop
@ -84,6 +102,8 @@ OPTIONS
projdir=
origin=origin
action=branch
squash_msg=
rebase_int=
merge_log=
merge_delete=1
force_delete=
@ -96,6 +116,8 @@ parse_opts "${PRETTYOPTS[@]}" \
-o,--offline UTOOLS_VCS_OFFLINE=1 \
--online UTOOLS_VCS_OFFLINE= \
--sync action=sync \
-s:,--squash: '$action=squash; set@ squash_msg' \
-b,--rebase '$action=none; rebase_int=1' \
-m,--merge action=merge \
--merge-log merge_log=1 \
-k,--keep merge_delete= \
@ -192,7 +214,17 @@ elif is_feature_branch "$branch"; then
feature="$branch"
fi
if [ "$action" == merge ]; then
if [ -n "$rebase_int" ]; then
if [ "$branch" != "$feature" ]; then
# s'assurer qu'on est sur la bonne branche
git checkout "$feature" || die
branch=feature
fi
setx base=git merge-base "$feature" develop
git rebase -i "$base" || die
fi
if [ "$action" == squash -o "$action" == merge ]; then
if [ -z "$feature" ]; then
setx -a branches=list_feature_branches
if [ ${#branches[*]} -eq 0 ]; then
@ -213,16 +245,27 @@ if [ "$action" == merge ]; then
ask_yesno "Voulez-vous continuer?" O || die
# calculer la suite des modifications
mergemsg="Intégration de la branche $feature"
merge_msg="Intégration de la branche $feature"
if [ -n "$merge_log" ]; then
setx mergebase=git merge-base develop "$feature"
setx modifs=git log --oneline "$mergebase..$feature"
[ -n "$modifs" ] && mergemsg="$mergemsg
[ -n "$modifs" ] && merge_msg="$merge_msg
$modifs"
fi
git checkout develop || die
git merge "$feature" -m "$mergemsg" --no-ff || die
if [ "$action" == squash ]; then
[ -n "$squash_msg" ] || squash_msg="$merge_msg"
git merge "$feature" --squash || die
git commit -m "$squash_msg" || die
# il faut forcer la suppression de la branche, puisqu'elle n'est pas
# considérée comme mergée
force_delete=1
elif [ "$action" == merge ]; then
git merge "$feature" -m "$merge_msg" --no-ff || die
else
die "$action: action imprévue"
fi
# mettre à jour la branche sur laquelle on se trouve
setx branch=git_get_branch