finaliser l'implémentation
This commit is contained in:
parent
1ec281d746
commit
7408760ca7
|
@ -40,8 +40,5 @@
|
||||||
# Activer le mode offline pour git (pas de push automatique)
|
# Activer le mode offline pour git (pas de push automatique)
|
||||||
#export UTOOLS_VCS_OFFLINE=1
|
#export UTOOLS_VCS_OFFLINE=1
|
||||||
|
|
||||||
# Activer automatiquement l'option --clean pour 'uproject update'
|
|
||||||
#export UTOOLS_VCS_CLEANUPDATE=1
|
|
||||||
|
|
||||||
# Faire un alias ssh pour ussh
|
# Faire un alias ssh pour ussh
|
||||||
#export UTOOLS_USSH_ALIAS=1
|
#export UTOOLS_USSH_ALIAS=1
|
||||||
|
|
48
lib/ulib/vcs
48
lib/ulib/vcs
|
@ -441,7 +441,7 @@ function git_commit() {
|
||||||
function git_status() {
|
function git_status() {
|
||||||
git status "$@"
|
git status "$@"
|
||||||
}
|
}
|
||||||
function __git_update_lbranches() {
|
function __gu_list_lbranches() {
|
||||||
git for-each-ref refs/heads/ --format='%(refname:short)' |
|
git for-each-ref refs/heads/ --format='%(refname:short)' |
|
||||||
grep -vF master |
|
grep -vF master |
|
||||||
grep -vF develop |
|
grep -vF develop |
|
||||||
|
@ -449,20 +449,16 @@ function __git_update_lbranches() {
|
||||||
grep -v '^hotfix-'
|
grep -v '^hotfix-'
|
||||||
}
|
}
|
||||||
function git_update() {
|
function git_update() {
|
||||||
local args autoff=1 clean=auto
|
local args clean= autoff=1
|
||||||
parse_opts + "${PRETTYOPTS[@]}" \
|
parse_opts + "${PRETTYOPTS[@]}" \
|
||||||
-x '$_vcs_unsupported -x' \
|
-x '$_vcs_unsupported -x' \
|
||||||
-c,--clean-before clean=1 \
|
-c,--clean-before clean=1 \
|
||||||
--no-clean-before clean= \
|
|
||||||
-n,--no-autoff autoff= \
|
-n,--no-autoff autoff= \
|
||||||
@ args -- "$@" && set -- "${args[@]}" || {
|
@ args -- "$@" && set -- "${args[@]}" || {
|
||||||
eerror "$args"
|
eerror "$args"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ "$clean" == auto ]; then
|
|
||||||
[ -n "$UTOOLS_VCS_CLEANUPDATE" ] && clean=1 || clean=
|
|
||||||
fi
|
|
||||||
if [ -z "$autoff" ]; then
|
if [ -z "$autoff" ]; then
|
||||||
git pull "$@"
|
git pull "$@"
|
||||||
return $?
|
return $?
|
||||||
|
@ -471,15 +467,41 @@ function git_update() {
|
||||||
local branch orig_branch restore_branch remote rbranch pbranch
|
local branch orig_branch restore_branch remote rbranch pbranch
|
||||||
local -a branches prbranches crbranches dbranches
|
local -a branches prbranches crbranches dbranches
|
||||||
|
|
||||||
|
orig_branch="$(git_get_branch)"
|
||||||
|
|
||||||
if [ -n "$clean" ]; then
|
if [ -n "$clean" ]; then
|
||||||
|
local l r; local -a error
|
||||||
git_ensure_cleancheckout
|
git_ensure_cleancheckout
|
||||||
array_from_lines prbranches "$(git_list_rbranches)"
|
|
||||||
if git_have_branch develop; then
|
if git_have_branch develop; then
|
||||||
git checkout -q develop
|
if [ "$orig_branch" != develop ]; then
|
||||||
array_from_lines branches "$(__git_update_lbranches)"
|
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
|
for branch in "${branches[@]}"; do
|
||||||
#XXX pour chaque branche, vérifier l'origine
|
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
|
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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -549,7 +571,6 @@ Make your choice then delete the local branches:
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
orig_branch="$(git_get_branch)"
|
|
||||||
array_from_lines branches "$(git_list_branches)"
|
array_from_lines branches "$(git_list_branches)"
|
||||||
for branch in "${branches[@]}"; do
|
for branch in "${branches[@]}"; do
|
||||||
remote="$(git_get_branch_remote "$branch")"
|
remote="$(git_get_branch_remote "$branch")"
|
||||||
|
@ -573,7 +594,10 @@ You can merge manually with: git checkout $branch; git merge $pbranch"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
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
|
return 0
|
||||||
}
|
}
|
||||||
function git_push() {
|
function git_push() {
|
||||||
|
|
5
uproject
5
uproject
|
@ -43,15 +43,12 @@ COMMANDS
|
||||||
Afficher l'état des fichiers versionnés et non versionnés.
|
Afficher l'état des fichiers versionnés et non versionnés.
|
||||||
update [-x]
|
update [-x]
|
||||||
Mettre à jour la copie locale avec la copie sur le serveur.
|
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
|
-c, --clean-before
|
||||||
Avant de faire git pull, supprimer toutes les branches locales qui
|
Avant de faire git pull, supprimer toutes les branches locales qui
|
||||||
sont à jour par rapport à l'origine. La copie de travail doit être
|
sont à jour par rapport à l'origine. La copie de travail doit être
|
||||||
propre. Basculer sur la branche develop avant de supprimer les
|
propre. Basculer sur la branche develop avant de supprimer les
|
||||||
branches. S'il n'y a pas de branche develop, c'est un NOP.
|
branches. S'il n'y a pas de branche develop, c'est un NOP.
|
||||||
--no-clean-before
|
|
||||||
Neutraliser l'activation de l'option --clean-before par la variable
|
|
||||||
UTOOLS_VCS_CLEANUPDATE si elle est renseignée.
|
|
||||||
-n, --no-autoff
|
-n, --no-autoff
|
||||||
Ne pas faire de fast-forward automatique pour toutes les branches
|
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,
|
traquées. Par défaut, s'il n'y a pas de modifications locales,
|
||||||
|
|
Loading…
Reference in New Issue