implémenter l'action push
This commit is contained in:
parent
423d971a13
commit
6353686d4a
118
ulib/vcs
118
ulib/vcs
|
@ -6,7 +6,7 @@ uprovide vcs
|
|||
urequire base
|
||||
|
||||
################################################################################
|
||||
# Général
|
||||
# Général
|
||||
|
||||
function __vcs_get_type() {
|
||||
# Afficher le type de vcs du répertoire $1. L'arborescence n'est pas
|
||||
|
@ -196,9 +196,7 @@ function vcs_add_help() {
|
|||
uecho "uproject $1: Ajouter les fichiers spécifiés dans le gestionnaire de version
|
||||
|
||||
USAGE
|
||||
uproject $1 <files...>
|
||||
|
||||
OPTIONS"
|
||||
uproject $1 <files...>"
|
||||
}
|
||||
function vcs_add() {
|
||||
# le répertoire de référence est le répertoire du premier fichier ajouté
|
||||
|
@ -210,9 +208,7 @@ function vcs_remove_help() {
|
|||
uecho "uproject $1: Suppprimer les fichiers versionnés spécifiés du gestionaire de version
|
||||
|
||||
USAGE
|
||||
uproject $1 <files...>
|
||||
|
||||
OPTIONS"
|
||||
uproject $1 <files...>"
|
||||
}
|
||||
function vcs_remove() {
|
||||
# le répertoire de référence est le répertoire du premier fichier supprimé
|
||||
|
@ -224,9 +220,7 @@ function vcs_copy_help() {
|
|||
uecho "uproject $1: Copier les fichiers versionnés spécifiés
|
||||
|
||||
USAGE
|
||||
uproject $1 <sources...> <dest>
|
||||
|
||||
OPTIONS"
|
||||
uproject $1 <sources...> <dest>"
|
||||
}
|
||||
function vcs_copy() {
|
||||
# le répertoire de référence est le répertoire de destination
|
||||
|
@ -239,9 +233,7 @@ function vcs_move_help() {
|
|||
uecho "uproject $1: Déplacer les fichiers versionnés spécifiés
|
||||
|
||||
USAGE
|
||||
uproject $1 <sources...> <dest>
|
||||
|
||||
OPTIONS"
|
||||
uproject $1 <sources...> <dest>"
|
||||
}
|
||||
function vcs_move() {
|
||||
# le répertoire de référence est le répertoire de destination
|
||||
|
@ -254,9 +246,7 @@ function vcs_mkdir_help() {
|
|||
uecho "uproject $1: Créer un nouveau répertoire versionné
|
||||
|
||||
USAGE
|
||||
uproject $1
|
||||
|
||||
OPTIONS"
|
||||
uproject $1"
|
||||
}
|
||||
function vcs_mkdir() {
|
||||
# le répertoire de référence est le répertoire du premier répertoire créé
|
||||
|
@ -275,7 +265,7 @@ Si files n'est pas spécifié, prendre tous les fichiers modifiés actuellement
|
|||
OPTIONS
|
||||
-a Enregistrer les modifications sur tous les fichiers modifiés.
|
||||
-c Enregistrer uniquement les modifications de l'index. (si applicable)
|
||||
-l Garder le commit local, i.e. les modifications ne sont pas pushées sur
|
||||
-l Garder le commit local, i.e. les modifications ne sont pas poussées sur
|
||||
le serveur. (si applicable)"
|
||||
}
|
||||
function vcs_commit() {
|
||||
|
@ -307,6 +297,17 @@ function vcs_update() {
|
|||
_vcs_dispatch "" update "$@"
|
||||
}
|
||||
########################################
|
||||
function vcs_push_help() {
|
||||
local OENC="$UTF8"
|
||||
uecho "uproject $1: Pousser les modifications locales sur le serveur
|
||||
|
||||
USAGE
|
||||
uproject $1"
|
||||
}
|
||||
function vcs_push() {
|
||||
_vcs_dispatch "" push "$@"
|
||||
}
|
||||
########################################
|
||||
function vcs_diff_help() {
|
||||
local OENC="$UTF8"
|
||||
uecho "uproject $1: Afficher les différences
|
||||
|
@ -362,12 +363,13 @@ function git_mkdir() {
|
|||
git mkdir "$@"
|
||||
}
|
||||
function git_commit() {
|
||||
local all=auto nopush args
|
||||
local all=auto push=auto args
|
||||
normyesval nopush "$NOPUSH"
|
||||
parse_opts + "${PRETTYOPTS[@]}" \
|
||||
-a all=1 \
|
||||
-c all= \
|
||||
-l nopush=1 \
|
||||
-a,--all all=1 \
|
||||
-c,--cached all= \
|
||||
-p,--push push=1 \
|
||||
-l,--local push= \
|
||||
@ args -- "$@" && set -- "${args[@]}" || {
|
||||
eerror "$args"
|
||||
return 1
|
||||
|
@ -392,12 +394,17 @@ function git_commit() {
|
|||
fi
|
||||
else
|
||||
[ -n "$all" ] && cmd=("${cmd[@]}" -a)
|
||||
fi
|
||||
"${cmd[@]}" "$@"
|
||||
if [ -z "$nopush" ]; then
|
||||
[ -n "$(git config --get remote.origin.url)" ] &&
|
||||
git push origin master
|
||||
fi
|
||||
|
||||
if ! "${cmd[@]}" "$@"; then
|
||||
[ "$push" == auto ] && return 1
|
||||
fi
|
||||
if [ "$push" == auto ]; then
|
||||
git_push --auto || return
|
||||
elif [ -n "$push" ]; then
|
||||
git_push --force || return
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
function git_status() {
|
||||
git status "$@"
|
||||
|
@ -413,6 +420,49 @@ function git_update() {
|
|||
|
||||
git pull "$@"
|
||||
}
|
||||
function git_push() {
|
||||
local auto force args
|
||||
parse_opts + "${PRETTYOPTS[@]}" \
|
||||
-a,--auto auto=1 \
|
||||
-f,--force force=1 \
|
||||
@ args -- "$@" && set -- "${args[@]}" || {
|
||||
eerror "$args"
|
||||
return 1
|
||||
}
|
||||
|
||||
if [ $# -gt 0 ]; then
|
||||
# si des arguments sont spécifiés, les passer à git sans modification
|
||||
git push "$@"
|
||||
return $?
|
||||
fi
|
||||
|
||||
# sinon on push vers origin. vérifier la présence du remote
|
||||
[ -n "$(git config --get remote.origin.url)" ] || {
|
||||
if [ -n "$auto" ]; then
|
||||
# en mode automatique, ignorer l'absence de remote
|
||||
return 0
|
||||
else
|
||||
eerror "Aucun remote origin n'est défini"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# puis calculer la branche à pusher
|
||||
local branch="$(git rev-parse --abbrev-ref HEAD 2>/dev/null)"
|
||||
local origin="$(git config --get "branch.$branch.remote")"
|
||||
if [ -n "$branch" -a "$origin" == origin ]; then
|
||||
if [ -n "$auto" ]; then
|
||||
# en mode automatique, ne pousser que la branche courante
|
||||
git push origin "$branch" || return
|
||||
else
|
||||
# pousser toutes les branches
|
||||
git push || return
|
||||
fi
|
||||
elif [ -n "$force" ]; then
|
||||
git push || return
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
function git_diff() {
|
||||
local dummy cached args
|
||||
parse_opts + "${PRETTYOPTS[@]}" \
|
||||
|
@ -477,6 +527,14 @@ function svn_update() {
|
|||
|
||||
svn update ${ignore_externals:+--ignore-externals} "$@"
|
||||
}
|
||||
function svn_push() {
|
||||
local args
|
||||
parse_opts + "${PRETTYOPTS[@]}" \
|
||||
@ args -- "$@" && set -- "${args[@]}" || {
|
||||
eerror "$args"
|
||||
return 1
|
||||
}
|
||||
}
|
||||
function svn_diff() {
|
||||
local dummy revision args tmpfile0 tmpfile
|
||||
parse_opts + "${PRETTYOPTS[@]}" \
|
||||
|
@ -592,6 +650,14 @@ function cvs_update() {
|
|||
|
||||
cvs update "$@"
|
||||
}
|
||||
function cvs_push() {
|
||||
local args
|
||||
parse_opts + "${PRETTYOPTS[@]}" \
|
||||
@ args -- "$@" && set -- "${args[@]}" || {
|
||||
eerror "$args"
|
||||
return 1
|
||||
}
|
||||
}
|
||||
function cvs_diff() {
|
||||
local dummy revision args tmpfile
|
||||
parse_opts + "${PRETTYOPTS[@]}" \
|
||||
|
|
5
uproject
5
uproject
|
@ -72,7 +72,7 @@ COMMANDS
|
|||
SCRIPT_ALIASES=(
|
||||
pv:vcs
|
||||
pa:add prm:remove pcp:copy pmv:move pmd:mkdir
|
||||
pci:commit pu:update pdiff:diff
|
||||
pci:commit pu:update pp:push pdiff:diff
|
||||
pnew:new
|
||||
pgr:grep
|
||||
paddml:addml
|
||||
|
@ -88,12 +88,13 @@ CMD_ALIASES=(
|
|||
ci:commit
|
||||
s:status st:status
|
||||
u:update upd:update
|
||||
p:push
|
||||
gr:grep
|
||||
)
|
||||
DEFAULT_CMD=status
|
||||
PY_CMDS=(new)
|
||||
VCS_CMDS=(getvcs getroot getrepos geturl vcs add remove copy move mkdir commit status update push diff tag)
|
||||
ML_CMDS=(printml addml)
|
||||
VCS_CMDS=(getvcs getroot getrepos geturl vcs add remove copy move mkdir commit status update diff tag)
|
||||
|
||||
if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
|
||||
# créer les liens
|
||||
|
|
Loading…
Reference in New Issue