subtree: don't have loose code outside of a function
Shove all of the loose code inside of a main() function. This comes down to personal preference more than anything else. A preference that I've developed over years of maintaining large Bash scripts, but still a mere personal preference. In this specific case, it's also moving the `set -- -h`, the `git rev-parse --parseopt`, and the `. git-sh-setup` to be closer to all the rest of the argument parsing, which is a readability win on its own, IMO. "Ignore space change" is probably helpful when viewing this diff. Signed-off-by: Luke Shumaker <lukeshu@datawire.io> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
b04538d99f
commit
5a3569774f
@ -4,10 +4,7 @@
|
||||
#
|
||||
# Copyright (C) 2009 Avery Pennarun <apenwarr@gmail.com>
|
||||
#
|
||||
if test $# -eq 0
|
||||
then
|
||||
set -- -h
|
||||
fi
|
||||
|
||||
OPTS_SPEC="\
|
||||
git subtree add --prefix=<prefix> <commit>
|
||||
git subtree add --prefix=<prefix> <repository> <ref>
|
||||
@ -30,12 +27,8 @@ rejoin merge the new branch back into HEAD
|
||||
options for 'add', 'merge', and 'pull'
|
||||
squash merge subtree changes as a single commit
|
||||
"
|
||||
eval "$(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?)"
|
||||
|
||||
PATH=$PATH:$(git --exec-path)
|
||||
. git-sh-setup
|
||||
|
||||
require_work_tree
|
||||
|
||||
quiet=
|
||||
branch=
|
||||
@ -84,126 +77,138 @@ ensure_single_rev () {
|
||||
fi
|
||||
}
|
||||
|
||||
while test $# -gt 0
|
||||
do
|
||||
opt="$1"
|
||||
main () {
|
||||
if test $# -eq 0
|
||||
then
|
||||
set -- -h
|
||||
fi
|
||||
eval "$(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?)"
|
||||
. git-sh-setup
|
||||
require_work_tree
|
||||
|
||||
while test $# -gt 0
|
||||
do
|
||||
opt="$1"
|
||||
shift
|
||||
|
||||
case "$opt" in
|
||||
-q)
|
||||
quiet=1
|
||||
;;
|
||||
-d)
|
||||
debug=1
|
||||
;;
|
||||
--annotate)
|
||||
annotate="$1"
|
||||
shift
|
||||
;;
|
||||
--no-annotate)
|
||||
annotate=
|
||||
;;
|
||||
-b)
|
||||
branch="$1"
|
||||
shift
|
||||
;;
|
||||
-P)
|
||||
prefix="${1%/}"
|
||||
shift
|
||||
;;
|
||||
-m)
|
||||
message="$1"
|
||||
shift
|
||||
;;
|
||||
--no-prefix)
|
||||
prefix=
|
||||
;;
|
||||
--onto)
|
||||
onto="$1"
|
||||
shift
|
||||
;;
|
||||
--no-onto)
|
||||
onto=
|
||||
;;
|
||||
--rejoin)
|
||||
rejoin=1
|
||||
;;
|
||||
--no-rejoin)
|
||||
rejoin=
|
||||
;;
|
||||
--ignore-joins)
|
||||
ignore_joins=1
|
||||
;;
|
||||
--no-ignore-joins)
|
||||
ignore_joins=
|
||||
;;
|
||||
--squash)
|
||||
squash=1
|
||||
;;
|
||||
--no-squash)
|
||||
squash=
|
||||
;;
|
||||
--)
|
||||
break
|
||||
;;
|
||||
*)
|
||||
die "Unexpected option: $opt"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
command="$1"
|
||||
shift
|
||||
|
||||
case "$opt" in
|
||||
-q)
|
||||
quiet=1
|
||||
case "$command" in
|
||||
add|merge|pull)
|
||||
default=
|
||||
;;
|
||||
-d)
|
||||
debug=1
|
||||
;;
|
||||
--annotate)
|
||||
annotate="$1"
|
||||
shift
|
||||
;;
|
||||
--no-annotate)
|
||||
annotate=
|
||||
;;
|
||||
-b)
|
||||
branch="$1"
|
||||
shift
|
||||
;;
|
||||
-P)
|
||||
prefix="${1%/}"
|
||||
shift
|
||||
;;
|
||||
-m)
|
||||
message="$1"
|
||||
shift
|
||||
;;
|
||||
--no-prefix)
|
||||
prefix=
|
||||
;;
|
||||
--onto)
|
||||
onto="$1"
|
||||
shift
|
||||
;;
|
||||
--no-onto)
|
||||
onto=
|
||||
;;
|
||||
--rejoin)
|
||||
rejoin=1
|
||||
;;
|
||||
--no-rejoin)
|
||||
rejoin=
|
||||
;;
|
||||
--ignore-joins)
|
||||
ignore_joins=1
|
||||
;;
|
||||
--no-ignore-joins)
|
||||
ignore_joins=
|
||||
;;
|
||||
--squash)
|
||||
squash=1
|
||||
;;
|
||||
--no-squash)
|
||||
squash=
|
||||
;;
|
||||
--)
|
||||
break
|
||||
split|push)
|
||||
default="--default HEAD"
|
||||
;;
|
||||
*)
|
||||
die "Unexpected option: $opt"
|
||||
die "Unknown command '$command'"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
command="$1"
|
||||
shift
|
||||
|
||||
case "$command" in
|
||||
add|merge|pull)
|
||||
default=
|
||||
;;
|
||||
split|push)
|
||||
default="--default HEAD"
|
||||
;;
|
||||
*)
|
||||
die "Unknown command '$command'"
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -z "$prefix"
|
||||
then
|
||||
die "You must provide the --prefix option."
|
||||
fi
|
||||
|
||||
case "$command" in
|
||||
add)
|
||||
test -e "$prefix" &&
|
||||
die "prefix '$prefix' already exists."
|
||||
;;
|
||||
*)
|
||||
test -e "$prefix" ||
|
||||
die "'$prefix' does not exist; use 'git subtree add'"
|
||||
;;
|
||||
esac
|
||||
|
||||
dir="$(dirname "$prefix/.")"
|
||||
|
||||
if test "$command" != "pull" &&
|
||||
test "$command" != "add" &&
|
||||
test "$command" != "push"
|
||||
then
|
||||
revs=$(git rev-parse $default --revs-only "$@") || exit $?
|
||||
dirs=$(git rev-parse --no-revs --no-flags "$@") || exit $?
|
||||
ensure_single_rev $revs
|
||||
if test -n "$dirs"
|
||||
if test -z "$prefix"
|
||||
then
|
||||
die "Error: Use --prefix instead of bare filenames."
|
||||
die "You must provide the --prefix option."
|
||||
fi
|
||||
fi
|
||||
|
||||
debug "command: {$command}"
|
||||
debug "quiet: {$quiet}"
|
||||
debug "revs: {$revs}"
|
||||
debug "dir: {$dir}"
|
||||
debug "opts: {$*}"
|
||||
debug
|
||||
case "$command" in
|
||||
add)
|
||||
test -e "$prefix" &&
|
||||
die "prefix '$prefix' already exists."
|
||||
;;
|
||||
*)
|
||||
test -e "$prefix" ||
|
||||
die "'$prefix' does not exist; use 'git subtree add'"
|
||||
;;
|
||||
esac
|
||||
|
||||
dir="$(dirname "$prefix/.")"
|
||||
|
||||
if test "$command" != "pull" &&
|
||||
test "$command" != "add" &&
|
||||
test "$command" != "push"
|
||||
then
|
||||
revs=$(git rev-parse $default --revs-only "$@") || exit $?
|
||||
dirs=$(git rev-parse --no-revs --no-flags "$@") || exit $?
|
||||
ensure_single_rev $revs
|
||||
if test -n "$dirs"
|
||||
then
|
||||
die "Error: Use --prefix instead of bare filenames."
|
||||
fi
|
||||
fi
|
||||
|
||||
debug "command: {$command}"
|
||||
debug "quiet: {$quiet}"
|
||||
debug "revs: {$revs}"
|
||||
debug "dir: {$dir}"
|
||||
debug "opts: {$*}"
|
||||
debug
|
||||
|
||||
"cmd_$command" "$@"
|
||||
}
|
||||
|
||||
cache_setup () {
|
||||
cachedir="$GIT_DIR/subtree-cache/$$"
|
||||
@ -898,4 +903,4 @@ cmd_push () {
|
||||
fi
|
||||
}
|
||||
|
||||
"cmd_$command" "$@"
|
||||
main "$@"
|
||||
|
Loading…
Reference in New Issue
Block a user