Intégration de la branche update-pu

This commit is contained in:
Jephté Clain 2018-03-01 10:22:33 +04:00
commit ad303993e0
2 changed files with 57 additions and 4 deletions

View File

@ -441,10 +441,18 @@ function git_commit() {
function git_status() {
git status "$@"
}
function __gu_list_lbranches() {
git for-each-ref refs/heads/ --format='%(refname:short)' |
grep -vF master |
grep -vF develop |
grep -v '^release-' |
grep -v '^hotfix-'
}
function git_update() {
local args autoff=1
local args clean= autoff=1
parse_opts + "${PRETTYOPTS[@]}" \
-x '$_vcs_unsupported -x' \
-c,--clean-before clean=1 \
-n,--no-autoff autoff= \
@ args -- "$@" && set -- "${args[@]}" || {
eerror "$args"
@ -459,6 +467,44 @@ function git_update() {
local branch orig_branch restore_branch remote rbranch pbranch
local -a branches prbranches crbranches dbranches
orig_branch="$(git_get_branch)"
if [ -n "$clean" ]; then
local l r; local -a error
git_ensure_cleancheckout
if git_have_branch develop; then
if [ "$orig_branch" != develop ]; then
estep "basculement sur la branche develop"
git checkout -q develop
restore_branch=1
fi
array_from_lines prbranches "$(git_list_rbranches)"
array_from_lines branches "$(__gu_list_lbranches)"
for branch in "${branches[@]}"; do
if array_contains prbranches "origin/$branch"; then
l="$(git rev-parse --verify --quiet "$branch")"
r="$(git rev-parse --verify --quiet "origin/$branch")"
if [ "$l" == "$r" ]; then
estepn "$branch: branche locale supprimée"
git branch -q -D "$branch"
else
array_add error "$branch"
fi
else
estep "$branch: branche locale gardée"
fi
done
if [ "${#error[*]}" -gt 0 ]; then
eerror "Les branches locales suivantes diffèrent de l'origine: ${COULEUR_JAUNE}${error[*]}${COULEUR_NORMALE}"
enote "Si vous êtes *certains* qu'il n'y a aucune modification locale à garder:
- supprimez ces branches manuellement
- ou faites-en une copie locale
puis relancez cette commande."
return 1
fi
fi
fi
array_from_lines prbranches "$(git_list_rbranches)"
git fetch -p "$@" || return
array_from_lines crbranches "$(git_list_rbranches)"
@ -525,7 +571,6 @@ Make your choice then delete the local branches:
return 0
fi
orig_branch="$(git_get_branch)"
array_from_lines branches "$(git_list_branches)"
for branch in "${branches[@]}"; do
remote="$(git_get_branch_remote "$branch")"
@ -549,7 +594,10 @@ You can merge manually with: git checkout $branch; git merge $pbranch"
fi
fi
done
[ -n "$restore_branch" ] && git checkout -q "$orig_branch"
if [ -n "$restore_branch" ]; then
[ -n "$clean" ] && estep "rebasculement sur la branche $orig_branch"
git checkout -q "$orig_branch"
fi
return 0
}
function git_push() {

View File

@ -43,7 +43,12 @@ COMMANDS
Afficher l'état des fichiers versionnés et non versionnés.
update [-x]
Mettre à jour la copie locale avec la copie sur le serveur.
-x Ne pas mettre à jour les références externes (si appliquable)
-x Ne pas mettre à jour les références externes (uniquement pour svn)
-c, --clean-before
Avant de faire git pull, supprimer toutes les branches locales qui
sont à jour par rapport à l'origine. La copie de travail doit être
propre. Basculer sur la branche develop avant de supprimer les
branches. S'il n'y a pas de branche develop, c'est un NOP.
-n, --no-autoff
Ne pas faire de fast-forward automatique pour toutes les branches
traquées. Par défaut, s'il n'y a pas de modifications locales,