]> git.ipfire.org Git - thirdparty/git.git/commitdiff
completion: teach archive to use __gitcomp_builtin
authorDenton Liu <liu.denton@gmail.com>
Thu, 12 Sep 2019 19:43:57 +0000 (12:43 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 12 Sep 2019 20:45:29 +0000 (13:45 -0700)
Currently, _git_archive() uses a hardcoded list of options for its
completion. However, we can use __gitcomp_builtin() to get a dynamically
generated list of completions instead.

Teach _git_archive() to use __gitcomp_builtin() so that newly
implemented options in archive will be automatically completed without
any mucking around in git-completion.bash. While we're at it, teach it
to complete the missing `--worktree-attributes` option as well.

Unfortunately, since some args are passed through from cmd_archive() to
write_archive() (which calls parse_archive_args()), there's no way that a
`--git-completion-helper` arg can end up reaching parse_archive_args()
since the first call to parse_options() will end up calling exit(0). As
a result, we have to carry the options supported by write_archive() in
the hardcoded string.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-completion.bash

index 365edff6394f90c85f72d7071c8022312bfb161f..7b1ab46f0bbcbebdfd783591dcd22588e4752da7 100644 (file)
@@ -1250,10 +1250,7 @@ _git_archive ()
                return
                ;;
        --*)
-               __gitcomp "
-                       --format= --list --verbose
-                       --prefix= --remote= --exec= --output
-                       "
+               __gitcomp_builtin archive "--format= --list --verbose --prefix= --worktree-attributes"
                return
                ;;
        esac