Merge branch 'jk/describe-omit-some-refs'
authorJunio C Hamano <gitster@pobox.com>
Mon, 27 Feb 2017 21:57:11 +0000 (13:57 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Feb 2017 21:57:11 +0000 (13:57 -0800)
"git describe" and "git name-rev" have been taught to take more
than one refname patterns to restrict the set of refs to base their
naming output on, and also learned to take negative patterns to
name refs not to be used for naming via their "--exclude" option.

* jk/describe-omit-some-refs:
describe: teach describe negative pattern matches
describe: teach --match to accept multiple patterns
name-rev: add support to exclude refs by pattern match
name-rev: extend --refs to accept multiple patterns
doc: add documentation for OPT_STRING_LIST

1  2 
contrib/completion/git-completion.bash
index 41ee52991d0c1b1fa2a6021133cffecd3ca9deb0,21c2b4315b1ee7df2e53c48529eeddd99955e4c9..a16f33b895a867b96d64257bbb937eb30455f3ef
@@@ -936,7 -936,6 +936,7 @@@ _git_apply (
                        --apply --no-add --exclude=
                        --ignore-whitespace --ignore-space-change
                        --whitespace= --inaccurate-eof --verbose
 +                      --recount --directory=
                        "
                return
        esac
@@@ -948,17 -947,13 +948,17 @@@ _git_add (
        --*)
                __gitcomp "
                        --interactive --refresh --patch --update --dry-run
 -                      --ignore-errors --intent-to-add
 +                      --ignore-errors --intent-to-add --force --edit --chmod=
                        "
                return
        esac
  
 -      # XXX should we check for --update and --all options ?
 -      __git_complete_index_file "--others --modified --directory --no-empty-directory"
 +      local complete_opt="--others --modified --directory --no-empty-directory"
 +      if test -n "$(__git_find_on_cmdline "-u --update")"
 +      then
 +              complete_opt="--modified"
 +      fi
 +      __git_complete_index_file "$complete_opt"
  }
  
  _git_archive ()
        --*)
                __gitcomp "
                        --format= --list --verbose
 -                      --prefix= --remote= --exec=
 +                      --prefix= --remote= --exec= --output
                        "
                return
                ;;
@@@ -1030,7 -1025,6 +1030,7 @@@ _git_branch (
                        --track --no-track --contains --merged --no-merged
                        --set-upstream-to= --edit-description --list
                        --unset-upstream --delete --move --remotes
 +                      --column --no-column --sort= --points-at
                        "
                ;;
        *)
@@@ -1144,8 -1138,6 +1144,8 @@@ _git_clone (
                        --single-branch
                        --branch
                        --recurse-submodules
 +                      --no-single-branch
 +                      --shallow-submodules
                        "
                return
                ;;
@@@ -1187,7 -1179,6 +1187,7 @@@ _git_commit (
                        --reset-author --file= --message= --template=
                        --cleanup= --untracked-files --untracked-files=
                        --verbose --quiet --fixup= --squash=
 +                      --patch --short --date --allow-empty
                        "
                return
        esac
@@@ -1206,7 -1197,8 +1206,8 @@@ _git_describe (
        --*)
                __gitcomp "
                        --all --tags --contains --abbrev= --candidates=
 -                      --exact-match --debug --long --match --always
 +                      --exact-match --debug --long --match --always --first-parent
+                       --exclude
                        "
                return
        esac
  
  __git_diff_algorithms="myers minimal patience histogram"
  
 -__git_diff_submodule_formats="log short"
 +__git_diff_submodule_formats="diff log short"
  
  __git_diff_common_options="--stat --numstat --shortstat --summary
                        --patch-with-stat --name-only --name-status --color
@@@ -1289,7 -1281,6 +1290,7 @@@ __git_fetch_recurse_submodules="yes on-
  __git_fetch_options="
        --quiet --verbose --append --upload-pack --force --keep --depth=
        --tags --no-tags --all --prune --dry-run --recurse-submodules=
 +      --unshallow --update-shallow
  "
  
  _git_fetch ()
@@@ -1339,7 -1330,7 +1340,7 @@@ _git_fsck (
        --*)
                __gitcomp "
                        --tags --root --unreachable --cache --no-reflogs --full
 -                      --strict --verbose --lost-found
 +                      --strict --verbose --lost-found --name-objects
                        "
                return
                ;;
@@@ -1383,8 -1374,6 +1384,8 @@@ _git_grep (
                        --max-depth
                        --count
                        --and --or --not --all-match
 +                      --break --heading --show-function --function-context
 +                      --untracked --no-index
                        "
                return
                ;;
@@@ -1457,12 -1446,6 +1458,12 @@@ _git_ls_files (
  
  _git_ls_remote ()
  {
 +      case "$cur" in
 +      --*)
 +              __gitcomp "--heads --tags --refs --get-url --symref"
 +              return
 +              ;;
 +      esac
        __gitcomp_nl "$(__git_remotes)"
  }
  
@@@ -1570,7 -1553,7 +1571,7 @@@ _git_merge (
        case "$cur" in
        --*)
                __gitcomp "$__git_merge_options
 -                      --rerere-autoupdate --no-rerere-autoupdate --abort"
 +                      --rerere-autoupdate --no-rerere-autoupdate --abort --continue"
                return
        esac
        __gitcomp_nl "$(__git_refs)"
@@@ -1584,7 -1567,7 +1585,7 @@@ _git_mergetool (
                return
                ;;
        --*)
 -              __gitcomp "--tool="
 +              __gitcomp "--tool= --prompt --no-prompt"
                return
                ;;
        esac
@@@ -1692,7 -1675,7 +1693,7 @@@ _git_pull (
        __git_complete_remote_or_refspec
  }
  
 -__git_push_recurse_submodules="check on-demand"
 +__git_push_recurse_submodules="check on-demand only"
  
  __git_complete_force_with_lease ()
  {
@@@ -1752,10 -1735,10 +1753,10 @@@ _git_rebase (
  {
        local dir="$(__gitdir)"
        if [ -f "$dir"/rebase-merge/interactive ]; then
 -              __gitcomp "--continue --skip --abort --edit-todo"
 +              __gitcomp "--continue --skip --abort --quit --edit-todo"
                return
        elif [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
 -              __gitcomp "--continue --skip --abort"
 +              __gitcomp "--continue --skip --abort --quit"
                return
        fi
        __git_complete_strategy && return
@@@ -2392,88 -2375,40 +2393,88 @@@ _git_config (
  
  _git_remote ()
  {
 -      local subcommands="add rename remove set-head set-branches set-url show prune update"
 +      local subcommands="
 +              add rename remove set-head set-branches
 +              get-url set-url show prune update
 +              "
        local subcommand="$(__git_find_on_cmdline "$subcommands")"
        if [ -z "$subcommand" ]; then
 -              __gitcomp "$subcommands"
 +              case "$cur" in
 +              --*)
 +                      __gitcomp "--verbose"
 +                      ;;
 +              *)
 +                      __gitcomp "$subcommands"
 +                      ;;
 +              esac
                return
        fi
  
 -      case "$subcommand" in
 -      rename|remove|set-url|show|prune)
 -              __gitcomp_nl "$(__git_remotes)"
 +      case "$subcommand,$cur" in
 +      add,--*)
 +              __gitcomp "--track --master --fetch --tags --no-tags --mirror="
 +              ;;
 +      add,*)
 +              ;;
 +      set-head,--*)
 +              __gitcomp "--auto --delete"
 +              ;;
 +      set-branches,--*)
 +              __gitcomp "--add"
                ;;
 -      set-head|set-branches)
 +      set-head,*|set-branches,*)
                __git_complete_remote_or_refspec
                ;;
 -      update)
 +      update,--*)
 +              __gitcomp "--prune"
 +              ;;
 +      update,*)
                __gitcomp "$(__git_get_config_variables "remotes")"
                ;;
 +      set-url,--*)
 +              __gitcomp "--push --add --delete"
 +              ;;
 +      get-url,--*)
 +              __gitcomp "--push --all"
 +              ;;
 +      prune,--*)
 +              __gitcomp "--dry-run"
 +              ;;
        *)
 +              __gitcomp_nl "$(__git_remotes)"
                ;;
        esac
  }
  
  _git_replace ()
  {
 +      case "$cur" in
 +      --*)
 +              __gitcomp "--edit --graft --format= --list --delete"
 +              return
 +              ;;
 +      esac
        __gitcomp_nl "$(__git_refs)"
  }
  
 +_git_rerere ()
 +{
 +      local subcommands="clear forget diff remaining status gc"
 +      local subcommand="$(__git_find_on_cmdline "$subcommands")"
 +      if test -z "$subcommand"
 +      then
 +              __gitcomp "$subcommands"
 +              return
 +      fi
 +}
 +
  _git_reset ()
  {
        __git_has_doubledash && return
  
        case "$cur" in
        --*)
 -              __gitcomp "--merge --mixed --hard --soft --patch"
 +              __gitcomp "--merge --mixed --hard --soft --patch --keep"
                return
                ;;
        esac
@@@ -2489,10 -2424,7 +2490,10 @@@ _git_revert (
        fi
        case "$cur" in
        --*)
 -              __gitcomp "--edit --mainline --no-edit --no-commit --signoff"
 +              __gitcomp "
 +                      --edit --mainline --no-edit --no-commit --signoff
 +                      --strategy= --strategy-option=
 +                      "
                return
                ;;
        esac
@@@ -2520,7 -2452,7 +2521,7 @@@ _git_shortlog (
                __gitcomp "
                        $__git_log_common_options
                        $__git_log_shortlog_options
 -                      --numbered --summary
 +                      --numbered --summary --email
                        "
                return
                ;;
@@@ -2625,11 -2557,10 +2626,11 @@@ _git_submodule (
        __git_has_doubledash && return
  
        local subcommands="add status init deinit update summary foreach sync"
 -      if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then
 +      local subcommand="$(__git_find_on_cmdline "$subcommands")"
 +      if [ -z "$subcommand" ]; then
                case "$cur" in
                --*)
 -                      __gitcomp "--quiet --cached"
 +                      __gitcomp "--quiet"
                        ;;
                *)
                        __gitcomp "$subcommands"
                esac
                return
        fi
 +
 +      case "$subcommand,$cur" in
 +      add,--*)
 +              __gitcomp "--branch --force --name --reference --depth"
 +              ;;
 +      status,--*)
 +              __gitcomp "--cached --recursive"
 +              ;;
 +      deinit,--*)
 +              __gitcomp "--force --all"
 +              ;;
 +      update,--*)
 +              __gitcomp "
 +                      --init --remote --no-fetch
 +                      --recommend-shallow --no-recommend-shallow
 +                      --force --rebase --merge --reference --depth --recursive --jobs
 +              "
 +              ;;
 +      summary,--*)
 +              __gitcomp "--cached --files --summary-limit"
 +              ;;
 +      foreach,--*|sync,--*)
 +              __gitcomp "--recursive"
 +              ;;
 +      *)
 +              ;;
 +      esac
  }
  
  _git_svn ()
                        --no-metadata --use-svm-props --use-svnsync-props
                        --log-window-size= --no-checkout --quiet
                        --repack-flags --use-log-author --localtime
 +                      --add-author-from
                        --ignore-paths= --include-paths= $remote_opts
                        "
                local init_opts="
                        --template= --shared= --trunk= --tags=
                        --branches= --stdlayout --minimize-url
                        --no-metadata --use-svm-props --use-svnsync-props
 -                      --rewrite-root= --prefix= --use-log-author
 -                      --add-author-from $remote_opts
 +                      --rewrite-root= --prefix= $remote_opts
                        "
                local cmt_opts="
                        --edit --rmdir --find-copies-harder --copy-similarity=
@@@ -2798,8 -2702,8 +2799,8 @@@ _git_tag (
        --*)
                __gitcomp "
                        --list --delete --verify --annotate --message --file
 -                      --sign --cleanup --local-user --force --column --sort
 -                      --contains --points-at
 +                      --sign --cleanup --local-user --force --column --sort=
 +                      --contains --points-at --merged --no-merged --create-reflog
                        "
                ;;
        esac