Intégration de la branche pdev-merges

This commit is contained in:
Jephté Clain 2015-07-01 03:08:31 +04:00
commit f581aa9ec0
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 qui la traque, et pour chaque feature branche locale, vérifier qu'il
existe une branche distante associée. Cette option nécessite --online 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 -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.
--merge-log --merge-log
Ajouter un résumé des modifications sur la feature branch dans le Ajouter un résumé des modifications sur la feature branch en ajoutant le
message du merge 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 -k, --keep
Avec l'option -m, ne pas supprimer une feature branch après l'avoir 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 --delete
Supprimer une feature branch, à condition qu'elle aie déjà été Supprimer une feature branch, à condition qu'elle aie déjà été
entièrement fusionnée dans la branch develop entièrement fusionnée dans la branch develop
@ -84,6 +102,8 @@ OPTIONS
projdir= projdir=
origin=origin origin=origin
action=branch action=branch
squash_msg=
rebase_int=
merge_log= merge_log=
merge_delete=1 merge_delete=1
force_delete= force_delete=
@ -96,6 +116,8 @@ parse_opts "${PRETTYOPTS[@]}" \
-o,--offline UTOOLS_VCS_OFFLINE=1 \ -o,--offline UTOOLS_VCS_OFFLINE=1 \
--online UTOOLS_VCS_OFFLINE= \ --online UTOOLS_VCS_OFFLINE= \
--sync action=sync \ --sync action=sync \
-s:,--squash: '$action=squash; set@ squash_msg' \
-b,--rebase '$action=none; rebase_int=1' \
-m,--merge action=merge \ -m,--merge action=merge \
--merge-log merge_log=1 \ --merge-log merge_log=1 \
-k,--keep merge_delete= \ -k,--keep merge_delete= \
@ -192,7 +214,17 @@ elif is_feature_branch "$branch"; then
feature="$branch" feature="$branch"
fi 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 if [ -z "$feature" ]; then
setx -a branches=list_feature_branches setx -a branches=list_feature_branches
if [ ${#branches[*]} -eq 0 ]; then if [ ${#branches[*]} -eq 0 ]; then
@ -213,16 +245,27 @@ if [ "$action" == merge ]; then
ask_yesno "Voulez-vous continuer?" O || die ask_yesno "Voulez-vous continuer?" O || die
# calculer la suite des modifications # 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 if [ -n "$merge_log" ]; then
setx mergebase=git merge-base develop "$feature" setx mergebase=git merge-base develop "$feature"
setx modifs=git log --oneline "$mergebase..$feature" setx modifs=git log --oneline "$mergebase..$feature"
[ -n "$modifs" ] && mergemsg="$mergemsg [ -n "$modifs" ] && merge_msg="$merge_msg
$modifs" $modifs"
fi fi
git checkout develop || die 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 # mettre à jour la branche sur laquelle on se trouve
setx branch=git_get_branch setx branch=git_get_branch