pull: use git-rev-parse --parseopt for option parsing
To enable unambiguous parsing of abbreviated options, bundled short options, separate form options and to provide consistent usage help, use git-rev-parse --parseopt for option parsing. With this, simplify the option parsing code. Signed-off-by: Paul Tan <pyokagan@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
eb2a8d9ed3
commit
e3b601da2a
97
git-pull.sh
97
git-pull.sh
@ -4,13 +4,53 @@
|
|||||||
#
|
#
|
||||||
# Fetch one or more remote refs and merge it/them into the current HEAD.
|
# Fetch one or more remote refs and merge it/them into the current HEAD.
|
||||||
|
|
||||||
USAGE='[-n | --no-stat] [--[no-]commit] [--[no-]squash] [--[no-]ff|--ff-only] [--[no-]rebase|--rebase=preserve] [-s strategy]... [<fetch-options>] <repo> <head>...'
|
|
||||||
LONG_USAGE='Fetch one or more remote refs and integrate it/them with the current HEAD.'
|
|
||||||
SUBDIRECTORY_OK=Yes
|
SUBDIRECTORY_OK=Yes
|
||||||
OPTIONS_SPEC=
|
OPTIONS_KEEPDASHDASH=
|
||||||
|
OPTIONS_STUCKLONG=Yes
|
||||||
|
OPTIONS_SPEC="\
|
||||||
|
git pull [options] [<repository> [<refspec>...]]
|
||||||
|
|
||||||
|
Fetch one or more remote refs and integrate it/them with the current HEAD.
|
||||||
|
--
|
||||||
|
v,verbose be more verbose
|
||||||
|
q,quiet be more quiet
|
||||||
|
progress force progress reporting
|
||||||
|
|
||||||
|
Options related to merging
|
||||||
|
r,rebase?false|true|preserve incorporate changes by rebasing rather than merging
|
||||||
|
n! do not show a diffstat at the end of the merge
|
||||||
|
stat show a diffstat at the end of the merge
|
||||||
|
summary (synonym to --stat)
|
||||||
|
log?n add (at most <n>) entries from shortlog to merge commit message
|
||||||
|
squash create a single commit instead of doing a merge
|
||||||
|
commit perform a commit if the merge succeeds (default)
|
||||||
|
e,edit edit message before committing
|
||||||
|
ff allow fast-forward
|
||||||
|
ff-only! abort if fast-forward is not possible
|
||||||
|
verify-signatures verify that the named commit has a valid GPG signature
|
||||||
|
s,strategy=strategy merge strategy to use
|
||||||
|
X,strategy-option=option option for selected merge strategy
|
||||||
|
S,gpg-sign?key-id GPG sign commit
|
||||||
|
|
||||||
|
Options related to fetching
|
||||||
|
all fetch from all remotes
|
||||||
|
a,append append to .git/FETCH_HEAD instead of overwriting
|
||||||
|
upload-pack=path path to upload pack on remote end
|
||||||
|
f,force force overwrite of local branch
|
||||||
|
t,tags fetch all tags and associated objects
|
||||||
|
p,prune prune remote-tracking branches no longer on remote
|
||||||
|
recurse-submodules?on-demand control recursive fetching of submodules
|
||||||
|
dry-run dry run
|
||||||
|
k,keep keep downloaded pack
|
||||||
|
depth=depth deepen history of shallow clone
|
||||||
|
unshallow convert to a complete repository
|
||||||
|
update-shallow accept refs that update .git/shallow
|
||||||
|
refmap=refmap specify fetch refmap
|
||||||
|
"
|
||||||
|
test $# -gt 0 && args="$*"
|
||||||
. git-sh-setup
|
. git-sh-setup
|
||||||
. git-sh-i18n
|
. git-sh-i18n
|
||||||
set_reflog_action "pull${1+ $*}"
|
set_reflog_action "pull${args+ $args}"
|
||||||
require_work_tree_exists
|
require_work_tree_exists
|
||||||
cd_to_toplevel
|
cd_to_toplevel
|
||||||
|
|
||||||
@ -87,17 +127,17 @@ do
|
|||||||
diffstat=--stat ;;
|
diffstat=--stat ;;
|
||||||
--log|--log=*|--no-log)
|
--log|--log=*|--no-log)
|
||||||
log_arg="$1" ;;
|
log_arg="$1" ;;
|
||||||
--no-c|--no-co|--no-com|--no-comm|--no-commi|--no-commit)
|
--no-commit)
|
||||||
no_commit=--no-commit ;;
|
no_commit=--no-commit ;;
|
||||||
--c|--co|--com|--comm|--commi|--commit)
|
--commit)
|
||||||
no_commit=--commit ;;
|
no_commit=--commit ;;
|
||||||
-e|--edit)
|
-e|--edit)
|
||||||
edit=--edit ;;
|
edit=--edit ;;
|
||||||
--no-edit)
|
--no-edit)
|
||||||
edit=--no-edit ;;
|
edit=--no-edit ;;
|
||||||
--sq|--squ|--squa|--squas|--squash)
|
--squash)
|
||||||
squash=--squash ;;
|
squash=--squash ;;
|
||||||
--no-sq|--no-squ|--no-squa|--no-squas|--no-squash)
|
--no-squash)
|
||||||
squash=--no-squash ;;
|
squash=--no-squash ;;
|
||||||
--ff)
|
--ff)
|
||||||
no_ff=--ff ;;
|
no_ff=--ff ;;
|
||||||
@ -105,39 +145,19 @@ do
|
|||||||
no_ff=--no-ff ;;
|
no_ff=--no-ff ;;
|
||||||
--ff-only)
|
--ff-only)
|
||||||
ff_only=--ff-only ;;
|
ff_only=--ff-only ;;
|
||||||
-s=*|--s=*|--st=*|--str=*|--stra=*|--strat=*|--strate=*|\
|
-s*|--strategy=*)
|
||||||
--strateg=*|--strategy=*|\
|
strategy_args="$strategy_args $1"
|
||||||
-s|--s|--st|--str|--stra|--strat|--strate|--strateg|--strategy)
|
|
||||||
case "$#,$1" in
|
|
||||||
*,*=*)
|
|
||||||
strategy=$(expr "z$1" : 'z-[^=]*=\(.*\)') ;;
|
|
||||||
1,*)
|
|
||||||
usage ;;
|
|
||||||
*)
|
|
||||||
strategy="$2"
|
|
||||||
shift ;;
|
|
||||||
esac
|
|
||||||
strategy_args="${strategy_args}-s $strategy "
|
|
||||||
;;
|
;;
|
||||||
-X*)
|
-X*|--strategy-option=*)
|
||||||
case "$#,$1" in
|
merge_args="$merge_args $(git rev-parse --sq-quote "$1")"
|
||||||
1,-X)
|
|
||||||
usage ;;
|
|
||||||
*,-X)
|
|
||||||
xx="-X $(git rev-parse --sq-quote "$2")"
|
|
||||||
shift ;;
|
|
||||||
*,*)
|
|
||||||
xx=$(git rev-parse --sq-quote "$1") ;;
|
|
||||||
esac
|
|
||||||
merge_args="$merge_args$xx "
|
|
||||||
;;
|
;;
|
||||||
-r=*|--r=*|--re=*|--reb=*|--reba=*|--rebas=*|--rebase=*)
|
-r*|--rebase=*)
|
||||||
rebase="${1#*=}"
|
rebase="${1#*=}"
|
||||||
;;
|
;;
|
||||||
-r|--r|--re|--reb|--reba|--rebas|--rebase)
|
--rebase)
|
||||||
rebase=true
|
rebase=true
|
||||||
;;
|
;;
|
||||||
--no-r|--no-re|--no-reb|--no-reba|--no-rebas|--no-rebase)
|
--no-rebase)
|
||||||
rebase=false
|
rebase=false
|
||||||
;;
|
;;
|
||||||
--recurse-submodules)
|
--recurse-submodules)
|
||||||
@ -164,7 +184,7 @@ do
|
|||||||
-S*)
|
-S*)
|
||||||
gpg_sign_args=$(git rev-parse --sq-quote "$1")
|
gpg_sign_args=$(git rev-parse --sq-quote "$1")
|
||||||
;;
|
;;
|
||||||
--d|--dr|--dry|--dry-|--dry-r|--dry-ru|--dry-run)
|
--dry-run)
|
||||||
dry_run=--dry-run
|
dry_run=--dry-run
|
||||||
;;
|
;;
|
||||||
--all|--no-all)
|
--all|--no-all)
|
||||||
@ -196,11 +216,8 @@ do
|
|||||||
shift
|
shift
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
-*)
|
|
||||||
usage
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
break
|
usage
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
|
Loading…
x
Reference in New Issue
Block a user