]> git.ipfire.org Git - thirdparty/git.git/commitdiff
contrib/subtree: parse using --stuck-long
authorPatrik Weiskircher <patrik@pspdfkit.com>
Wed, 4 Jun 2025 14:16:36 +0000 (14:16 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 4 Jun 2025 16:32:17 +0000 (09:32 -0700)
Optional parameter handling only works unambiguous with git rev-parse
--parseopt when using the --stuck-long option. To prepare for future commits
which add flags with optional parameters, parse with --stuck-long.

Signed-off-by: Patrik Weiskircher <patrik@pspdfkit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/subtree/git-subtree.sh

index 15ae86db1b277a8be125a055b40daffc98277994..60b2431b8bbaef24b4602cab83e9ab38de40e365 100755 (executable)
@@ -115,7 +115,7 @@ main () {
        then
                set -- -h
        fi
-       set_args="$(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?)"
+       set_args="$(echo "$OPTS_SPEC" | git rev-parse --parseopt --stuck-long -- "$@" || echo exit $?)"
        eval "$set_args"
        . git-sh-setup
        require_work_tree
@@ -131,9 +131,6 @@ main () {
                opt="$1"
                shift
                case "$opt" in
-                       --annotate|-b|-P|-m|--onto)
-                               shift
-                               ;;
                        --rejoin)
                                arg_split_rejoin=1
                                ;;
@@ -177,42 +174,37 @@ main () {
                shift
 
                case "$opt" in
-               -q)
+               --quiet)
                        arg_quiet=1
                        ;;
-               -d)
+               --debug)
                        arg_debug=1
                        ;;
-               --annotate)
+               --annotate=*)
                        test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command"
-                       arg_split_annotate="$1"
-                       shift
+                       arg_split_annotate="${opt#*=}"
                        ;;
                --no-annotate)
                        test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command"
                        arg_split_annotate=
                        ;;
-               -b)
+               --branch=*)
                        test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command"
-                       arg_split_branch="$1"
-                       shift
+                       arg_split_branch="${opt#*=}"
                        ;;
-               -P)
-                       arg_prefix="${1%/}"
-                       shift
+               --prefix=*)
+                       arg_prefix="${opt#*=}"
                        ;;
-               -m)
+               --message=*)
                        test -n "$allow_addmerge" || die_incompatible_opt "$opt" "$arg_command"
-                       arg_addmerge_message="$1"
-                       shift
+                       arg_addmerge_message="${opt#*=}"
                        ;;
                --no-prefix)
                        arg_prefix=
                        ;;
-               --onto)
+               --onto=*)
                        test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command"
-                       arg_split_onto="$1"
-                       shift
+                       arg_split_onto="${opt#*=}"
                        ;;
                --no-onto)
                        test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command"