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.
|
||||
|
||||
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
|
||||
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-i18n
|
||||
set_reflog_action "pull${1+ $*}"
|
||||
set_reflog_action "pull${args+ $args}"
|
||||
require_work_tree_exists
|
||||
cd_to_toplevel
|
||||
|
||||
@ -87,17 +127,17 @@ do
|
||||
diffstat=--stat ;;
|
||||
--log|--log=*|--no-log)
|
||||
log_arg="$1" ;;
|
||||
--no-c|--no-co|--no-com|--no-comm|--no-commi|--no-commit)
|
||||
--no-commit)
|
||||
no_commit=--no-commit ;;
|
||||
--c|--co|--com|--comm|--commi|--commit)
|
||||
--commit)
|
||||
no_commit=--commit ;;
|
||||
-e|--edit)
|
||||
edit=--edit ;;
|
||||
--no-edit)
|
||||
edit=--no-edit ;;
|
||||
--sq|--squ|--squa|--squas|--squash)
|
||||
--squash)
|
||||
squash=--squash ;;
|
||||
--no-sq|--no-squ|--no-squa|--no-squas|--no-squash)
|
||||
--no-squash)
|
||||
squash=--no-squash ;;
|
||||
--ff)
|
||||
no_ff=--ff ;;
|
||||
@ -105,39 +145,19 @@ do
|
||||
no_ff=--no-ff ;;
|
||||
--ff-only)
|
||||
ff_only=--ff-only ;;
|
||||
-s=*|--s=*|--st=*|--str=*|--stra=*|--strat=*|--strate=*|\
|
||||
--strateg=*|--strategy=*|\
|
||||
-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 "
|
||||
-s*|--strategy=*)
|
||||
strategy_args="$strategy_args $1"
|
||||
;;
|
||||
-X*)
|
||||
case "$#,$1" in
|
||||
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 "
|
||||
-X*|--strategy-option=*)
|
||||
merge_args="$merge_args $(git rev-parse --sq-quote "$1")"
|
||||
;;
|
||||
-r=*|--r=*|--re=*|--reb=*|--reba=*|--rebas=*|--rebase=*)
|
||||
-r*|--rebase=*)
|
||||
rebase="${1#*=}"
|
||||
;;
|
||||
-r|--r|--re|--reb|--reba|--rebas|--rebase)
|
||||
--rebase)
|
||||
rebase=true
|
||||
;;
|
||||
--no-r|--no-re|--no-reb|--no-reba|--no-rebas|--no-rebase)
|
||||
--no-rebase)
|
||||
rebase=false
|
||||
;;
|
||||
--recurse-submodules)
|
||||
@ -164,7 +184,7 @@ do
|
||||
-S*)
|
||||
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
|
||||
;;
|
||||
--all|--no-all)
|
||||
@ -196,11 +216,8 @@ do
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
usage
|
||||
;;
|
||||
*)
|
||||
break
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
|
Loading…
Reference in New Issue
Block a user