création de la branche develop

This commit is contained in:
Jephte CLAIN 2015-02-19 17:04:59 +04:00
parent 359563b423
commit 34e020e198
2 changed files with 46 additions and 7 deletions

View File

@ -517,39 +517,72 @@ function git_tag() {
# Fonctions avancées de git
__VCS_GIT_ADVANCED_MAP=(
cg:git_check_gitvcs eg:git_ensure_gitvcs
lbs:git_list_branches rbs:git_list_rbranches
hlb:git_have_branch hrb:git_have_rbranch
gb:git_get_branch ib:git_is_branch
hr:git_has_remote tb:git_track_branch
ic:git_check_cleancheckout ec:git_ensure_cleancheckout
hr:git_have_remote tb:git_track_branch
cc:git_check_cleancheckout ec:git_ensure_cleancheckout
)
__VCS_GIT_ADVANCED=(
git_check_gitvcs git_ensure_gitvcs
git_list_branches git_list_rbranches
git_have_branch git_have_rbranch
git_get_branch git_is_branch
git_has_remote git_track_branch
git_have_remote git_track_branch
git_check_cleancheckout git_ensure_cleancheckout
)
function git_check_gitvcs() {
[ "$(_vcs_get_type "$(_vcs_get_dir)")" == git ]
}
function git_ensure_gitvcs() {
git_check_gitvcs || die "Ce n'est pas un dépôt git"
}
function git_list_branches() {
git for-each-ref refs/heads/ --format='%(refname:short)' | csort
}
function git_list_rbranches() {
git for-each-ref "refs/remotes/${1:-origin}/" --format='%(refname:short)' | csort
}
function git_have_branch() {
git_list_branches | grep -qF "$1"
}
function git_have_rbranch() {
git_list_rbranches "${2:-origin}" | grep -qF "$1"
}
function git_get_branch() {
git rev-parse --abbrev-ref HEAD 2>/dev/null
}
function git_is_branch() {
[ "$(git_get_branch)" == "${1:-master}" ]
}
function git_has_remote() {
function git_have_remote() {
[ -n "$(git config --get remote.${1:-origin}.url)" ]
}
function git_track_branch() {
local branch="$1" origin="${2:-origin}"
[ -n "$branch" ] || return
git_has_remote "$origin" || return
git_have_remote "$origin" || return
[ "$(git config --get branch.$branch.remote)" == "$origin" ] && return
git branch -t --set-upstream "$branch" "$origin/$branch"
}
function git_ensure_branch() {
# retourner 0 si la branche a été créée, 1 si elle existait déjà, 2 en cas d'erreur
local branch="$1" source="${2:-master}" origin="${3:-origin}"
[ -n "$branch" ] || return 2
git_have_branch "$branch" && return 1
if git_have_rbranch "$branch"; then
# une branche du même nom existe dans l'origine. faire une copie de cette branche
git branch -t "$branch" "$origin/$branch" || return 2
else
# créer une nouvelle branche du nom spécifié
git branch "$branch" "$source" || return 2
if git_have_remote "$origin"; then
git push "$origin" "$branch" && git_track_branch "$branch" "$origin"
fi
fi
return 0
}
function git_check_cleancheckout() {
# vérifier qu'il n'y a pas de modification locales dans le dépôt
# correspondant au répertoire courant.

10
pdev
View File

@ -38,11 +38,17 @@ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
git_ensure_gitvcs
if ! git_have_branch develop; then
estepn "Création de la branche develop"
git_ensure_branch develop
[ $? -eq 2 ] && die "Une erreur s'est produite pendant la création de la branche develop"
fi
git_track_branch develop
topic="$1"
source="$2"
setx -a branches=git_list_branches
if [ -n "$topic" ]; then
# Créer/basculer vers une branche de topic
: