ajout des fonctions git_is_ancestor(), git_should_ff(), git_should_push(), git_is_merged()
This commit is contained in:
parent
2e215cc09f
commit
1661ee5f48
44
lib/ulib/vcs
44
lib/ulib/vcs
|
@ -523,6 +523,8 @@ __VCS_GIT_ADVANCED_MAP=(
|
|||
gb:git_get_branch ib:git_is_branch
|
||||
hr:git_have_remote tb:git_track_branch
|
||||
cc:git_check_cleancheckout ec:git_ensure_cleancheckout
|
||||
ia:git_is_ancestor sff:git_should_ff spu:git_should_push
|
||||
im:git_is_merged
|
||||
)
|
||||
__VCS_GIT_ADVANCED=(
|
||||
git_check_gitvcs git_ensure_gitvcs
|
||||
|
@ -531,6 +533,8 @@ __VCS_GIT_ADVANCED=(
|
|||
git_get_branch git_is_branch
|
||||
git_have_remote git_track_branch
|
||||
git_check_cleancheckout git_ensure_cleancheckout
|
||||
git_is_ancestor git_should_ff git_should_push
|
||||
git_is_merged
|
||||
)
|
||||
function git_check_gitvcs() {
|
||||
[ "$(_vcs_get_type "$(_vcs_get_dir)")" == git ]
|
||||
|
@ -596,6 +600,46 @@ function git_ensure_cleancheckout() {
|
|||
git_check_cleancheckout || die "Vous avez des modifications locales. Enregistrez ces modifications avant de continuer"
|
||||
}
|
||||
|
||||
function __git_check_can_ff() {
|
||||
[ "$1" == "$(git merge-base "$1" "$2")" ]
|
||||
}
|
||||
function git_is_ancestor() {
|
||||
# vérifier que la branche $1 est un ancêtre direct de la branche $2, qui
|
||||
# vaut par défaut remotes/origin/$1
|
||||
# note: cette fonction retourne vrai si $1 et $2 identifient le même commit
|
||||
local b="$1" o="${2:-remotes/origin/$1}"
|
||||
b="$(git rev-parse --verify "$b")" || return 1
|
||||
o="$(git rev-parse --verify "$o")" || return 1
|
||||
__git_check_can_ff "$b" "$o"
|
||||
}
|
||||
function git_should_ff() {
|
||||
# vérifier si la branche $1 devrait être fast-forwardée à partir de la
|
||||
# branche d'origine $2, qui vaut par défaut remotes/origin/$1
|
||||
# note: cette fonction est similaire à git_is_ancestor(), mais retourne
|
||||
# false si $1 et $2 identifient le même commit
|
||||
local b="$1" o="${2:-remotes/origin/$1}"
|
||||
b="$(git rev-parse --verify "$b")" || return 1
|
||||
o="$(git rev-parse --verify "$o")" || return 1
|
||||
[ "$b" != "$o" ] || return 1
|
||||
__git_check_can_ff "$b" "$o"
|
||||
}
|
||||
function git_should_push() {
|
||||
# vérifier si la branche $1 devrait être poussée vers la branche de même nom
|
||||
# dans l'origine $2(=origin), parce que l'origin peut-être fast-forwardée à
|
||||
# partir de cette branche.
|
||||
git_should_ff "remotes/${2:-origin}/$1" "$1"
|
||||
}
|
||||
|
||||
function git_is_merged() {
|
||||
# vérifier que les branches $1 et $2 ont un ancêtre commun, et que la
|
||||
# branche $1 a été complètement fusionnée dans la branche destination $2
|
||||
local b="$1" d="$2"
|
||||
b="$(git rev-parse --verify "$b")" || return 1
|
||||
d="$(git rev-parse --verify "$d")" || return 1
|
||||
[ -n "$(git merge-base "$b" "$d")" ] || return 1
|
||||
[ -z "$(git rev-list "$d..$b")" ]
|
||||
}
|
||||
|
||||
# fonctions pour git annex
|
||||
function git_annex_initial() {
|
||||
# sur le dépôt $1 fraichement cloné, vérifier s'il faut faire git annex
|
||||
|
|
Loading…
Reference in New Issue