zsh-workers
 help / color / mirror / code / Atom feed
* [PATCH v2 00/14] Improvements to the Git completion functions
@ 2013-09-22 10:48 Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 01/14] _git: fix a wrong variable in __git_config_values Øystein Walle
                   ` (14 more replies)
  0 siblings, 15 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: Øystein Walle

Hi,

Upon request from ft at #zsh here's resend of the patch series I sent in some
times ago. In the mean time Luka Perkov as sent in some changes and I've
checked that we're not stepping on eachother's toes.

Changes:

 - I skipped the commit that documented --early-output. It's not documented
   in the Git docs either as far as I can tell isn't really meant for
   interactive use.
 - I've left out a lot of the "controversal" TODO removals: There are still
   some TODOs that are removed; I've checked and these are actually
   documented in the Git docs, or are in fact not even supported by Git.
   Commit messages have been reworded as needed.
 - A commit that fixed one of our own mistakes has been squashed into the
   offending commit (Move --(no-)follow to log-specific options)

I hope to send in another patch series adding new stuff from v1.8.4 soon.

Regards,
Øsse

m0viefreak (9):
  _git: fix a wrong variable in __git_config_values
  _git: fix usage of ->int: for some entries in _git-config
  _git: make git submodule <cmd> completion work
  _git: correctly use __git_guard_number in some cases
  _git: completion updates to match latest git v1.8.3
  _git: reword _git-config TODO
  _git: support completing remote branches without <remote>/ prefix
  _git: correct some "undocumented" options
  _git: git rm: make git rm --cached work as intended

Øystein Walle (5):
  _git: completion updates to match latest git v1.8.3 part 2
  _git: add new configuration options to match latest git v1.8.3
  _git: fix some typos in description texts
  _git: remove TODOs of actually documented options
  _git: change completion text for consistency

 Completion/Unix/Command/_git | 571 ++++++++++++++++++++++++++++++++-----------
 1 file changed, 430 insertions(+), 141 deletions(-)

-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 01/14] _git: fix a wrong variable in __git_config_values
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 02/14] _git: fix usage of ->int: for some entries in _git-config Øystein Walle
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: m0viefreak

From: m0viefreak <m0viefreak.cm@googlemail.com>

This probably was a copy/paste mistake.
---
 Completion/Unix/Command/_git | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 9808040..0697e3c 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -5920,7 +5920,7 @@ __git_config_values () {
   default=$2
   shift 2
   values=($*)
-  [[ -n $current ]] && values[(r)$(__git_pattern_escape $default):*]+=' (current)'
+  [[ -n $current ]] && values[(r)$(__git_pattern_escape $current):*]+=' (current)'
   values[(r)$(__git_pattern_escape $default):*]+=' (default)'
 
   _describe -t ${opts[-t]:-values} ${opts[-l]:-value} values
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 02/14] _git: fix usage of ->int: for some entries in _git-config
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 01/14] _git: fix a wrong variable in __git_config_values Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 03/14] _git: make git submodule <cmd> completion work Øystein Walle
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: m0viefreak

From: m0viefreak <m0viefreak.cm@googlemail.com>

---
 Completion/Unix/Command/_git | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 0697e3c..faa8df8 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -1829,7 +1829,7 @@ _git-config () {
     format.signoff:'enable --signoff by default::->bool:false'
     'gc.*.reflogexpire:grace period for git reflog expire::->days:90'
     'gc.*.reflogexpireunreachable:grace period for git reflog expire for unreachable entries::->days:30'
-    gc.aggressiveWindow:'window size used in delta compression algorithm:->int:250'
+    gc.aggressiveWindow:'window size used in delta compression algorithm::->int:250'
     gc.auto:'minimum limit for packing loose objects with --auto::->int:6700'
     gc.autopacklimit:'minimum limit for packing packs with --auto::->int:50'
     gc.packrefs:'allow git gc to run git pack-refs::->gc.packrefs:true'
@@ -1856,8 +1856,8 @@ _git-config () {
     'gitcvs.*.dbTableNamePrefix:database table name prefix:prefix:->string'
     gitcvs.usecrlfattr:'use end-of-line conversion attributes::->bool:false'
     gitcvs.allbinary:'treat all files from CVS as binary::->bool:false'
-    gui.commitmsgwidth:'width of commit message window:width:->int:75'
-    gui.diffcontext:'number of context lines used in diff window:context:->int:5'
+    gui.commitmsgwidth:'width of commit message window:width::->int:75'
+    gui.diffcontext:'number of context lines used in diff window:context::->int:5'
     gui.encoding:'encoding to use for displaying file contents::->encoding'
     gui.matchtrackingbranch:'create branches that track remote branches::->bool:false'
     gui.newbranchtemplate:'suggested name for new branches:template:->string'
@@ -1887,8 +1887,8 @@ _git-config () {
     http.sslCertPasswordProtected:'prompt for a password for the SSL certificate::->bool:false'
     http.sslCAInfo:'file containing CA certificates to verify against for HTTPS:CA certificates file:_files'
     http.sslCAPath:'directory containing files with CA certificates to verify against for HTTPS:CA certificates directory:_directories'
-    http.maxRequests:'how many HTTP requests to launch in parallel:maximum number of requests:->int:5'
-    http.minSessions:'number of curl sessions to keep across requests:mininmum number of sessions:->int:1'
+    http.maxRequests:'how many HTTP requests to launch in parallel:maximum number of requests::->int:5'
+    http.minSessions:'number of curl sessions to keep across requests:mininmum number of sessions::->int:1'
     http.postBuffer:'maximum size of buffer used by smart HTTP transport when POSTing:maximum POST buffer size:->bytes:1m'
     http.lowSpeedLimit:'lower limit for HTTP transfer-speed:low transfer-speed limit:->int'
     http.lowSpeedTime:'duration for http.lowSpeedLimit:time:->int'
@@ -1945,12 +1945,12 @@ _git-config () {
     notes.rewrite.rebase:'copy notes from original to rewritten commit when running git rebase::->bool:true'
     notes.rewriteMode:'what to do when target commit already has a not when rewriting::->notes.rewriteMode'
     notes.rewriteRef:'refname to use when rewriting::->refname'
-    pack.window:'size of window:window size:->int:10'
-    pack.depth:'maximum delta depth:maximum delta depth:->int:50'
+    pack.window:'size of window:window size::->int:10'
+    pack.depth:'maximum delta depth:maximum delta depth::->int:50'
     pack.windowMemory:'window size limit:maximum window size:->bytes:0'
     pack.compression:'compression level::->compression:-1'
     pack.deltaCacheSize:'maximum amount of memory for caching deltas:maximum delta cache size:->bytes:256m'
-    pack.deltaCacheLimit:'maximum size of deltas:maximum delta size:->int:1000'
+    pack.deltaCacheLimit:'maximum size of deltas:maximum delta size::->int:1000'
     pack.threads:'number of threads to use for searching for best delta matches:number of threads:->int'
     pack.indexVersion:'default pack index version:index version:->string'
     pack.packSizeLimit:'maximum size of packs:maximum size of packs:->bytes'
@@ -2055,7 +2055,7 @@ _git-config () {
     'svn-remote.*.branches:branch mappings:branch mapping:->string'
     'svn-remote.*.tags:tag mappings:tag mapping:->string'
     tar.umask:'umask to apply::->umask'
-    transfer.unpackLimit:'default value for fetch.unpackLimit and receive.unpackLimit:unpack limit:->int:100'
+    transfer.unpackLimit:'default value for fetch.unpackLimit and receive.unpackLimit:unpack limit::->int:100'
     'url.*.insteadOf:string to start URLs with:prefix:->string'
     'url.*.pushInsteadOf:string to start URLs to push to with:prefix:->string'
     user.email:'email address used for commits::_email_addresses'
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 03/14] _git: make git submodule <cmd> completion work
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 01/14] _git: fix a wrong variable in __git_config_values Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 02/14] _git: fix usage of ->int: for some entries in _git-config Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 04/14] _git: correctly use __git_guard_number in some cases Øystein Walle
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: m0viefreak

From: m0viefreak <m0viefreak.cm@googlemail.com>

The -A parameter in the main completion stopped completion
in the subcommands from working. Remove it.
---
 Completion/Unix/Command/_git | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index faa8df8..0f4ead3 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -1491,7 +1491,7 @@ _git-submodule () {
   local curcontext=$curcontext state line ret=1
   declare -A opt_args
 
-  _arguments -C -A '-*' \
+  _arguments -C \
     '(-q --quiet)'{-q,--quiet}'[suppress all output]' \
     ': :->command' \
     '*:: :->option-or-argument' && ret=0
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 04/14] _git: correctly use __git_guard_number in some cases
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (2 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 03/14] _git: make git submodule <cmd> completion work Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 05/14] _git: completion updates to match latest git v1.8.3 Øystein Walle
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: m0viefreak

From: m0viefreak <m0viefreak.cm@googlemail.com>

The space is relevant to make the help text work as intended.
---
 Completion/Unix/Command/_git | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 0f4ead3..6797f9c 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -850,7 +850,7 @@ _git-grep () {
     '(-a --text)'{-a,--text}'[process binary files as if they were text]' \
     '(-i --ignore-case)'{-i,--ignore-case}'[ignore case when matching]' \
     '-I[do not match pattern in binary files]' \
-    '--max-depth=[descend at most given levels of directories]:__git_guard_number depth' \
+    '--max-depth=[descend at most given levels of directories]: :__git_guard_number depth' \
     '(-w --word-regexp)'{-w,--word-regexp}'[match only whole words]' \
     '(-v --invert-match)'{-v,--invert-match}'[select non-matching lines]' \
     '(   -H)-h[supress output of filenames]' \
@@ -2548,7 +2548,7 @@ _git-config () {
             (umask)
               _alternative \
                 'values:value:(user)' \
-                'umasks::__git_guard_number umask' && ret=0
+                'umasks: :__git_guard_number umask' && ret=0
               ;;
           esac
           ;;
@@ -2910,12 +2910,12 @@ _git-blame () {
     (line-range)
       if compset -P '([[:digit:]]#|/[^/]#(\\?[^/]#)#/),'; then
         _alternative \
-          'line-numbers::__git_guard_number "line number"' \
+          'line-numbers: :__git_guard_number "line number"' \
           'regexes::_guard "(/[^/]#(\\?[^/]#)#(/|)|)" regex' \
           'offsets::_guard "([+-][[:digit:]]#|)" "line offset"' && ret=0
       else
         _alternative \
-          'line-numbers::__git_guard_number "line number"' \
+          'line-numbers: :__git_guard_number "line number"' \
           'regexes::_guard "(/[^/]#(\\?[^/]#)#(/|)|)" regex' && ret=0
       fi
       ;;
@@ -3150,7 +3150,7 @@ _git-show-branch () {
     (limit-and-base)
       if compset -P '[[:digit:]]##,'; then
         _alternative \
-          'counts::__git_guard_number count' \
+          'counts: :__git_guard_number count' \
           'dates::__git_datetimes' && ret=0
       else
         __git_guard_number limit
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 05/14] _git: completion updates to match latest git v1.8.3
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (3 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 04/14] _git: correctly use __git_guard_number in some cases Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 06/14] _git: completion updates to match latest git v1.8.3 part 2 Øystein Walle
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: m0viefreak

From: m0viefreak <m0viefreak.cm@googlemail.com>

---
 Completion/Unix/Command/_git | 250 ++++++++++++++++++++++++++++++++-----------
 1 file changed, 186 insertions(+), 64 deletions(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 6797f9c..867bd67 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -277,12 +277,13 @@ _git-bisect () {
 
 (( $+functions[_git-branch] )) ||
 _git-branch () {
-  declare l c m d
+  declare l c m d e
 
-  l='--color --no-color -r -a -v --verbose --abbrev --no-abbrev'
-  c='-l -f --force -t --track --no-track --set-upstream --contains --merged --no-merged'
-  m='-m -M'
-  d='-d -D'
+  l='--color --no-color -r -a -v --verbose --abbrev --no-abbrev --list'
+  c='-l -f --force -t --track --no-track -u --set-upstream --set-upstream-to --unset-upstream --contains --merged --no-merged'
+  m='-m --move -M'
+  d='-d --delete -D'
+  e='--edit-description'
 
   declare -a dependent_creation_args
   if (( words[(I)-r] == 0 )); then
@@ -312,27 +313,31 @@ _git-branch () {
   fi
 
   _arguments -w -S -s \
-    "($c $m $d --no-color :)--color=-[turn on branch coloring]:: :__git_color_whens" \
-    "($c $m $d : --color)--no-color[turn off branch coloring]" \
-    "($c $m      -a)-r[list or delete only remote-tracking branches]" \
-    "($c $m $d : -r)-a[list both remote-tracking branches and local branches]" \
-    "($c $m $d : -v --verbose)"{-v,--verbose}'[show SHA1 and commit subject line for each head]' \
-    "($c $m $d :)--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length" \
-    "($c $m $d :)--no-abbrev[do not abbreviate sha1s]" \
-    "($l $m $d)-l[create the branch's reflog]" \
-    "($l $m $d -f --force)"{-f,--force}"[force the creation of a new branch]" \
-    "($l $m $d -t --track)"{-t,--track}"[set up configuration so that pull merges from the start point]" \
-    "($l $m $d)--no-track[override the branch.autosetupmerge configuration variable]" \
-    "($l $m $d)--set-upstream[set up configuration so that pull merges]" \
-    "($l $m $d)--contains=[only list branches which contain the specified commit]: :__git_committishs" \
-    "($l $m $d)--merged=[only list branches which are fully contained by HEAD]: :__git_committishs" \
-    "($l $m $d)--no-merged=[do not list branches which are fully contained by HEAD]: :__git_committishs" \
+    "($c $m $d $e --no-color :)--color=-[turn on branch coloring]:: :__git_color_whens" \
+    "($c $m $d $e : --color)--no-color[turn off branch coloring]" \
+    "($c $m $d $e )*--list[list only branches matching glob]:pattern" \
+    "($c $m    $e  -a)-r[list or delete only remote-tracking branches]" \
+    "($c $m $d $e: -r)-a[list both remote-tracking branches and local branches]" \
+    "($c $m $d $e : -v --verbose)"{-v,--verbose}'[show SHA1 and commit subject line for each head]' \
+    "($c $m $d $e :)--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length" \
+    "($c $m $d $e :)--no-abbrev[do not abbreviate sha1s]" \
+    "($l $m $d $e)-l[create the branch's reflog]" \
+    "($l $m $d $e -f --force)"{-f,--force}"[force the creation of a new branch]" \
+    "($l $m $d $e -t --track)"{-t,--track}"[set up configuration so that pull merges from the start point]" \
+    "($l $m $d $e)--no-track[override the branch.autosetupmerge configuration variable]" \
+    "($l $m $d $e -u --set-upstream --set-upstream-to --unset-upstream)"{-u,--set-upstream-to=}"[set up configuration so that pull merges]:remote-branches:__git_remote_branch_names" \
+    "($l $m $d $e -u --set-upstream --set-upstream-to --unset-upstream)--unset-upstream[remove upstream configuration]" \
+    "($l $m $d $e)--contains=[only list branches which contain the specified commit]: :__git_committishs" \
+    "($l $m $d $e)--merged=[only list branches which are fully contained by HEAD]: :__git_committishs" \
+    "($l $m $d $e)--no-merged=[do not list branches which are fully contained by HEAD]: :__git_committishs" \
+    "($c $l $m $d)--edit-description[edit branch description]" \
     $dependent_creation_args \
-    "($l $c $d -M)-m[rename a branch and the corresponding reflog]" \
-    "($l $c $d -m)-M[rename a branch even if the new branch-name already exists]" \
+    "($l $c $d $m $e)"{-m,--move}"[rename a branch and the corresponding reflog]" \
+    "($l $c $d $m $e)-M[rename a branch even if the new branch-name already exists]" \
     $dependent_modification_args \
-    "($l $c $m -D)-d[delete a fully merged branch]" \
-    "($l $c $m -d)-D[delete a branch]" \
+    "($l $c $m $d $e)"{-d,--delete}"[delete a fully merged branch]" \
+    "($l $c $m $d $e)-D[delete a branch]" \
+    {-q,--quiet}"[be more quiet]" \
     $dependent_deletion_args
 }
 
@@ -472,6 +477,8 @@ _git-cherry-pick () {
     '(-m --mainline)'{-m,--mainline}'[specify mainline when cherry-picking a merge commit]:parent number' \
     '(-n --no-commit --ff)'{-n,--no-commit}'[do not make the actually commit]' \
     '(-s --signoff --ff)'{-s,--signoff}'[add Signed-off-by line at the end of the commit message]' \
+    '*'{-s,--strategy=}'[use given merge strategy]:merge strategy:__git_merge_strategies' \
+    '*'{-X,--strategy-option=}'[pass merge-strategy-specific option to merge strategy]' \
     '(-e --edit -x -n --no-commit -s --signoff)--ff[fast forward, if possible]' \
     ': :__git_revisions'
 }
@@ -546,7 +553,8 @@ _git-clone () {
   # TODO: Argument to -b should complete branch names in the repository being
   # cloned.
   _arguments -w -C -S -s \
-    '(-l --local)'{-l,--local}'[clone locally, hardlink refs and objects if possible]' \
+    '(-l --local --no-local)'{-l,--local}'[clone locally, hardlink refs and objects if possible]' \
+    '(-l --local --no-local)--no-local[override --local, as if file:/// URL was given]' \
     '--no-hardlinks[copy files instead of hardlinking when doing a local clone]' \
     '(-s --shared)'{-s,--shared}'[share the objects with the source repository (warning: see man page)]' \
     '--reference[reference repository]:repository:_directories' \
@@ -560,7 +568,9 @@ _git-clone () {
     '(-b --branch)'{-b,--branch}'[point HEAD to the given branch]: :__git_guard_branch-name' \
     '(-u --upload-pack)'{-u,--upload-pack=}'[specify path to git-upload-pack on remote side]:remote path' \
     '--template=[directory to use as a template for the object database]: :_directories' \
+    '*'{-c,--config}'[<key>=<value> set a configuration variable in the newly created repository]' \
     '--depth[create a shallow clone, given number of revisions deep]: :__git_guard_number depth' \
+    '--single-branch[clone only history leading up to the main branch or the one specified by -b]' \
     '--recursive[initialize all contained submodules]' \
     ': :->repository' \
     ': :_directories' && ret=0
@@ -600,17 +610,19 @@ _git-commit () {
     '(        --porcelain --dry-run)--short[output dry run in short format]' \
     '(--short             --dry-run)--porcelain[output dry run in porcelain-ready format]' \
     '(--short --porcelain --dry-run -z --null)'{-z,--null}'[separate dry run entry output with NUL]' \
+    '--patch[use the interactive patch selection interface to chose which changes to commit]' \
     '(--reset-author)--author[override the author name used in the commit]:author name' \
     '--date=[override the author date used in the commit]:date' \
     '(-s --signoff)'{-s,--signoff}'[add Signed-off-by line at the end of the commit message]' \
     '(-n --no-verify)'{-n,--no-verify}'[do not look for suspicious lines the commit introduces]' \
     '--allow-empty[allow recording an empty commit]' \
     '--allow-empty-message[allow recording a commit with an empty message]' \
-    '--cleanup=[specify how the commit message should be cleaned up]:mode:((verbatim\:"don'\''t change the commit message at all"
+    '--cleanup=[specify how the commit message should be cleaned up]:mode:((verbatim\:"do not change the commit message at all"
                                                                             whitespace\:"remove leading and trailing whitespace lines"
                                                                             strip\:"remove both whitespace and commentary lines"
                                                                             default\:"act as '\''strip'\'' if the message is to be edited and as '\''whitespace'\'' otherwise"))' \
-    '(-e --edit)'{-e,--edit}'[edit the commit message before committing]' \
+    '(-e --edit --no-edit)'{-e,--edit}'[edit the commit message before committing]' \
+    '(-e --edit --no-edit)--no-edit[do not edit the commit message before committing]' \
     '(-a --all --interactive -o --only -i --include)'{-i,--include}'[update the given files and commit the whole index]' \
     '(-a --all --interactive -o --only -i --include)'{-o,--only}'[commit only the given files]' \
     '(-u --untracked-files)'{-u-,--untracked-files=}'[show files in untracked directories]::mode:((no\:"show no untracked files"
@@ -621,6 +633,7 @@ _git-commit () {
     '--dry-run[only show list of paths that are to be commited or not, and any untracked]' \
     '(         --no-status)--status[include the output of git status in the commit message template]' \
     '(--status            )--no-status[do not include the output of git status in the commit message template]' \
+    '(-S --gpg-sign)'{-S-,--gpg-sign=}'[GPG-sign the commit]::key id' \
     '(-a --all --interactive -o --only -i --include *)--interactive[interactively update paths in the index file]' \
     '*: :__git_ignore_line_inside_arguments __git_changed_files' \
     - '(message)' \
@@ -793,14 +806,17 @@ _git-format-patch () {
     '(--thread            )--no-thread[do not thread messages]' \
     '--in-reply-to=[make the first mail a reply to the given message]:message id' \
     '--ignore-if-in-upstream[do not include a patch that matches a commit in the given range]' \
+    '(-v --reroll-count)'{-v,--reroll-count=}'[mark the series as the <n>-th iteration of the topic]: :__git_guard_number iteration' \
     '(-k --keep-subject)--subject-prefix=[use the given prefix instead of \[PATCH\]]:prefix' \
     '*--to=[add To: header to email headers]: :_email_addresses' \
     '*--cc=[add Cc: header to email headers]: :_email_addresses' \
     '*--add-header=[add an arbitrary header to email headers]:header' \
     '--cover-letter[generate a cover letter template]' \
+    '--notes=[append notes for the commit after the three-dash line]:: :__git_notes_refs' \
     '(            --no-signature)--signature=[add a signature]:signature' \
     '(--signature               )--no-signature[do not add a signature]' \
     '--suffix=[use the given suffix for filenames]:filename suffix' \
+    '--quiet[suppress the output of the names of generated files]' \
     '--no-binary[do not output contents of changes in binary files, only note that they differ]' \
     '--root[treat the revision argument as a range]' \
     ': :->commit-or-commit-range' && ret=0
@@ -847,6 +863,8 @@ _git-grep () {
   _arguments -C -A '-*' \
     '(-O --open-files-in-pager --no-index)--cached[search blobs registered in index file instead of working tree]' \
     '(--cached)--no-index[search files in current directory, not just treacked files]' \
+    '--exclude-standard[exclude files standard ignore mechanisms]' \
+    '--untracked[search in untracked files]' \
     '(-a --text)'{-a,--text}'[process binary files as if they were text]' \
     '(-i --ignore-case)'{-i,--ignore-case}'[ignore case when matching]' \
     '-I[do not match pattern in binary files]' \
@@ -856,9 +874,10 @@ _git-grep () {
     '(   -H)-h[supress output of filenames]' \
     '(-h   )-H[show filenames]' \
     '--full-name[output paths relative to the project top directory]' \
-    '(-E --extended-regexp -G --basic-regexp)'{-E,--extended-regexp}'[use POSIX extended regexes]' \
-    '(-E --extended-regexp -G --basic-regexp)'{-G,--basic-regexp}'[use POSIX basic regexes]' \
-    '(-F --fixed-strings)'{-F,--fixed-strings}'[do not interpret pattern as a regex]' \
+    '(-E --extended-regexp -G --basic-regexp -P --perl-regexp -F --fixed-strings)'{-E,--extended-regexp}'[use POSIX extended regexes]' \
+    '(-E --extended-regexp -G --basic-regexp -P --perl-regexp -F --fixed-strings)'{-G,--basic-regexp}'[use POSIX basic regexes]' \
+    '(-E --extended-regexp -G --basic-regexp -P --perl-regexp -F --fixed-strings)'{-P,--perl-regexp}'[use perl-compatible regexes]' \
+    '(-E --extended-regexp -G --basic-regexp -P --perl-regexp -F --fixed-strings)'{-F,--fixed-strings}'[do not interpret pattern as a regex]' \
     '-n[prefix the line number to matching lines]' \
     '(-l --files-with-matches -L --files-without-match --name-only)'{-l,--files-with-matches,--name-only}'[show only names of matching files]' \
     '(-l --files-with-matches -L --files-without-match)'{-L,--files-without-match}'[show only names of non-matching files]' \
@@ -867,10 +886,13 @@ _git-grep () {
     '(-c --count)'{-c,--count}'[show number of matching lines in files]' \
     '(        --no-color)--color=-[color matches]:: :__git_color_whens' \
     '(--color           )---no-color[do not color matches]' \
+    '--break[prefix the line number to matching lines]' \
+    '--heading[show the filename above the matches]' \
     '-A[show trailing context]: :__git_guard_number lines' \
     '-B[show leading context]: :__git_guard_number lines' \
     '-C[show context]: :__git_guard_number lines' \
     '(-p --show-function)'{-p,--show-function}'[show preceding line containing function name of match]' \
+    '(-W --function-context)'{-W,--function-context}'[show whole function where a match was found]' \
     '(1)*-f[read patterns from given file]:pattern file:_files' \
     '(1)*-e[use the given pattern for matching]:pattern' \
     $pattern_operators \
@@ -984,6 +1006,7 @@ _git-init () {
     '--bare[create a bare repository]' \
     '--template=[directory to use as a template for the object database]: :_directories' \
     '--shared=[share repository amongst several users]:: :__git_repository_permissions' \
+    '--separate-git-dir=[create git dir elsewhere and link it using the gitdir mechanism]:: :_directories' \
     ':: :_directories'
 }
 
@@ -1044,6 +1067,7 @@ _git-merge () {
     '-m[set the commit message to be used for the merge commit]:merge message' \
     '(                    --no-rerere-autoupdate)--rerere-autoupdate[allow the rerere mechanism to update the index]' \
     '(--rerere-autoupdate                       )--no-rerere-autoupdate[do not allow the rerere mechanism to update the index]' \
+    '--abort[restore the original branch and abort the merge operation]' \
     '*: :__git_commits'
 }
 
@@ -1090,6 +1114,7 @@ _git-notes () {
         copy:'copy notes from one object to another'
         append:'append notes to a given object'
         edit:'edit notes for a given object'
+        merge:'merge the given notes ref into the current ref'
         show:'show notes for a given object'
         remove:'remove notes for a given object'
         prune:'remove all notes for non-existing/unreachable objects')
@@ -1124,6 +1149,15 @@ _git-notes () {
             ': :__git_commits' \
             ': :__git_commits' && ret=0
           ;;
+        (merge)
+          _arguments -w -S -s \
+            '(-s --strategy)--abort[abort an in-progress notes merge]' \
+            '(-s --strategy)--commit[finalize an in-progress notes merge]' \
+            {-q,--quiet}'[be quiet]' \
+            {-v,--verbose}'[be more verbose]' \
+            '(--abort --commit)'{-s,--strategy=}'[resolve conflicts using the given strategy]' \
+            ': :__git_notes_refs' && ret=0
+          ;;
         (append)
           _arguments -w -S -s \
             '*'{-m,--message=}'[use given note message]:message' \
@@ -1165,6 +1199,7 @@ _git-push () {
   # later on to match the remote end.
   _arguments -w -S -s \
     '--all[push all refs under refs/heads/]' \
+    '--prune[remove remote branches that do not have a local counterpart]' \
     '--mirror[push all refs under refs/heads/ and refs/tags/ and delete non-existing refs]' \
     '(-n --dry-run)'{-n,--dry-run}'[do everything except actually send the updates]' \
     '--porcelain[produce machine-readable output]' \
@@ -1173,12 +1208,14 @@ _git-push () {
     '(--receive-pack --exec)'{--receive-pack=-,--exec=-}'[path to git-receive-pack on remote]:remote git-receive-pack:_files' \
     '(-f --force)'{-f,--force}'[allow refs that are not ancestors to be updated]' \
     '(:)--repo=[default repository to use]:repository:__git_any_repositories' \
-    '(-u --set-upstream)'{-u,--set-upstream}'[add upstream reference for each branch that is up to date or pushed]' \
+    '(-u --set-upstream-to)'{-u,--set-upstream-to}'[add upstream reference for each branch that is up to date or pushed]' \
     '(       --no-thin)--thin[try to minimize number of objects to be sent]' \
     '(--thin          )--no-thin[do not try to minimize number of objects to be sent]' \
     '(-q --quiet -v --verbose --progress)'{-q,--quiet}'[suppress all output]' \
     '(-q --quiet -v --verbose)'{-v,--verbose}'[output additional information]' \
     '(-q --quiet)--progress[output progress information]' \
+    '--recurse-submodules=[submodule handling]:submodule handling:((check\:"refuse pushing of supermodule if submodule commit cannot be found on the remote"
+                                                                    on-demand\:"push all changed submodules"))' \
     ':: :__git_any_repositories' \
     '*: :__git_ref_specs'
 }
@@ -1209,7 +1246,9 @@ _git-rebase () {
     '(-i --interactive)--whitespace=-[detect a new or modified line that has whitespace errors]: :__git_apply_whitespace_strategies' \
     '(-i --interactive)--committer-date-is-author-date[use author date as committer date]' \
     '(-i --interactive --ignore-whitespace --whitespace --committer-date-is-author-date)'{-i,--interactive}'[make a list of commits to be rebased and open in $EDITOR]' \
+    '--edit-todo[edit interactive instruction sheet in an editor]' \
     '(-p --preserve-merges --interactive)'{-p,--preserve-merges}'[try to recreate merges instead of ignoring them]' \
+    {-x,--exec}'[with -i\: append "exec <cmd>" after each line]:command' \
     '(1)--root[rebase all reachable commits]' \
     $autosquash_opts \
     '--no-ff[cherry-pick all rebased commits with --interactive, otherwise synonymous to --force-rebase]' \
@@ -1254,7 +1293,6 @@ _git-revert () {
     '(- :)--quit[end revert or cherry-pick sequence]' \
     '(- :)--continue[resume revert or cherry-pick sequence]' \
     '(- :)--abort[cancel revert or cherry-pick sequence]' \
-    '(-e --edit --no-edit)'{-e,--edit}'[edit the commit before committing the revert]' \
     '(-m --mainline)'{-m+,--mainline=}'[pick which parent is mainline]:parent number' \
     '(-e --edit)--no-edit[do not edit the commit message]' \
     '(-n --no-commit)'{-n,--no-commit}'[do not commit the reversion]' \
@@ -1415,6 +1453,7 @@ _git-stash () {
             '(             --no-keep-index)--keep-index[all changes already added to the index are left intact]' \
             '(--keep-index                )--no-keep-index[all changes already added to the index are undone]' \
             '(-q --quiet)'{-q,--quiet}'[suppress all output]' \
+            '(-u --include-untracked)'{-u,--include-untracked}'[include untracked files]' \
             '::message' && ret=0
           ;;
         (list)
@@ -1504,6 +1543,7 @@ _git-submodule () {
         add:'add given repository as a submodule'
         status:'show the status of a submodule'
         init:'initialize a submodule'
+        deinit:'unregister a submodule'
         update:'update a submodule'
         summary:'show commit summary between given commit and working tree/index'
         foreach:'evaluate shell command in each checked-out submodule'
@@ -1522,6 +1562,7 @@ _git-submodule () {
             '(-q --quiet)'{-q,--quiet}'[suppress all output]' \
             '(-b --branch)'{-b,--branch}'[branch of repository to add as submodule]' \
             '(-f --force)'{-f,--force}'[allow adding an otherwise ignored submodule path]' \
+            '--name[use given name instead of defaulting to its path]:name' \
             '--reference=[remote repository to clone]: :__git_any_repositories' \
             ': :__git_any_repositories' \
             ':: :_directories' && ret=0
@@ -1538,6 +1579,11 @@ _git-submodule () {
             '(-q --quiet)'{-q,--quiet}'[suppress all output]' \
             '*: :__git_ignore_line_inside_arguments __git_submodules' && ret=0
           ;;
+        (deinit)
+          _arguments -S \
+            '(-f --force)'{-f,--force}'[remove submodule worktree even if local modifications are present]' \
+            '*: :__git_ignore_line_inside_arguments __git_submodules' && ret=0
+          ;;
         (update)
           # TODO: --init not properly documented.
           _arguments -S \
@@ -1547,6 +1593,7 @@ _git-submodule () {
             '--rebase[rebase current branch onto commit recorded in superproject]' \
             '--reference=[remote repository to clone]: :__git_any_repositories' \
             '--recursive[traverse submodules recursively]' \
+            '--force[discard local changes by checking out the current up-to-date version]' \
             '--init[initialize uninitialized submodules]' \
             '*: :__git_ignore_line_inside_arguments __git_submodules' && ret=0
           ;;
@@ -1580,6 +1627,7 @@ _git-submodule () {
           ;;
         (sync)
           _arguments -S \
+            '--recursive[traverse submodules recursively]' \
             '(-q --quiet)'{-q,--quiet}'[suppress all output]' \
             '*: :__git_ignore_line_inside_arguments __git_submodules' && ret=0
           ;;
@@ -1609,6 +1657,7 @@ _git-tag () {
       '(-a    -u)-s[create an signed and annotated tag]' \
       '(-a -s   )-u[create a tag, annotated and signed with the given key]: :__git_gpg_secret_keys' \
       '-f[replace existing tag]' \
+      '--cleanup=[cleanup message]:mode:((verbatim\:"no cleanup" whitespace\:"remove leading and trailing whitespace" strip\:"remove leading and trailing whitespace and comments"))' \
       $message_opts \
       ': :__git_tags' \
       ':: :__git_commits' \
@@ -1619,6 +1668,7 @@ _git-tag () {
       '-n+[limit line output of annotation]: :__git_guard_number "limit"' \
       '-l[list tags matching pattern]' \
       '--contains=[only list tags which contain the specified commit]: :__git_commits' \
+      '--points-at=[only list tags of the given object]: :__git_commits' \
       '::pattern' \
     - verification \
       '-v[verifies gpg signutare of tags]' \
@@ -1799,15 +1849,19 @@ _git-config () {
     color.status.untracked:'color of files not currently being tracked::->color'
     color.status.nobranch:'color of no-branch warning::->color'
     color.ui:'color output of capable git commands::->color-bool'
+    commit.cleanup:'default --cleanup option::->commit.cleanup:default'
     commit.status:'include status information in commit message template::->bool:true'
     commit.template:'template file for commit messages:template:_files'
+    diff.algorithm:'default diff algorithm::->diff.algorithm:default'
     diff.autorefreshindex:'run git update-index --refresh before git diff::->bool:true'
+    diff.context:'default number of context lines::->int:3'
     diff.external:'command to generate diff with:diff command:_path_commands'
     diff.mnemonicprefix:'use mnemonic source and destination prefixes::->bool:false'
     diff.noprefix:'strip source and destination prefixes::->bool:false'
     diff.renameLimit:'number of files to consider when detecting copy/renames:rename limit:->int'
     diff.renames:'try to detect renames::->diff.renames:true'
     diff.ignoreSubmodules:'ignore submodules::->bool:false'
+    diff.submodule:'output format for submodule differences::->diff.submodule:short'
     diff.suppressBlankEmpty:'inbihit printing space before empty output lines::->bool:false'
     diff.tool:'diff tool to use::__git_difftools'
     'difftool.*.cmd:command to invoke for the diff tool::_path_commands'
@@ -1877,7 +1931,10 @@ _git-config () {
     guitool.revunmerged:'show only unmerged branches in revprompt::->bool:false'
     guitool.title:'title of prompt dialog:prompt title:->string'
     guitool.prompt:'prompt to display:prompt:->string'
+    grep.lineNumber:'enable -n option by default::->bool:false'
+    grep.patternType:'default matching pattern type::->grep.patternType:default'
     help.browser:'browser used to display help in web format::__git_browsers'
+    help.htmlpath:'location of HTML help::->help.htmlpath'
     help.format:'default help format used by git help::->help.format'
     help.autocorrect:'execute corrected mistyped commands::->bool:false'
     http.proxy:'HTTP proxy to use:proxy:_urls'
@@ -1955,8 +2012,9 @@ _git-config () {
     pack.indexVersion:'default pack index version:index version:->string'
     pack.packSizeLimit:'maximum size of packs:maximum size of packs:->bytes'
     pull.octopus:'default merge strategy to use when pulling multiple branches::__git_merge_strategies'
+    pull.rebase:'rebase branches on top of the fetched branch, instead of merging::->bool:false'
     pull.twohead:'default merge strategy to use when pulling a single branch::__git_merge_strategies'
-    push.default:'action git push should take if no refspec is given::->push.default'
+    push.default:'action git push should take if no refspec is given::->push.default:matching'
     rebase.stat:'show a diffstat of what changed upstream since last rebase::->bool:false'
     rebase.autosquash:'autosquash by default::->bool:false'
     receive.autogc:'run git gc --auto after receiving data::->bool:true'
@@ -1989,6 +2047,7 @@ _git-config () {
     sendemail.bcc:'value of Bcc\: header::_email_addresses'
     sendemail.cc:'value of Cc\: header::_email_addresses'
     sendemail.cccmd:'command to generate Cc\: header with:Cc\: command:_path_commands'
+    sendemail.toccmd:'command to generate To\: header with:To\: command:_path_commands'
     sendemail.chainreplyto:'send each email as a reply to the previous one::->bool:false'
     sendemail.confirm:'type of confirmation required before sending::->sendemail.confirm:auto'
     sendemail.envelopesender:'envelope sender to send emails as::_email_addresses'
@@ -2010,6 +2069,7 @@ _git-config () {
     'sendemail.*.bcc:value of Bcc\: header::_email_addresses'
     'sendemail.*.cc:value of Cc\: header::_email_addresses'
     'sendemail.*.cccmd:command to generate Cc\: header with:Cc\: command:_path_commands'
+    'sendemail.*.tocmd:command to generate To\: header with:To\: command:_path_commands'
     'sendemail.*.chainreplyto:send each email as a reply to the previous one::->bool:false'
     'sendemail.*.confirm:type of confirmation required before sending::->sendemail.confirm:auto'
     'sendemail.*.envelopesender:envelope sender to send emails as::_email_addresses'
@@ -2365,6 +2425,13 @@ _git-config () {
                 always:"always $parts[2]" \
                 {auto,true,yes,on}:$parts[2] && ret=0
               ;;
+            (commit.cleanup)
+              __git_config_values -- "$current" "$parts[5]" \
+                strip:'remove both whitespace and commentary lines' \
+                whitespace:'remove leading and trailing whitespace lines' \
+                verbatim:'no not change the commit message at all' \
+                default:'act as '\''strip'\'' if the message is to be edited and as '\''whitespace'\'' otherwise' && ret=0
+              ;;
             (compression)
               __git_compression_levels && ret=0
               ;;
@@ -2413,10 +2480,23 @@ _git-config () {
                 __git_guard_number 'number of days'
               fi
               ;;
+            (diff.algorithm)
+              __git_config_values -- "$current" "$parts[5]" \
+                default:'basic greedy diff algorithm' \
+                myers:'basic greedy diff algorithm' \
+                minimal:'spend extra time to make sure the smallest possible diff is produced' \
+                patience:'generate diffs with patience algorithm' \
+                histogram:'generate diffs with histogram algorithm' && ret=0
+              ;;
             (diff.renames)
               __git_config_booleans "$current" "$parts[5]" "$parts[2]" \
                 {copies,copy}:'try to detect both renames and copies' && ret=0
               ;;
+            (diff.submodule)
+              __git_config_values -- "$current" "$parts[5]" \
+                short:'show pairs of commit name' \
+                log:'list commits like git submodule does' && ret=0
+              ;;
             (encoding)
               __git_encodings && ret=0
               ;;
@@ -2446,12 +2526,25 @@ _git-config () {
                 SQLite:'use the SQLite database driver' \
                 Pg:'use the Pg database driver' && ret=0
               ;;
+            (grep.patternType)
+              __git_config_values -- "$current" "$parts[5]" \
+                basic:'use --basic-regexp' \
+                default:'use default' \
+                extended:'use --extended-regexp' \
+                fixed:'use --fixed-strings' \
+                perl:'use --perl-regexp' && ret=0
+              ;;
             (help.format)
               __git_config_values -- "$current" "$parts[5]" \
                 man:'use man' \
                 info:'use info' \
                 {web,html}:'use HTML' && ret=0
               ;;
+            (help.htmlpath)
+              _alternative \
+                'path::_files -/' \
+                'url::_urls' && ret=0
+              ;;
             (imap.authMethod)
               __git_config_values -- "$current" "$parts[5]" \
                 CRAM-MD5:'use CRAM-MD5' && ret=0
@@ -2472,9 +2565,9 @@ _git-config () {
               ;;
             (merge.verbosity)
               __git_config_values -t verbosity-levels -l 'verbosity level' -- "$current" "$parts[5]" \
-                0:'only final error message if conflicts were detected'
-                1:'conflicts'
-                2:'conflicts and file changes'
+                0:'only final error message if conflicts were detected' \
+                1:'conflicts' \
+                2:'conflicts and file changes' \
                 5:'debugging information' && ret=0
               ;;
             (notes.rewriteMode)
@@ -2490,7 +2583,8 @@ _git-config () {
               __git_config_values -- "$current" "$parts[5]" \
                 nothing:'do not push anything' \
                 matching:'push all matching branches' \
-                tracking:'push current branch to its upstream branch' \
+                upstream:'push current branch to its upstream branch' \
+                simple:'like upstream, but only if local and remote names are the same' \
                 current:'push current branch to branch of same name' && ret=0
               ;;
             (receive.denyCurrentBranch)
@@ -2893,11 +2987,13 @@ _git-blame () {
     '-S[use revs from revs-file]:revs-file:_files' \
     '--reverse[walk histor forward instead of backward]' \
     '(-p --porcelain)'{-p,--porcelain}'[show results designed for machine processing]' \
+    '--line-porcelain[show results designed for machine processing but show commit information for every line]' \
     '--incremental[show results incrementally for machine processing]' \
     '--contents[annotate against the given file if no rev is specified]: :_files' \
     '(-h --help)'{-h,--help}'[show help message]' \
     '-c[use same output format as git annotate]' \
     '--score-debug[output debugging information relating to -C and -M line movement]' \
+    '(-e --show-email)'{-e,--show-email}'[show the author email instead of the author name]' \
     '(-f --show-name)'{-f,--show-name}'[show the filename of the original commit]' \
     '(-n --show-number)'{-n,--show-number}'[show the line number in the original commit]' \
     '-s[suppress author name and timestamp]' \
@@ -2945,6 +3041,7 @@ _git-count-objects () {
 _git-difftool () {
   # TODO: Is this fine, or do we need to modify the context or similar?
   _git-diff \
+    '--dir-diff[diff a whole tree by prepare a temporary copy]' \
     '(-y --no-prompt --prompt)'{-y,--no-prompt}'[do not prompt before invocation of diff tool]' \
     '(-y --no-prompt)--prompt[prompt before invocation of diff tool]' \
     '(-t --tool -x --extcmd)'{-t,--tool=-}'[merge resolution program to use]: :__git_difftools' \
@@ -2957,6 +3054,8 @@ _git-fsck () {
   # TODO: -v is undocumented.
   _arguments -w -S -s \
     '--unreachable[show objects that are unreferenced in the object database]' \
+    '(--dangling --no-dangling)--dangling[print dangling objects (default)]' \
+    '(--dangling --no-dangling)--no-dangling[do not print dangling objects]' \
     '--root[show root nodes]' \
     '--tags[show tags]' \
     '--cache[consider objects recorded in the index as head nodes for reachability traces]' \
@@ -3040,7 +3139,8 @@ _git-rerere () {
         'clear[reset metadata used by rerere]' \
         'forget[resets metadata used by rerere for specific conflict]: :__git_cached_files' \
         'diff[output diffs for the current state of the resolution]' \
-        'status[like diff, but only output filesames]' \
+        'status[print paths with conflicts whose merge resolution rerere will record]' \
+        'remaining[print paths with conflicts that have not been autoresolved by rerere]' \
         'gc[prune old records of conflicted merges]' && ret=0
       ;;
   esac
@@ -3300,6 +3400,7 @@ _git-send-email () {
     '--smtp-server-port=[specify port to connect to SMTP server on]:smtp port:_ports' \
     '--smtp-user=[specify user to use for SMTP-AUTH]:smtp user:_users' \
     '--cc-cmd=[specify command to generate Cc\: header with]:Cc\: command:_path_commands' \
+    '--to-cmd=[specify command to generate To\: header with]:To\: command:_path_commands' \
     '(                 --no-chain-reply-to)--chain-reply-to[send each email as a reply to previous one]' \
     '(--chain-reply-to                    )--no-chain-reply-to[send all emails after first as replies to first one]' \
     '--identity=[specify configuration identity]: :__git_sendemail_identities' \
@@ -3593,8 +3694,6 @@ _git-apply () {
     '--unidiff-zero[disable unified-diff-context check]' \
     '--apply[apply patches that would otherwise not be applied]' \
     '--no-add[ignore additions made by the patch]' \
-    '*--exclude=[skip files matching specified pattern]:pattern' \
-    '*--include=[include files matching specified pattern]:pattern' \
     '--inaccurate-eof[work around missing-new-line-at-EOF bugs]' \
     '(-v --verbose)'{-v,--verbose}'[display progress on stderr]' \
     '--recount[do not trust line counts in hunk headers]' \
@@ -3784,9 +3883,10 @@ _git-prune-packed () {
 
 (( $+functions[_git-read-tree] )) ||
 _git-read-tree () {
-  local trivial_opt= aggressive_opt=
+  local trivial_opt= aggressive_opt= dryrun_opt=
 
   if (( words[(I)-m] )); then
+    dryrun_opt='--dry-run[report if a merge would fail without touching the index or the working tree]'
     trivial_opt='--trivial[restrict three-way merge to only happen if no file-level merging is required]'
     aggressive_opt='--aggressive[try harder to resolve merge conflicts]'
   fi
@@ -3810,6 +3910,7 @@ _git-read-tree () {
     '(-m         --prefix)--reset[perform a merge, not just a read, ignoring unmerged entries]' \
     '(-m --reset          2 3)--prefix=-[read the contents of specified tree-ish under specified directory]:prefix:_directories -r ""' \
     $ui_opts \
+    $dryrun_opt \
     '-v[display progress on standard error]' \
     $trivial_opt \
     $aggressive_opt \
@@ -3824,7 +3925,9 @@ _git-read-tree () {
 (( $+functions[_git-symbolic-ref] )) ||
 _git-symbolic-ref () {
   _arguments -w -S -s \
+    '(-d --delete)'{-d,--delete}'[delete symbolic ref]' \
     '(-q --quiet)'{-q,--quiet}'[do not issue error if specified name is not a symbolic ref]' \
+    '--short[shorten the ref name (eg. refs/heads/master -> master)]' \
     '-m[update reflog for specified name with specied reason]:reason for update' \
     ':symbolic reference:__git_heads' \
     ':: :__git_references'
@@ -4050,6 +4153,8 @@ _git-ls-remote () {
     '(-h --heads)'{-h,--heads}'[show only refs under refs/heads]' \
     '(-t --tags)'{-t,--tags}'[show only refs under refs/tags]' \
     '(-u --upload-pack)'{-u,--upload-pack=-}'[specify path to git-upload-pack on remote side]:remote path' \
+    '--exit-code[exit with status 2 when no matching refs are found in the remote repository]' \
+    '--get-url[expand the URL of the given repository taking into account any "url.<base>.insteadOf" config setting]' \
     ': :__git_any_repositories' \
     '*: :__git_references'
 }
@@ -4086,6 +4191,7 @@ _git-merge-base () {
   _arguments -w -S -s \
     '(-a --all)'{-a,--all}'[display all common ancestors]' \
     '--octopus[compute best common ancestors of all supplied commits]' \
+    '--is-ancestor[tell if A is ancestor of B (by exit status)]' \
     '(-)--independent[display minimal subset of supplied commits with same ancestors]' \
     ': :__git_commits' \
     '*: :__git_commits'
@@ -4202,6 +4308,7 @@ _git-daemon () {
   # TODO: --interpolated-path should complete %H, %CH, %IP, %P, and %D.
   _arguments -S \
     '--strict-paths[match paths exactly]' \
+    '--access-hook=-[allow an external tool to accept or decline service]:path:_directories' \
     '--base-path=-[remap all the path requests as relative to the given path]:path:_directories' \
     '--base-path-relaxed[allow lookup of base path witout prefix]' \
     '--interpolated-path=-[dynamically construct alternate paths]:path:_directories' \
@@ -4390,7 +4497,9 @@ _git-check-attr () {
   fi
 
   _arguments -C \
+    {-a,--all}'[list all attributes that are associated with the specified paths]' \
     '--stdin[read file names from stdin instead of from command line]' \
+    '--cached[consider .gitattributes in the index only, ignoring the working tree.]' \
     $z_opt \
     '(-)--[interpret preceding arguments as attributes and following arguments as path names]' \
     '*:: :->attribute-or-file' && ret=0
@@ -5308,15 +5417,6 @@ __git_remote_references () {
   __git_references
 }
 
-(( $+functions[__git_note_references] )) ||
-__git_local_references () {
-  local references expl
-
-  references=(${${(M)${${(f)"$(_call_program references git ls-remote ./. 2>/dev/null)"}#*$'\t'}:#refs/notes/*}#refs/notes/})
-  __git_command_successful $pipestatus || return 1
-
-  _wanted references expl reference compadd - $references
-}
 (( $+functions[__git_notes_refs] )) ||
 __git_notes_refs () {
   local expl
@@ -5600,6 +5700,8 @@ __git_setup_log_options () {
     '(- *)-h[display help]'
     '(           --no-decorate)--decorate=-[print out ref names of any commits that are shown]: :__git_log_decorate_formats'
     '(--decorate              )--no-decorate[do not print out ref names of any commits that are shown]'
+    '(          --no-follow)--follow[follow renames]'
+    '(--follow             )--no-follow[do not follow renames]'
     '--source[show which ref each commit is reached from]')
 }
 
@@ -5612,7 +5714,14 @@ __git_setup_diff_options () {
     $diff_types{-U,--unified=}'[generate diff with given lines of context]: :__git_guard_number lines'
     $diff_types'--raw[generate default raw diff output]'
     $diff_types'--patch-with-raw[generate patch but also keep the default raw diff output]'
-    '--patience[generate diffs with patience algorithm]'
+    '(--minimal --patience --histogram --diff-algorithm)--minimal[spend extra time to make sure the smallest possible diff is producedm]'
+    '(--minimal --patience --histogram --diff-algorithm)--patience[generate diffs with patience algorithm]'
+    '(--minimal --patience --histogram --diff-algorithm)--histogram[generate diffs with histogram algorithm]'
+    '(--minimal --patience --histogram --diff-algorithm)--diff-algorithm=[choose a diff algorithm]:diff algorithm:((default\:"basic greedy diff algorithm"
+                                                                                                                    myers\:"basic greedy diff algorithm"
+                                                                                                                    minimal\:"spend extra time to make sure the smallest possible diff is produced"
+                                                                                                                    patience\:"generate diffs with patience algorithm"
+                                                                                                                    histogram\:"generate diffs with histogram algorithm"))'
     $diff_types'--stat=-[generate diffstat instead of patch]:: :__git_guard_diff-stat-width'
     $diff_types'--numstat[generate more machine-friendly diffstat]'
     $diff_types'--shortstat[generate summary diffstat]'
@@ -5624,7 +5733,7 @@ __git_setup_diff_options () {
     $diff_types'--name-only[show only names of changed files]'
     $diff_types'--name-status[show only names and status of changed files]'
     '--submodule=-[select output format for submodule differences]::format:((short\:"show pairs of commit names"
-                                                                            log\:"list commits like git submodule does (default)"))'
+                                                                            log\:"list commits like git submodule does"))'
     '(        --no-color --color-words)--color=-[show colored diff]:: :__git_color_whens'
     '(--color            --color-words)--no-color[turn off colored diff]'
     '--word-diff=-[show word diff]::mode:((color\:"highlight changed words using color"
@@ -5676,8 +5785,6 @@ __git_setup_diff_options () {
 
     # TODO: --cumulative is undocumented.
     '--cumulative[undocumented]'
-    # TODO: --follow is undocumented.
-    '--follow[undocumented]'
     # TODO: --textconv is undocumented.
     '--textconv[undocumented]'
     # TODO: --no-textconv is undocumented.
@@ -5708,10 +5815,9 @@ __git_setup_revision_options () {
     '--abbrev-commit[show only partial prefixes of commit object names]'
     '--oneline[shorthand for --pretty=oneline --abbrev-commit]'
     '--encoding=-[output log messages in given encoding]:: :__git_encodings'
-    '(--no-notes --show-notes --standard-notes --no-standard-notes)--no-notes[do not show notes that annotate commit]'
-    '(--no-notes --show-notes --standard-notes --no-standard-notes)--show-notes[do not show notes that annotate commit]:: :__git_note_references'
-    '(--no-notes --show-notes --standard-notes --no-standard-notes)--no-standard-notes[enable populating notes ref list from core.notesRef and notes.displayRef]'
-    '(--no-notes --show-notes --standard-notes --no-standard-notes)--no-standard-notes[disable populating notes ref list from core.notesRef and notes.displayRef]'
+    '(--no-notes --notes)--no-notes[do not show notes that annotate commit]'
+    '(--no-notes        )*--notes=[show notes that annotate commit, with optional ref argument show this notes ref instead of the default notes ref(s)]:: :__git_notes_refs'
+    '--show-signature[validate GPG signature of commit]'
     '(                --date)--relative-date[show dates relative to current time]'
     '(--relative-date       )--date=-[format of date output]: :__git_date_formats'
     '--parents[display parents of commit]'
@@ -5743,8 +5849,8 @@ __git_setup_revision_options () {
     '--remotes=[-show all commits from refs/remotes]::pattern'
     '--glob=[show all commits from refs matching glob]:pattern'
     '--stdin[read commit objects from standard input]'
-    '--cherry-pick[omit any same-change commits]'
     '(-g --walk-reflogs --reverse)'{-g,--walk-reflogs}'[walk reflog entries from most recent to oldest]'
+    '--grep-reflog=[limit commits to ones whose reflog message matches the given pattern (with -g, --walk-reflogs)]:pattern'
     '--merge[after a failed merge, show refs that touch files having a conflict]'
     '--boundary[output uninteresting commits at boundary]'
     '--simplify-by-decoration[show only commits that are referenced by a ref]'
@@ -5760,21 +5866,26 @@ __git_setup_revision_options () {
     '(--objects               )--objects-edge[display object ids of objects referenced by listed and excluded commits]'
     '(          --do-walk)--no-walk[only display given revs, do not traverse their ancestors]'
     '(--no-walk          )--do-walk[only display given revs, traversing their ancestors]'
+    '(              --cherry-pick)--cherry-mark[like --cherry-pick but mark equivalent commits instead of omitting them]'
+    '(--cherry-pick              )--cherry-pick[omit any commit that introduces the same change as another commit on "the other side" of a symmetric range]'
+    '(            --right-only)--left-only[list only commits on the left side of a symmetric range]'
+    '(--left-only             )--right-only[list only commits on the right side of a symmetric range]'
+    '(--left-only --right-only --cherry-pick --cherry-mark)--cherry[synonym for --right-only --cherry-mark --no-merges]'
+    '(-c --cc            )--full-diff[show full commit diffs when using log -p, not only those affecting the given path]'
+    '--log-size[print log message size in bytes before the message]'
+    '--use-mailmap[use mailmap file to map author and committer names and email]'
 
     # TODO: --reflog is undocumented.
     '--reflog[show all commits from reflogs]'
     # TODO: --default is undocumented.
     '--default[use argument as default revision]:default revision:__git_revisions'
-    # TODO: --full-diff is undocumented.
-    '(-c --cc            )--full-diff[undocumented]'
     # TODO: --abrev is undocumented.
     '--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length'
     # TODO: --no-abbrev is undocumented.
     '--no-abbrev[undocumented]'
     # TODO: --early-output is undocumented.
     '--early-output=-[undocumented]::undocumented'
-    # TODO: --log-size is undocumented.
-    '--log-size[undocumented]')
+    )
 
   if (( words[(I)--objects(|-edge)] )); then
     revision_options+=('--unpacked[print object IDs not in packs]')
@@ -5786,6 +5897,8 @@ __git_setup_merge_options () {
   merge_options=(
     '(         --no-commit)--commit[perform the merge and commit the result]'
     '(--commit            )--no-commit[perform the merge but do not commit the result]'
+    '(         --no-edit)--edit[open an editor to change the commit message]'
+    '(--edit            )--no-edit[do not open an editor to change the commit message]'
     '(     --no-ff)--ff[do not generate a merge commit if the merge resolved as a fast-forward]'
     '(--ff        )--no-ff[generate a merge commit even if the merge resolved as a fast-forward]'
     '(      --no-log)--log[fill in one-line descriptions of the commits being merged in the log message]'
@@ -5807,6 +5920,7 @@ __git_setup_fetch_options () {
     '(: *)--all[fetch all remotes]'
     '(-a --append)'{-a,--append}'[append ref names and object names of fetched refs to "$GIT_DIR/FETCH_HEAD"]'
     '--depth=[deepen the history of a shallow repository by the given number of commits]: :__git_guard_number depth'
+    '--unshallow[convert a shallow clone to a complete one]'
     '--dry-run[show what would be done, without making any changes]'
     '(-f --force)'{-f,--force}'[allow refs that are not ancestors to be updated]'
     '(-k --keep)'{-k,--keep}'[keep downloaded pack]'
@@ -5815,6 +5929,10 @@ __git_setup_fetch_options () {
     '(--no-tags -t --tags)'{-t,--tags}'[fetch remote tags]'
     '(-u --update-head-ok)'{-u,--update-head-ok}'[allow updates of current branch head]'
     '--upload-pack=[specify path to git-upload-pack on remote side]:remote path'
+    '(--no-recurse-submodules --recurse-submodules)--recurse-submodules=[specify when to fetch commits of submodules]:recursive fetching mode:((no\:"disable recursion"
+                                                                                                                                                yes\:"always recurse"
+                                                                                                                                                on-demand\:"only when submodule reference in superproject is updated"))'
+    '(--no-recurse-submodules --recurse-submodules)--no-recurse-submodules[disable recursive fetching of submodules]'
     '(-q --quiet -v --verbose --progress)'{-q,--quiet}'[suppress all output]'
     '(-q --quiet -v --verbose)'{-v,--verbose}'[output additional information]'
     '(-q --quiet)--progress[output progress information]')
@@ -5828,7 +5946,10 @@ __git_setup_apply_options () {
     '-C-[ensure at least N lines of context match before and after each change]: :_guard  "[[\:digit\:]]#" "number of lines of context"'
     '--reject[apply hunks that apply and leave rejected hunks in .rej files]'
     '(--ignore-space-change --ignore-whitespace)'{--ignore-space-change,--ignore-whitespace}'[ignore changes in whitespace in context lines]'
-    '--directory=[root to prepend to all filenames]:root:_directories')
+    '--directory=[root to prepend to all filenames]:root:_directories'
+    '*--exclude=[skip files matching specified pattern]:pattern'
+    '*--include=[include files matching specified pattern]:pattern'
+    )
 }
 
 # Git Config Helpers
@@ -6085,6 +6206,7 @@ __git_sendemail_suppresscc_values () {
     bodycc:'avoid including anyone mentiond in Cc lines in patch body except for self' \
     sob:'avoid including anyone mentiond in Signed-off-by lines except for self' \
     cccmd:'avoid running --cc-cmd' \
+    tocmd:'avoid running --to-cmd' \
     body:'equivalent to sob + bodycc' \
     all:'avoid all auto Cc values'
 }
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 06/14] _git: completion updates to match latest git v1.8.3 part 2
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (4 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 05/14] _git: completion updates to match latest git v1.8.3 Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 07/14] _git: add new configuration options to match latest git v1.8.3 Øystein Walle
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: Øystein Walle

---
 Completion/Unix/Command/_git | 118 +++++++++++++++++++++++++++++++++----------
 1 file changed, 91 insertions(+), 27 deletions(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 867bd67..205ae67 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -64,8 +64,9 @@ _git-add () {
     '(-i --interactive : -)'{-i,--interactive}'[add contents interactively to index]' \
     '(-p --patch)'{-p,--patch}'[like -i but go directly into patch mode for specified files]' \
     '(-e --edit)'{-e,--edit}'[open diff against index in editor]' \
-    '(-u --update -A --all)'{-u,--update}'[update only files git already knows about]' \
-    '(-A --all -u --update)'{-A,--all}'[act as both add . and add -u]' \
+    '(-A --all --no-ignore-removal -u --update --no-all --ignore-removal)'{-A,--all,--no-ignore-removal}'[add, modify, and remove index entries to match the working tree]' \
+    '(-A --all --no-ignore-removal -u --update --no-all --ignore-removal)'{--no-all,--ignore-removal}'[like "--all" but ignore removals]' \
+    '(-A --all --no-ignore-removal -u --update --no-all --ignore-removal)'{-u,--update}'[update the index just where it already has an entry matching <pathspec>]' \
     '(-N --intent-to-add)'{-N,--intent-to-add}'[record only that path will be added later]' \
     '--refresh[do not add files, but refresh their stat() info in index]' \
     '--ignore-errors[continue adding if an error occurs]' \
@@ -104,6 +105,7 @@ _git-am () {
   _arguments -S \
     '(-s --signoff)'{-s,--signoff}'[add Signed-off-by: line to the commit message]' \
     '(-k --keep)'{-k,--keep}'[pass -k to git mailinfo]' \
+    '--keep-non-patch[pass -b to git mailinfo]' \
     '(          --no-keep-cr)--keep-cr[pass --keep-cr to git mailsplit]' \
     '(--keep-cr             )--no-keep-cr[do not pass --keep-cr to git mailsplit]' \
     '(-c --scissors --no-scissors)'{-c,--scissors}'[strip everything before a scissors line]' \
@@ -315,10 +317,12 @@ _git-branch () {
   _arguments -w -S -s \
     "($c $m $d $e --no-color :)--color=-[turn on branch coloring]:: :__git_color_whens" \
     "($c $m $d $e : --color)--no-color[turn off branch coloring]" \
+    "($c $m $d $e --no-column)"'--column=[display tag listing in columns]:column.branch option:((always\:"always show in columns" never\:"never show in columns" auto\:"show in columns if the output is to the terminal" column\:"fill columns before rows (default)" row\:"fill rows before columns" plain\:"show in one column" dense\:"make unequal size columns to utilize more space" nodense\:"make equal size columns"))' \
+    "($c $m $d $e --column)"'--no-column[do not display in columns]' \
     "($c $m $d $e )*--list[list only branches matching glob]:pattern" \
     "($c $m    $e  -a)-r[list or delete only remote-tracking branches]" \
     "($c $m $d $e: -r)-a[list both remote-tracking branches and local branches]" \
-    "($c $m $d $e : -v --verbose)"{-v,--verbose}'[show SHA1 and commit subject line for each head]' \
+    "($c $m $d $e : -v -vv --verbose)"{-v,-vv--verbose}'[show SHA1 and commit subject line for each head]' \
     "($c $m $d $e :)--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length" \
     "($c $m $d $e :)--no-abbrev[do not abbreviate sha1s]" \
     "($l $m $d $e)-l[create the branch's reflog]" \
@@ -419,6 +423,7 @@ _git-checkout () {
     '(--patch)--no-track[override the branch.autosetupmerge configuration variable]' \
     $new_branch_reflog_opt \
     '(-b -B -t --track --patch)--orphan[create a new orphan branch based at given commit]: :__git_branch_names' \
+    '--ignore-skip-worktree-bits[ignores patterns and adds back any files in <paths>]' \
     '(-q --quiet -f --force -m --merge --conflict --patch)'{-m,--merge}'[3way merge current branch, working tree and new branch]' \
     '(-q --quiet -f --force -m --merge --patch)--conflict[same as --merge, using given merge style]:style:(merge diff3)' \
     '(-)'{-p,--patch}'[interactively select hunks in diff between given tree-ish and working tree]' \
@@ -472,6 +477,8 @@ _git-cherry-pick () {
     '(- :)--quit[end revert or cherry-pick sequence]' \
     '(- :)--continue[resume revert or cherry-pick sequence]' \
     '(- :)--abort[cancel revert or cherry-pick sequence]' \
+    '--allow-empty-message[allow replaying a commit with an empty message]' \
+    '--keep-redundant-commits[keep cherry-picked commits that will become empty]' \
     '(-e --edit --ff)'{-e,--edit}'[edit commit before committing the revert]' \
     '(--ff)-x[append information about what commit was cherry-picked]' \
     '(-m --mainline)'{-m,--mainline}'[specify mainline when cherry-picking a merge commit]:parent number' \
@@ -588,6 +595,18 @@ _git-clone () {
   return ret
 }
 
+(( $+functions[_git-column] )) ||
+_git-column () {
+  _arguments -w -S -s \
+    '--command=[look up layout mode using config vars column.<name> and column.ui]' \
+    '--mode=[specify layout mode. See configuration variable column.ui for option syntax]' \
+    '--raw-mode=[same as --mode but take mode encoded as a number]' \
+    '--width=[specify the terminal width]' \
+    '--indent=[string to be printed at the beginning of each line]' \
+    '--nl[string to be printed at the end of each line, including newline character]' \
+    '--padding[the number of spaces between columns. One space by default]'
+}
+
 (( $+functions[_git-commit] )) ||
 _git-commit () {
   local amend_opt='--amend[amend the tip of the current branch]'
@@ -623,6 +642,7 @@ _git-commit () {
                                                                             default\:"act as '\''strip'\'' if the message is to be edited and as '\''whitespace'\'' otherwise"))' \
     '(-e --edit --no-edit)'{-e,--edit}'[edit the commit message before committing]' \
     '(-e --edit --no-edit)--no-edit[do not edit the commit message before committing]' \
+    '--no-post-rewrite[bypass the post-rewrite hook]' \
     '(-a --all --interactive -o --only -i --include)'{-i,--include}'[update the given files and commit the whole index]' \
     '(-a --all --interactive -o --only -i --include)'{-o,--only}'[commit only the given files]' \
     '(-u --untracked-files)'{-u-,--untracked-files=}'[show files in untracked directories]::mode:((no\:"show no untracked files"
@@ -863,7 +883,8 @@ _git-grep () {
   _arguments -C -A '-*' \
     '(-O --open-files-in-pager --no-index)--cached[search blobs registered in index file instead of working tree]' \
     '(--cached)--no-index[search files in current directory, not just treacked files]' \
-    '--exclude-standard[exclude files standard ignore mechanisms]' \
+    '(--exclude-standard)--no-exclude-standard[also search in ignored files]' \
+    '(--no-exclude-standard)--exclude-standard[exclude files standard ignore mechanisms]' \
     '--untracked[search in untracked files]' \
     '(-a --text)'{-a,--text}'[process binary files as if they were text]' \
     '(-i --ignore-case)'{-i,--ignore-case}'[ignore case when matching]' \
@@ -878,7 +899,7 @@ _git-grep () {
     '(-E --extended-regexp -G --basic-regexp -P --perl-regexp -F --fixed-strings)'{-G,--basic-regexp}'[use POSIX basic regexes]' \
     '(-E --extended-regexp -G --basic-regexp -P --perl-regexp -F --fixed-strings)'{-P,--perl-regexp}'[use perl-compatible regexes]' \
     '(-E --extended-regexp -G --basic-regexp -P --perl-regexp -F --fixed-strings)'{-F,--fixed-strings}'[do not interpret pattern as a regex]' \
-    '-n[prefix the line number to matching lines]' \
+    '(-n --line-number)'{-n,--line-number}'[prefix the line number to matching lines]' \
     '(-l --files-with-matches -L --files-without-match --name-only)'{-l,--files-with-matches,--name-only}'[show only names of matching files]' \
     '(-l --files-with-matches -L --files-without-match)'{-L,--files-without-match}'[show only names of non-matching files]' \
     '(--cached -O --open-files-in-pager)'{-O,--open-files-in-pager}'=-[open matching files in pager]::_path_commands' \
@@ -888,9 +909,9 @@ _git-grep () {
     '(--color           )---no-color[do not color matches]' \
     '--break[prefix the line number to matching lines]' \
     '--heading[show the filename above the matches]' \
-    '-A[show trailing context]: :__git_guard_number lines' \
-    '-B[show leading context]: :__git_guard_number lines' \
-    '-C[show context]: :__git_guard_number lines' \
+    '(-A --after-context)'{-A,--after-context=}'[show <num> trailing lines, and separate groups of matches]: :__git_guard_number lines' \
+    '(-B --before-context)'{-B,--before-context=}'[show <num> leading lines, and separate groups of matches]: :__git_guard_number lines' \
+    '(-A --after-context -B --before-context -C --context)'{-C,--context=}'[show <num> leading and trailing lines, and separate groups of matches]: :__git_guard_number lines' \
     '(-p --show-function)'{-p,--show-function}'[show preceding line containing function name of match]' \
     '(-W --function-context)'{-W,--function-context}'[show whole function where a match was found]' \
     '(1)*-f[read patterns from given file]:pattern file:_files' \
@@ -1205,6 +1226,7 @@ _git-push () {
     '--porcelain[produce machine-readable output]' \
     '--delete[delete all listed refs from the remote repository]' \
     '--tags[all tags under refs/tags are pushed]' \
+    '--follow-tags[also push missing annotated tags reachable from the pushed refs]' \
     '(--receive-pack --exec)'{--receive-pack=-,--exec=-}'[path to git-receive-pack on remote]:remote git-receive-pack:_files' \
     '(-f --force)'{-f,--force}'[allow refs that are not ancestors to be updated]' \
     '(:)--repo=[default repository to use]:repository:__git_any_repositories' \
@@ -1233,6 +1255,7 @@ _git-rebase () {
   _arguments -A '-*' \
     '(- :)--continue[continue after resolving merge conflict]' \
     '(- :)--abort[abort current rebase]' \
+    '--keep-empty[keep empty commits in the result]' \
     '(- :)--skip[skip the current patch]' \
     '(-m --merge)'{-m,--merge}'[use merging strategies to rebase]' \
     '*'{-s,--strategy=}'[use given merge strategy]:merge strategy:__git_merge_strategies' \
@@ -1521,7 +1544,10 @@ _git-status () {
                                                                                      normal\:"show untracked files and directories" \
                                                                                      all\:"also show untracked files in untracked directories (default)"))' \
     '--ignore-submodules[ignore changes to submodules]:: :__git_ignore_submodules_whens' \
+    '--ignored[show ignored files as well]' \
     '(--porcelain)-z[use NUL termination on output]' \
+    '(--no-column)--column=-[display in columns]::column.status option:((always\:"always show in columns" never\:"never show in columns" auto\:"show in columns if the output is to the terminal" column\:"fill columns before rows (default)" row\:"fill rows before columns" plain\:"show in one column" dense\:"make unequal size columns to utilize more space" nodense\:"make equal size columns"))' \
+    '(--column)--no-column[do not display in columns]' \
     '*: :__git_ignore_line_inside_arguments _files'
 }
 
@@ -1653,9 +1679,9 @@ _git-tag () {
 
   _arguments -A '-*' \
     - creation \
-      '(   -s -u)-a[create an unsigned, annotated tag]' \
-      '(-a    -u)-s[create an signed and annotated tag]' \
-      '(-a -s   )-u[create a tag, annotated and signed with the given key]: :__git_gpg_secret_keys' \
+      '(   -s -u --local-user)-a[create an unsigned, annotated tag]' \
+      '(-a    -u --local-user)-s[create an signed and annotated tag]' \
+      '(-a -s)'{-u,--local-user}'[create a tag, annotated and signed with the given key]: :__git_gpg_secret_keys' \
       '-f[replace existing tag]' \
       '--cleanup=[cleanup message]:mode:((verbatim\:"no cleanup" whitespace\:"remove leading and trailing whitespace" strip\:"remove leading and trailing whitespace and comments"))' \
       $message_opts \
@@ -1667,6 +1693,8 @@ _git-tag () {
     - listing \
       '-n+[limit line output of annotation]: :__git_guard_number "limit"' \
       '-l[list tags matching pattern]' \
+      '(--no-column)--column=-[display tag listing in columns]::column.tag option:((always\:"always show in columns" never\:"never show in columns" auto\:"show in columns if the output is to the terminal" column\:"fill columns before rows (default)" row\:"fill rows before columns" plain\:"show in one column" dense\:"make unequal size columns to utilize more space" nodense\:"make equal size columns"))' \
+      '(--column)--no-column[do not display in columns]' \
       '--contains=[only list tags which contain the specified commit]: :__git_commits' \
       '--points-at=[only list tags of the given object]: :__git_commits' \
       '::pattern' \
@@ -1740,7 +1768,9 @@ _git-config () {
       '(2)--get-regexp[like "--get-all", but interpret "name" as a regular expression]' \
       '(2 3 --bool --int --bool-or-int --path -z --null)--get-colorbool[check if color should be used]: :->gettable-colorbool-option' \
       '(2 3 --bool --int --bool-or-int --path -z --null)--get-color[find color setting]: :->gettable-color-option' \
-      '(-e --edit --bool --int --bool-or-int --path -z --null)'{-e,--edit}'[open config file for editing]' && ret=0
+      '(-e --edit --bool --int --bool-or-int --path -z --null)'{-e,--edit}'[open config file for editing]' \
+      '(--no-includes)'--includes'[respect "include.*" directives in config files when looking up values]' \
+      '(--includes)'--no-includes'[do not respect "include.*" directives]' && ret=0
 
   # TODO: Most all _path_commands should be able to take arguments and so on.
   # How do we deal with that and how do we quote the whole argument to git
@@ -2677,7 +2707,9 @@ _git-fast-export () {
     '-C-[detect copies as well as renames with given scope]: :__git_guard_number size' \
     '--export-marks=[dump internal marks table when complete]: :_files' \
     '--import-marks=[load marks before processing input]: :_files' \
+    '--import-marks-if-exists=[silently skip if files does not exist]: :_files' \
     '--fake-missing-tagger=[fake a tagger when tags lack them]' \
+    '--use-done-feature[start with a "feature done" stanza, and terminate with a "done" command]' \
     '--no-data[do not output blocb objects, instead referring to them via their SHA-1 hash]' \
     '--full-tree[output full tree for each commit]' \
     '*: :__git_commit_ranges'
@@ -2686,9 +2718,11 @@ _git-fast-export () {
 (( $+functions[_git-fast-import] )) ||
 _git-fast-import () {
   _arguments -S -A '-*' \
+    '--cat-blob-fd=-[write responses to cat-blob and ls queries to <fd> instead of stdout]:file descriptor' \
     '--date-format=-[type of dates used in input]:format:((raw\:"native Git format"
                                                            rfc2822\:"standard email format from RFC 2822"
                                                            now\:"use current time and timezone"' \
+    '--done[terminate with error if there is no "done" command at the end of the stream]' \
     '--force[force updating modified existing branches]' \
     '--max-pack-size=-[maximum size of each packfile]: :__git_guard_bytes' \
     '--big-file-threshold=-[maximum size of blob to create deltas for]: :__git_guard_bytes' \
@@ -2730,6 +2764,7 @@ _git-mergetool () {
   # TODO: Only complete files with merge conflicts.
   _arguments -S -A '-*' \
     '(-t --tool)'{-t,--tool=}'[merge resolution program to use]: :__git_mergetools' \
+    '--tool-help[print a list of merge tools that may be used with "--tool"]' \
     '(-y --no-prompt --prompt)'{-y,--no-prompt}'[do not prompt before invocation of merge resolution program]' \
     '(-y --no-prompt)--prompt[prompt before invocation of merge resolution program]' \
     '*:conflicted file:_files'
@@ -3034,7 +3069,8 @@ _git-cherry () {
 (( $+functions[_git-count-objects] )) ||
 _git-count-objects () {
   _arguments \
-    '(-v --verbose)'{-v,--verbose}'[also report number of in-pack objects and objects that can be removed]'
+    '(-v --verbose)'{-v,--verbose}'[also report number of in-pack objects and objects that can be removed]' \
+    {-H,--human-readable}'[Print sizes in human readable format]'
 }
 
 (( $+functions[_git-difftool] )) ||
@@ -3046,6 +3082,9 @@ _git-difftool () {
     '(-y --no-prompt)--prompt[prompt before invocation of diff tool]' \
     '(-t --tool -x --extcmd)'{-t,--tool=-}'[merge resolution program to use]: :__git_difftools' \
     '(-t --tool -x --extcmd)'{-x,--extcmd=-}'[custom diff command to use]: :_path_commands' \
+    '--tool-help[print a list of diff tools that may be used with --tool]' \
+    '(--symlinks)--no-symlinks[make copies of instead of symlinks to the working tree]' \
+    '(---no-symlinks)--symlinks[make symlinks to instead of copies of the working tree]' \
     '(-g --gui)'{-g,--gui}'[use diff.guitool instead of diff.tool]'
 }
 
@@ -3075,10 +3114,11 @@ _git-get-tar-commit-id () {
 (( $+functions[_git-help] )) ||
 _git-help () {
   _arguments -w -S -s \
-    '(         -i --info -m --man -w --web)'{-a,--all}'[show all available commands]' \
-    '(-a --all           -m --man -w --web)'{-i,--info}'[show all available commands]' \
-    '(-a --all -i --info          -w --web)'{-m,--man}'[show all available commands]' \
-    '(-a --all -i --info -m --man         )'{-w,--web}'[show all available commands]' \
+    '(         -g --guides -i --info -m --man -w --web)'{-a,--all}'[show all available commands]' \
+    '(-a --all -g --guides           -m --man -w --web)'{-i,--info}'[show all available commands]' \
+    '(-a --all -g --guides -i --info          -w --web)'{-m,--man}'[show all available commands]' \
+    '(-a --all -g --guides -i --info -m --man         )'{-w,--web}'[show all available commands]' \
+    '(-g --guides)'{-g,--guides}'[prints a list of useful guides on the standard output]' \
     ': :_git_commands'
 }
 
@@ -3198,6 +3238,7 @@ _git-rev-parse () {
       '(           --symbolic-full-name)--symbolic[output in a format as true to input as possible]' \
       '(--symbolic                     )--symbolic-full-name[same as --symbolic, but omit non-ref inputs]' \
       '--abbrev-ref=-[a non-ambiguous short name of object]::mode:(strict loose)' \
+      '--disambiguate=-[show every object whose name begins with the given prefix]:prefix' \
       '--all[show all refs found in refs/]' \
       '--branches=-[show branch refs found in refs/heads/]::shell glob pattern' \
       '--tags=-[show tag refs found in refs/tags/]::shell glob pattern' \
@@ -3213,6 +3254,7 @@ _git-rev-parse () {
       '(--revs-only --no-revs --flags --no-flags --verify)--short=-[show only shorter unique name]:: :__git_guard_number length' \
       '(--since --after)'{--since=-,--after=-}'[show --max-age= parameter corresponding given date string]:datestring' \
       '(--until --before)'{--until=-,--before=-}'[show --min-age= parameter corresponding given date string]:datestring' \
+      '--resolve-git-dir[check if <path> is a valid repository or gitfile and print location]:git dir:_files -/' \
       '*: :__git_objects' && ret=0
   fi
 
@@ -3392,13 +3434,16 @@ _git-send-email () {
     '--subject=[specify the initial subject of the email thread]:subject' \
     '--to=[specify the primary recipient of the emails]: :_email_addresses' \
     '--8bit-encoding=[encoding to use for non-ASCII messages]: :__git_encodings' \
+    '--compose-encoding=[encoding to use for compose messages]: :__git_encodings' \
     '--envelope-sender[specify the envelope sender used to send the emails]: :_email_addresses' \
     '--smtp-encryption=[specify encryption method to use]: :__git_sendemail_smtpencryption_values' \
     '--smtp-domain=[specify FQDN used in HELO/EHLO]: :_domains' \
     '--smtp-pass=[specify password to use for SMTP-AUTH]::password' \
     '--smtp-server=[specify SMTP server to connect to]:smtp server:_hosts' \
     '--smtp-server-port=[specify port to connect to SMTP server on]:smtp port:_ports' \
+    '--smtp-server-option=[specify the outgoing SMTP server option to use]:SMPT server option' \
     '--smtp-user=[specify user to use for SMTP-AUTH]:smtp user:_users' \
+    '--smtp-debug=[enable or disable debug output]:smtp debug:((0\:"disable" 1\:"enable"))' \
     '--cc-cmd=[specify command to generate Cc\: header with]:Cc\: command:_path_commands' \
     '--to-cmd=[specify command to generate To\: header with]:To\: command:_path_commands' \
     '(                 --no-chain-reply-to)--chain-reply-to[send each email as a reply to previous one]' \
@@ -3917,6 +3962,7 @@ _git-read-tree () {
     $exclude_per_directory_opt \
     '--index-output=[write index in the named file instead of $GIT_INDEX_FILE]: :_files' \
     '--no-sparse-checkout[display sparse checkout support]' \
+    '--empty[instead of reading tree object(s) into the index, just empty it]' \
     '1:first tree-ish to be read/merged:__git_tree_ishs' \
     '2::second tree-ish to be read/merged:__git_tree_ishs' \
     '3::third tree-ish to be read/merged:__git_tree_ishs'
@@ -4331,6 +4377,8 @@ _git-daemon () {
     '--disable=-[disable site-wide service]: :__git_daemon_service' \
     '--allow-override[allow overriding site-wide service]: :__git_daemon_service' \
     '--forbid-override[forbid overriding site-wide service]: :__git_daemon_service' \
+    '(--no-informative-errors)--informative-errors[report more verbose errors to the client]' \
+    '(--informative-errors)--no-informative-errors[report all errors as "access denied" to the client]' \
     '*:repository:_directories'
 }
 
@@ -4535,7 +4583,10 @@ _git-check-attr () {
 _git-check-ref-format () {
   _arguments \
     '-h[display usage information]' \
-    '--print[display canonicalized name of hypothetical reference of given name]' \
+    '(--no-allow-onelevel)--allow-onelevel[accept one-level refnames]' \
+    '(--allow-onelevel)--no-allow-onelevel[do not accept one-level refnames]' \
+    '--refspec-pattern[interpret <refname> as a reference name pattern for a refspec]' \
+    '--normalize[Normalize refname by removing leading slashes]' \
     '--branch[expand previous branch syntax]' \
     ': :__git_references'
 }
@@ -4590,7 +4641,8 @@ _git-patch-id () {
 (( $+functions[_git-stripspace] )) ||
 _git-stripspace () {
   _arguments \
-    '(-s --strip-comments)'{-s,--strip-comments}'[also strip lines starting with #]'
+    '(-s --strip-comments)'{-s,--strip-comments}'[also strip lines starting with #]' \
+    '(-c --comment-lines)'{-c,--comment-lines}'[prepend comment character and blank to each line]'
 }
 
 # INTERNAL GIT COMPLETION FUNCTIONS
@@ -5747,13 +5799,11 @@ __git_setup_diff_options () {
     '--full-index[show full object name of pre- and post-image blob]'
     '(--full-index)--binary[in addition to --full-index, output binary diffs for git-apply]'
     '--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length'
-    # TODO: --break-rewrites is undocumented.
     '(-B --break-rewrites)'{-B-,--break-rewrites=-}'[break complete rewrite changes into pairs of given size]:: :__git_guard_number size'
-    # TODO: --detect-renames is undocumented.
-    '(-M --detect-renames)'{-M-,--detect-renames=-}'[detect renames with given scope]:: :__git_guard_number size'
-    # TODO: --detect-copies is undocumented.
-    '(-C --detect-copies)'{-C-,--detect-copies=-}'[detect copies as well as renames with given scope]:: :__git_guard_number size'
+    '(-M --find-renames)'{-M-,--find-renames=-}'[Detect renames with given scope]:: :__git_guard_number size'
+    '(-C --find-copies)'{-C-,--find-copies=-}'[detect copies as well as renames with given scope]:: :__git_guard_number size'
     '--find-copies-harder[try harder to find copies]'
+    '(-D --irreversible-delete)'{-D,--irreversible-delete}'[omit the preimage for deletes]'
     '-l-[limit number of rename/copy targets to run]: :__git_guard_number'
     '--diff-filter=-[select certain kinds of files for diff]: :_guard "[ACDMRTUXB*]#" kinds'
     '-S-[look for differences that contain the given string]:string'
@@ -5812,7 +5862,8 @@ __git_setup_revision_options () {
                                                                                     email\:"use email headers like From and Subject"
                                                                                     raw\:"the raw commits"
                                                                                     format\:"specify own format"))'
-    '--abbrev-commit[show only partial prefixes of commit object names]'
+    '(--abbrev-commit --no-abbrev-commit)--abbrev-commit[show only partial prefixes of commit object names]'
+    '(--abbrev-commit --no-abbrev-commit)--no-abbrev-commit[show the full 40-byte hexadecimal commit object name]'
     '--oneline[shorthand for --pretty=oneline --abbrev-commit]'
     '--encoding=-[output log messages in given encoding]:: :__git_encodings'
     '(--no-notes --notes)--no-notes[do not show notes that annotate commit]'
@@ -5841,6 +5892,10 @@ __git_setup_revision_options () {
     '--remove-empty[stop when given path disappears from tree]'
     '--merges[display only merge commits]'
     '--no-merges[do not display commits with more than one parent]'
+    '(--min-parents --no-min-parents)--min-parents=-[show only commits having at least <n> commits]: :__git_guard_number "minimum number of parents"'
+    '(--min-parents --no-min-parents)--no-min-parents[reset limit]'
+    '(--max-parents --no-max-parents)--max-parents=-[show only commits having at most <n> commits]: :__git_guard_number "maximum number of parents"'
+    '(--max-parents --no-max-parents)--no-max-parents[reset limit]'
     '--first-parent[follow only first parent from merge commits]'
     '*--not[reverses meaning of ^ prefix for revisions that follow]'
     '--all[show all commits from refs]'
@@ -5910,6 +5965,8 @@ __git_setup_merge_options () {
     '--ff-only[refuse to merge unless HEAD is up to date or merge can be resolved as a fast-forward]'
     '*'{-s,--strategy=}'[use given merge strategy]:merge strategy:__git_merge_strategies'
     '*'{-X,--strategy-option=}'[pass merge-strategy-specific option to merge strategy]'
+    '(--verify-signatures)--no-verify-signatures[verify the commits being merged or abort]'
+    '(--no-verify-signatures)--verify-signatures[do not verify the commits being merged]'
     '(-q --quiet -v --verbose)'{-q,--quiet}'[suppress all output]'
     '(-q --quiet -v --verbose)'{-v,--verbose}'[output additional information]')
 }
@@ -5929,10 +5986,13 @@ __git_setup_fetch_options () {
     '(--no-tags -t --tags)'{-t,--tags}'[fetch remote tags]'
     '(-u --update-head-ok)'{-u,--update-head-ok}'[allow updates of current branch head]'
     '--upload-pack=[specify path to git-upload-pack on remote side]:remote path'
-    '(--no-recurse-submodules --recurse-submodules)--recurse-submodules=[specify when to fetch commits of submodules]:recursive fetching mode:((no\:"disable recursion"
+    '(--no-recurse-submodules --recurse-submodules)--recurse-submodules=-[specify when to fetch commits of submodules]::recursive fetching mode:((no\:"disable recursion"
                                                                                                                                                 yes\:"always recurse"
                                                                                                                                                 on-demand\:"only when submodule reference in superproject is updated"))'
     '(--no-recurse-submodules --recurse-submodules)--no-recurse-submodules[disable recursive fetching of submodules]'
+    '(--no-recurse-submodules)--recurse-submodules-default=-[provide internal temporary non-negative value for "--recurse-submodules"]::recursive fetching mode:((yes\:"always recurse"
+                                                                                                                                                                 on-demand\:"only when submodule reference in superproject is updated"))'
+    '--submodule-prefix=-[prepend <path> to paths printed in informative messages]:submodule prefix path:_files -/'
     '(-q --quiet -v --verbose --progress)'{-q,--quiet}'[suppress all output]'
     '(-q --quiet -v --verbose)'{-v,--verbose}'[output additional information]'
     '(-q --quiet)--progress[output progress information]')
@@ -6267,13 +6327,17 @@ _git() {
       '(- :)--help[display help message]' \
       '-c[pass configuration parameter to command]:parameter' \
       '--exec-path=-[path containing core git-programs]:: :_directories' \
-      '--html-path[display path to HTML documentation and exit]' \
+      '(: -)--man-path[print the manpath for the man pages for this version of Git and exit]' \
+      '(: -)--info-path[print the path where the info files are installed and exit]' \
+      '(: -)--html-path[display path to HTML documentation and exit]' \
       '(-p --paginate)'{-p,--paginate}'[pipe output into $PAGER]' \
       '--no-pager[do not pipe git output into a pager]' \
       '--git-dir=-[path to repository]: :_directories' \
       '--work-tree=-[path to working tree]: :_directories' \
+      '--namespace=-[set the Git namespace]: :_directories' \
       '--bare[use $PWD as repository]' \
       '--no-replace-objects[do not use replacement refs to replace git objects]' \
+      '--literal-pathspecs[treat pathspecs literally, rather than as glob patterns]' \
       '(-): :->command' \
       '(-)*:: :->option-or-argument' && return
 
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 07/14] _git: add new configuration options to match latest git v1.8.3
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (5 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 06/14] _git: completion updates to match latest git v1.8.3 part 2 Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 08/14] _git: reword _git-config TODO Øystein Walle
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: Øystein Walle

---
 Completion/Unix/Command/_git | 101 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 100 insertions(+), 1 deletion(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 205ae67..294620b 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -1781,15 +1781,29 @@ _git-config () {
   declare -a git_options_static
   git_options_static=(
     advice.pushNonFastForward:'show advice when git push refuses non-fast-forward refs::->bool:true'
+    advice.pushUpdateRejected:'combined setting for advice.push*::->bool:true'
+    advice.pushNonFFCurrent:'show advice when git push fails due to a non-fast-forward update to the current branch::->bool:true'
+    advice.pushNonFFDefault:'show advice to set push.default to "upstream" or "current" after running git-push::->bool:true'
+    advice.pushNonFFMatching:'show advice when running git-push and pushed matching refs explicitly::->bool:true'
+    advice.pushAlreadyExists:'show advice when git-push rejects an update that does not qualify for fast-forwarding::->bool:true'
+    advice.pushFetchFirst:'show advice when git-push rejects an update that tries to overwrite a remote ref that points at unknown object::->bool:true'
+    advice.pushNeedsForce:'show advice when git-push rejects an update that tries to overwrite a remote ref that points a non-commitish::->bool:true'
     advice.statusHints:'show advice in output of git status::->bool:true'
+    advice.statusUoption:'show advice to consider using the "-u" option to git-status when it takes more than 2 seconds::->bool:true'
     advice.commitBeforeMerge:'show advice when git merge refuses to merge::->bool:true'
     advice.resolveConflict:'show advice when conflict prevents operation from being performed::->bool:true'
     advice.implicitIdentity:'show advice when identity is guessed from system settings::->bool:true'
     advice.detachedHead:'show advice when entering detached-HEAD state::->bool:true'
+    advice.amWorkDir:'show the location of the patch file when git-am fails to apply it::->bool:true'
     blame.blankboundary:'show blank SHA-1 for boundary commits::->bool:false'
     blame.showroot:'show root commits as normal commits::->bool:false'
     blame.date:'date format to use in output::__git_date_formats:iso'
+    'branch.*.description:branch description:branch description:->string'
+    cvsexportcommit.cvsdir:'the default location of the CVS checkout to use for the export:cvs export dir:_directories'
     core.fileMode:'track changes to the executable bit of files::->bool:true'
+    core.attributesfile:'look into this file for attributes in addition to .gitattributes:additional attributes file:_files'
+    core.abbrev:'set the length object names are abbreviated to:length:->int:7'
+    core.commentchar:'comment character when using an editor::->string'
     core.ignoreCygwinFSTricks:'use Cygwin stat()/lstat()::->bool:true'
     core.ignorecase:'use workarounds for non-case-sensitive filesystems::->bool:false'
     core.trustctime:'trust inode change time::->bool:true'
@@ -1811,6 +1825,7 @@ _git-config () {
     core.loosecompression:'level of compression to apply to non-pack files::->compression:1'
     core.packedGitWindowSize:'size of mappings of pack files:pack window size:->bytes'
     core.packedGitLimit:'maximum number of bytes to map from pack files:maximum pack file map size:->bytes'
+    core.precomposeunicode:'revert the unicode decomposition of filenames done by Mac OS::->bool:false'
     core.deltaBaseCacheLimit:'maximum size of cache for base objects:maximum base objects cache size:->bytes:16m'
     core.bigFileThreshold:'maximum size of files to compress:maximum compress size:->bytes:512m'
     core.excludesfile:'additional file to use for exclusion:excludes file:_files'
@@ -1821,9 +1836,17 @@ _git-config () {
     core.fsyncobjectfiles:'fsync() when writing object files::->bool:false'
     core.preloadindex:'use parallel index preload for operations like git diff::->bool:false'
     core.createObject:'take steps to prevent overwriting existing objects::->core.createObject:link'
+    core.checkstat:'determine which stat fields to match between the index and work tree::->core.checkstat:default'
     core.notesRef:'show notes in given refs:refs:->string:refs/notes/commits'
     core.sparseCheckout:'use sparse checkout::->bool:false'
+    credential.helper:'external helper to be called when a username or password credential is needed::_path_commands'
+    credential.useHttpPath:'consider the "path" component of an http or https URL to be important::->bool:false'
+    credential.username:'If no username is set use this username by default:default username:->string'
+    'credential.*.helper:external helper to be called when a username or password credential is needed::_path_commands'
+    'credential.*.useHttpPath:consider the "path" component of an http or https URL to be important::->bool:false'
+    'credential.*.username:if no username is set use this username by default:default username:->string'
     add.ignore-errors:'ignore indexing errors when adding files::->bool:false'
+    add.ignoreErrors:'ignore indexing errors when adding files::->bool:false'
     am.keepcr:'keep CR characters when splitting mails::->bool:false'
     apply.ignorewhitespace:'ignore whitespace changes::->apply.ignorewhitespace:no'
     apply.whitespace:'default value for the --whitespace option::->apply.whitespace:error'
@@ -1841,6 +1864,7 @@ _git-config () {
     color.branch.current:'color of the current branch::->color'
     color.branch.local:'color of a local branch::->color'
     color.branch.remote:'color of a remote branch::->color'
+    color.branch.upstream:'color of upstream branches::->color'
     color.branch.plain:'color of other branches::->color'
     color.diff:'color output of git diff::->color-bool'
     color.diff.plain:'color of context text::->color'
@@ -1872,6 +1896,7 @@ _git-config () {
     color.pager:'feed colored output to pager::->bool:true'
     color.showbranch:'color output of git show-branch::->color-bool'
     color.status:'color output of git status::->color-bool'
+    color.status.branch:'color of the current branch::->color'
     color.status.header:'color of header text::->color'
     color.status.added:'color of added, but not yet committed, files::->color'
     color.status.updated:'color of updated, but not yet committed, files::->color'
@@ -1882,15 +1907,23 @@ _git-config () {
     commit.cleanup:'default --cleanup option::->commit.cleanup:default'
     commit.status:'include status information in commit message template::->bool:true'
     commit.template:'template file for commit messages:template:_files'
+    'diff.*.binary:make the diff driver treat files as binary::->bool:false'
+    'diff.*.cachetextconv:make the diff driver cache the text conversion outputs::->bool:false'
+    'diff.*.command:custom diff driver command::_path_commands'
+    'diff.*.textconv:command to generate the text-converted version of a file::_path_commands'
+    'diff.*.wordregex:regular expression that the diff driver should use to split words in a line:regular expression:->string'
+    'diff.*.xfuncname:regular expression that the diff driver should use to recognize the hunk header:regular expression:->string'
     diff.algorithm:'default diff algorithm::->diff.algorithm:default'
     diff.autorefreshindex:'run git update-index --refresh before git diff::->bool:true'
     diff.context:'default number of context lines::->int:3'
+    diff.dirstat:'comma separated list of --dirstat parameters specifying default behaviour:comma-separated list:->string:changes,noncumulative,3'
     diff.external:'command to generate diff with:diff command:_path_commands'
     diff.mnemonicprefix:'use mnemonic source and destination prefixes::->bool:false'
     diff.noprefix:'strip source and destination prefixes::->bool:false'
     diff.renameLimit:'number of files to consider when detecting copy/renames:rename limit:->int'
     diff.renames:'try to detect renames::->diff.renames:true'
     diff.ignoreSubmodules:'ignore submodules::->bool:false'
+    diff.statGraphWidth:'width of the graph part in --stat output:width:->int'
     diff.submodule:'output format for submodule differences::->diff.submodule:short'
     diff.suppressBlankEmpty:'inbihit printing space before empty output lines::->bool:false'
     diff.tool:'diff tool to use::__git_difftools'
@@ -1900,7 +1933,12 @@ _git-config () {
     diff.wordRegex:'regex used to determine what a word is when performing word-by-word diff:regex:->string'
     diff.guitool:'diff tool with gui to use::__git_difftools'
     fetch.unpackLimit:'maximum number of objects to unpack when fetching:unpack limit:->int'
+    fetch.recurseSubmodules:'recurse into submodules (as needed) when fetching::->fetch.recurseSubmodules:on-demand'
+    fetch.fsckObjects:'check all fetched objects::->bool:false'
+    'filter.*.clean:command which is used to convert the content of a worktree file to a blob upon checkin::_path_commands'
+    'filter.*.smudge:command which is used to convert the content of a blob object to a worktree file upon checkout::_path_commands'
     format.attach:'use multipart/mixed attachments::->bool:false'
+    format.coverLetter:'control whether to generate a cover-letter when format-patch is invoked::->bool:false'
     format.numbered:'use sequence numbers in patch subjects::->format.numbered:auto'
     format.headers:'additional email headers to include in email patches:headers:->string'
     format.to:'additional email recipients of patches::->string'
@@ -1940,6 +1978,7 @@ _git-config () {
     'gitcvs.*.dbTableNamePrefix:database table name prefix:prefix:->string'
     gitcvs.usecrlfattr:'use end-of-line conversion attributes::->bool:false'
     gitcvs.allbinary:'treat all files from CVS as binary::->bool:false'
+    gpg.program:'use program instead of "gpg" found on $PATH when making or verifying a PGP signature::_path_commands'
     gui.commitmsgwidth:'width of commit message window:width::->int:75'
     gui.diffcontext:'number of context lines used in diff window:context::->int:5'
     gui.encoding:'encoding to use for displaying file contents::->encoding'
@@ -1951,6 +1990,16 @@ _git-config () {
     gui.fastcopyblame:'try harder during blame detection::->bool:false'
     gui.copyblamethreshold:'threshold to use in blame location detection:threshold:->string'
     gui.blamehistoryctx:'specify radius of history context in days for selected commit::->days'
+    'guitool.*.argprompt:prompt for arguments:argument prompt:->string'
+    'guitool.*.cmd:shell command line to execute::_path_commands'
+    'guitool.*.confirm:show a confirmation dialog::->bool:false'
+    'guitool.*.needsfile:require that a diff is selected for command to be available::->bool:false'
+    'guitool.*.noconsole:suppress command output::->bool:false'
+    'guitool.*.norescan:skip rescanning for changes to the working directory::->bool:false'
+    'guitool.*.revprompt:request a single valid revision from the user, and set the "REVISION" environment variable::->string'
+    'guitool.*.prompt:prompt to display:prompt:->string'
+    'guitool.*.revunmerged:show only unmerged branches in revprompt::->bool:false'
+    'guitool.*.title:title of prompt dialog:prompt title:->string'
     guitool.cmd:'shell command line to execute::_path_commands'
     guitool.needsfile:'require that a diff is selected for command to be available::->bool:false'
     guitool.noconsole:'suppress command output::->bool:false'
@@ -1961,10 +2010,14 @@ _git-config () {
     guitool.revunmerged:'show only unmerged branches in revprompt::->bool:false'
     guitool.title:'title of prompt dialog:prompt title:->string'
     guitool.prompt:'prompt to display:prompt:->string'
+    grep.extendedRegexp:'enable --extended-regexp option by default (ignored when grep.patternType is set)::->bool:false'
     grep.lineNumber:'enable -n option by default::->bool:false'
     grep.patternType:'default matching pattern type::->grep.patternType:default'
     help.browser:'browser used to display help in web format::__git_browsers'
+    http.cookiefile:'file containing cookie lines which should be used in the Git http session::_files'
     help.htmlpath:'location of HTML help::->help.htmlpath'
+    http.lowSpeedLimit:'limit controlling when to abort an HTTP transfer:speed limit:->int'
+    http.lowSpeedTime:'limit controlling when to abort an HTTP transfer:time limit (seconds):->int'
     help.format:'default help format used by git help::->help.format'
     help.autocorrect:'execute corrected mistyped commands::->bool:false'
     http.proxy:'HTTP proxy to use:proxy:_urls'
@@ -1974,6 +2027,7 @@ _git-config () {
     http.sslCertPasswordProtected:'prompt for a password for the SSL certificate::->bool:false'
     http.sslCAInfo:'file containing CA certificates to verify against for HTTPS:CA certificates file:_files'
     http.sslCAPath:'directory containing files with CA certificates to verify against for HTTPS:CA certificates directory:_directories'
+    http.sslTry:'attempt to use AUTH SSL/TLS and encrypted data transfers when connecting via regular FTP protocol::->bool:false'
     http.maxRequests:'how many HTTP requests to launch in parallel:maximum number of requests::->int:5'
     http.minSessions:'number of curl sessions to keep across requests:mininmum number of sessions::->int:1'
     http.postBuffer:'maximum size of buffer used by smart HTTP transport when POSTing:maximum POST buffer size:->bytes:1m'
@@ -2003,15 +2057,21 @@ _git-config () {
     instaweb.modulepath:'module path for the Apache HTTP-daemon for instaweb:module directory:_directories'
     instaweb.port:'port to bind HTTP daemon to for instaweb::_ports'
     interactive.singlekey:'accept one-letter input without Enter::->bool:false'
+    log.abbrevCommit:'make git-log, git-show, and git-whatchanged assume --abbrev-commit::->bool:false'
     log.date:'default date-time mode::__git_date_formats'
     log.decorate:'type of ref names to show::__git_log_decorate_formats'
+    log.mailmap:'make git-log, git-show, and git-whatchanged assume --use-mailmap:->bool:false'
     log.showroot:'show initial commit as a diff against an empty tree::->bool:true'
     mailinfo.scissors:'remove everything in body before a scissors line::->bool:false'
+    mailmap.blob:'like mailmap.file, but consider the value as a reference to a blob in the repository:blob reference:->string'
     mailmap.file:'augmenting mailmap file:mailmap file:_files'
     man.viewer:'man viewer to use for help in man format::__git_man_viewers'
     'man.*.cmd:the command to invoke the specified man viewer:man command:_path_commands'
     'man.*.path:path to use for the man viewer:absolute man tool path:_files -g "*(*)"'
+    merge.branchdesc:'populate the log message with the branch description text as well::->bool:false'
     merge.conflictstyle:'style used for conflicted hunks::->merge.conflictstyle:merge'
+    merge.defaultToUpstream:'merge the upstream branches configured for the current branch by default::->bool:false'
+    merge.ff:'allow fast-forward merges::->merge.ff:true'
     merge.log:'include summaries of merged commits in new merge commit messsages::->bool:false'
     merge.renameLimit:'number of files to consider when detecting copy/renames during merge:limit:->int'
     merge.renormalize:'use canonical representation of files during merge::->bool:false'
@@ -2049,6 +2109,7 @@ _git-config () {
     rebase.autosquash:'autosquash by default::->bool:false'
     receive.autogc:'run git gc --auto after receiving data::->bool:true'
     receive.fsckObjects:'check all received objects::->bool:true'
+    receive.hiderefs:'string(s) receive-pack uses to decide which refs to omit from its initial advertisement:hidden refs:->string'
     receive.unpackLimit:'maximum number of objects received for unpacking into loose objects:unpack limit:->int'
     receive.denyDeletes:'deny a ref update that deletes a ref::->bool:false'
     receive.denyDeleteCurrent:'deny a ref update that deletes currently checked out branch::->bool:false'
@@ -2071,9 +2132,11 @@ _git-config () {
     repack.usedeltabaseoffset:'use delta-base offsets::->bool:true'
     rerere.autoupdate:'update index after resolution::->bool:false'
     rerere.enabled:'record resolved conflicts::->bool'
+    sendemail.identity:'default identity::__git_sendemail_identities'
     sendemail.smtpencryption:'encryption method to use::->sendemail.smtpencryption'
     sendemail.aliasesfile:'file containing email aliases:email aliases file:_files'
     sendemail.aliasfiletype:'format of aliasesfile::->sendemail.aliasfiletype'
+    sendemail.annotate:'review and edit each patch you are about to send::->bool:false'
     sendemail.bcc:'value of Bcc\: header::_email_addresses'
     sendemail.cc:'value of Cc\: header::_email_addresses'
     sendemail.cccmd:'command to generate Cc\: header with:Cc\: command:_path_commands'
@@ -2090,12 +2153,14 @@ _git-config () {
     sendemail.to:'value of To\: header::_email_addresses'
     sendemail.smtpdomain:'FQDN to use for HELO/EHLO commands to SMTP server:smtp domain:_domains'
     sendemail.smtpserver:'SMTP server to connect to:smtp host:_hosts'
+    sendemail.smtpserveroption:'specifies the outgoing SMTP server option to use:SMTP server option:->string'
     sendemail.smtpserverport:'port to connect to SMTP server on:smtp port:_ports'
     sendemail.smtpuser:'user to use for SMTP-AUTH:smtp user:_users'
     sendemail.thread:'set In-Reply-To\: and References\: headers::->bool:true'
     sendemail.validate:'perform sanity checks on patches::->bool:true'
     'sendemail.*.aliasesfile:file containing email aliases::_files'
     'sendemail.*.aliasfiletype:format of aliasesfile::->sendemail.aliasfiletype'
+    'sendemail.*.annotate:review and edit each patch you are about to send::bool->false'
     'sendemail.*.bcc:value of Bcc\: header::_email_addresses'
     'sendemail.*.cc:value of Cc\: header::_email_addresses'
     'sendemail.*.cccmd:command to generate Cc\: header with:Cc\: command:_path_commands'
@@ -2112,15 +2177,19 @@ _git-config () {
     'sendemail.*.to:value of To\: header::_email_addresses'
     'sendemail.*.smtpdomain:FQDN to use for HELO/EHLO commands to SMTP server:smtp domain:_domains'
     'sendemail.*.smtpserver:SMTP server to connect to:smtp host:_hosts'
+    'sendemail.*.smtpserveroption:specifies the outgoing SMTP server option to use:SMTP server option:->string'
     'sendemail.*.smtpserverport:port to connect to SMTP server on:smtp port:_ports'
     'sendemail.*.smtpuser:user to use for SMTP-AUTH:smtp user:_users'
     'sendemail.*.thread:set In-Reply-To\: and References\: headers::->bool:true'
     'sendemail.*.validate:perform sanity checks on patches::->bool:true'
     sendemail.assume8bitEncoding:'encoding to use for non-ASCII messages::__git_encodings'
+    sequence.editor:'text editor used by git rebase -i::_path_commands'
     showbranch.default:'default set of branches for git show-branch::->branch'
     status.relativePaths:'show paths relative to current directory::->bool:false'
     status.showUntrackedFiles:'show untracked files::->status.showUntrackedFiles:normal'
     status.submodulesummary:'include submodule summary::->bool:false'
+    'submodule.*.branch:remote branch name for a submodule:branch name:->string'
+    'submodule.*.fetchRecurseSubmodules:fetch commits of submodules::->bool'
     'submodule.*.path:path within project:submodule directory:_directories -qS \:'
     'submodule.*.url:URL to update from::__git_any_repositories'
     'submodule.*.update:update strategy to use::->submodule.update'
@@ -2134,6 +2203,7 @@ _git-config () {
     svn.followparent:'follow parent commit::->bool:true'
     svn.authorsFile:'default authors file:authors file:_files'
     svn.quiet:'produce less output::->bool:false'
+    'svn-remote.*.automkdirs:attempt to recreate empty directories that are in the Subversion repository::->bool:true'
     'svn-remote.*.noMetadata:disable git-svn-id: lines at end of commits::->bool:false'
     'svn-remote.*.useSvmProps:use remappings of URLs and UUIDs from mirrors::->bool:false'
     'svn-remote.*.useSvnsyncProps:use remappings of URLs and UUIDs for the svnsync command::->bool:false'
@@ -2142,10 +2212,17 @@ _git-config () {
     'svn-remote.*.ignore-paths:regular expression of paths to not check out:regular expression:->string'
     'svn-remote.*.url:URL to connect to::_urls'
     'svn-remote.*.fetch:fetch specification::__git_ref_specs'
+    'svn-remote.*.pushurl:URL to push to::_urls'
     'svn-remote.*.branches:branch mappings:branch mapping:->string'
     'svn-remote.*.tags:tag mappings:tag mapping:->string'
+    'tar.*.command:specify a shell command through which the tar output generated by git archive should be piped::_path_commands'
+    'tar.*.remote:enable <format> for use by remote clients via git-upload-archive::->bool'
     tar.umask:'umask to apply::->umask'
     transfer.unpackLimit:'default value for fetch.unpackLimit and receive.unpackLimit:unpack limit::->int:100'
+    transfer.fsckObjects:'check all objects::->bool:false'
+    transfer.hiderefs:'string(s) to decide which refs to omit from initial advertisements:hidden refs:->string'
+    uploadpack.hiderefs:'string(s) upload-pack uses to decide which refs to omit from its initial advertisement:hidden refs:->string'
+    uploadpack.allowtipsha1inwant:'allow upload-pack to accept a fetch request that asks for an object at the tip of a hidden ref::->bool:false'
     'url.*.insteadOf:string to start URLs with:prefix:->string'
     'url.*.pushInsteadOf:string to start URLs to push to with:prefix:->string'
     user.email:'email address used for commits::_email_addresses'
@@ -2186,10 +2263,13 @@ _git-config () {
           'color.grep.:git-grep-specific color option'
           'color.interactive.:interaction-specific color option'
           'color.status.:git-status-specific color option'
+          'credential.*.:${${line[1]#credential.}%.*}-specific option'
+          'filter.*.:${${line[1]#filter.}%.*} driver option'
+          'diff.*.:${${line[1]#diff.}%.*} driver option'
           'difftool.*.:${${line[1]#difftool.}%.*}-specific option'
           'gc.*.:${${line[1]#gc.}%.*}-specific gc option'
           'gitcvs.*.:gitcvs ${${line[1]#gitcvs.}%.*}-specific option'
-          'guitool.*.:${${line[1]#gc.}%.*}-specific option'
+          'guitool.*.:${${line[1]#guitool.}%.*}-specific option'
           'man.*.:${${line[1]#man.}%.*}-specific man option'
           'merge.*.:${${line[1]#merge.}%.*}-specific merge option'
           'mergetool.*.:${${line[1]#mergetool.}%.*}-specific option'
@@ -2235,6 +2315,9 @@ _git-config () {
           (browser.)
             __git_browsers -S . && ret=0
             ;;
+          (credential.)
+            _urls && ret=0
+            ;;
           (difftool.)
             __git_difftools -S . && ret=0
             ;;
@@ -2282,6 +2365,7 @@ _git-config () {
         sections=(
           advice:'options controlling advice'
           core:'options controlling git core'
+          credential:'credential options'
           add:'git add options'
           alias:'command aliases'
           am:'git am options'
@@ -2296,6 +2380,7 @@ _git-config () {
           fetch:'git fetch options'
           format:'format options'
           gc:'git gc options'
+          gpg:'gpg options'
           gitcvs:'git-cvs options'
           gui:'git gui options'
           guitool:'git gui tool options'
@@ -2329,6 +2414,7 @@ _git-config () {
           submodule:'git submodule options'
           tar:'git tar-tree options'
           transfer:'options controlling transfers'
+          uploadpack:'git upload-pack options'
           url:'URL prefixes'
           user:'options controlling user identity'
           web:'web options'
@@ -2469,6 +2555,11 @@ _git-config () {
               __git_config_booleans "$current" "$parts[5]" "$parts[2]" \
                 input:'convert CRLFs on input only' && ret=0
               ;;
+            (core.checkstat)
+              __git_config_values -- "$current" "$parts[5]" \
+                default:'check all fields' \
+                minimal:'check fewer fields' && ret=0
+              ;;
             (core.createObject)
               __git_config_values -- "$current" "$parts[5]" \
                 rename:'rename source objects' \
@@ -2536,6 +2627,10 @@ _git-config () {
                 crlf:'use CR+LF' \
                 native:'use line ending of platform' && ret=0
               ;;
+            (fetch.recurseSubmodules)
+              __git_config_booleans "$current" "$parts[5]" "$parts[2]" \
+                on-demand:'only when submodule reference in superproject is updated' && ret=0
+              ;;
             (format.numbered)
               __git_config_booleans "$current" "$parts[5]" "$parts[2]" \
                 auto:'use sequence numbers if more than one patch' && ret=0
@@ -2593,6 +2688,10 @@ _git-config () {
                 merge:'use standard merge style' \
                 diff3:'use diff3 style' && ret=0
               ;;
+            (merge.ff)
+              __git_config_booleans "$current" "$parts[5]" "$parts[2]" \
+                only:'only allow fast-forward merges (equivalent to --ff-only)' && ret=0
+              ;;
             (merge.verbosity)
               __git_config_values -t verbosity-levels -l 'verbosity level' -- "$current" "$parts[5]" \
                 0:'only final error message if conflicts were detected' \
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 08/14] _git: reword _git-config TODO
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (6 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 07/14] _git: add new configuration options to match latest git v1.8.3 Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 09/14] _git: support completing remote branches without <remote>/ prefix Øystein Walle
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: m0viefreak

From: m0viefreak <m0viefreak.cm@googlemail.com>

Support for merge drivers, filter drivers, and diff drivers is
missing.
---
 Completion/Unix/Command/_git | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 294620b..0d0cb02 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -1775,7 +1775,7 @@ _git-config () {
   # TODO: Most all _path_commands should be able to take arguments and so on.
   # How do we deal with that and how do we quote the whole argument to git
   # config?
-  # TODO: Add merge.*.(name|driver|recursive) and diff.*.(command|funcname)
+  # TODO: Add support for merge.*. (merge driver), diff.*. (diff driver), and filter.*. (filter driver) options
   # (see gitattributes(5)).
   # TODO: .path options should take absolute paths.
   declare -a git_options_static
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 09/14] _git: support completing remote branches without <remote>/ prefix
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (7 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 08/14] _git: reword _git-config TODO Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 10/14] _git: fix some typos in description texts Øystein Walle
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: m0viefreak

From: m0viefreak <m0viefreak.cm@googlemail.com>

this is used in git 1.8's
git checkout <branch>
as a shorthand for
git checkout -b <branch> --track <remote>/<branch>
in case <branch> exists on exactly one remote and is not a local branch
---
 Completion/Unix/Command/_git | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 0d0cb02..9d07453 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -440,22 +440,27 @@ _git-checkout () {
       if (( CURRENT == 1 )) && [[ -z $opt_args[(I)--] ]]; then
         # TODO: Allow A...B
         local branch_arg='branches::__git_revisions' \
+              remote_branch_noprefix_arg='remote branches::__git_remote_branch_names_noprefix' \
               tree_ish_arg='tree-ishs::__git_tree_ishs' \
               file_arg='modified-files::__git_modified_files'
 
         if [[ -n ${opt_args[(I)-b|-B|--orphan]} ]]; then
+          remote_branch_noprefix_arg=
           tree_ish_arg=
           file_arg=
         elif [[ -n $opt_args[(I)--track] ]]; then
           branch_arg='remote-branches::__git_remote_branch_names'
+          remote_branch_noprefix_arg=
           tree_ish_arg=
           file_arg=
         elif [[ -n ${opt_args[(I)--ours|--theirs|-m|--conflict|--patch]} ]]; then
           branch_arg=
+          remote_branch_noprefix_arg=
         fi
 
         _alternative \
           $branch_arg \
+          $remote_branch_noprefix_arg \
           $tree_ish_arg \
           $file_arg && ret=0
       elif [[ -n ${opt_args[(I)-b|-B|-t|--track|--orphan]} ]]; then
@@ -5371,6 +5376,17 @@ __git_remote_branch_names () {
   _wanted remote-branch-names expl 'remote branch name' compadd $* - $branch_names
 }
 
+(( $+functions[__git_remote_branch_names_noprefix] )) ||
+__git_remote_branch_names_noprefix () {
+  local expl
+  declare -a heads
+
+  branch_names=(${${${(f)"$(_call_program remote-branch-refs-noprefix git for-each-ref --format='"%(refname)"' refs/remotes 2>/dev/null)"}##*/}:#HEAD})
+  __git_command_successful $pipestatus || return 1
+
+  _wanted remote-branch-names-noprefix expl 'remote branch name' compadd $* - $branch_names
+}
+
 (( $+functions[__git_commits] )) ||
 __git_commits () {
   # TODO: deal with things that __git_heads and __git_tags has in common (i.e.,
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 10/14] _git: fix some typos in description texts
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (8 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 09/14] _git: support completing remote branches without <remote>/ prefix Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 11/14] _git: remove TODOs of actually documented options Øystein Walle
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: Øystein Walle

---
 Completion/Unix/Command/_git | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 9d07453..eaff1b3 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -1930,7 +1930,7 @@ _git-config () {
     diff.ignoreSubmodules:'ignore submodules::->bool:false'
     diff.statGraphWidth:'width of the graph part in --stat output:width:->int'
     diff.submodule:'output format for submodule differences::->diff.submodule:short'
-    diff.suppressBlankEmpty:'inbihit printing space before empty output lines::->bool:false'
+    diff.suppressBlankEmpty:'inhibit printing space before empty output lines::->bool:false'
     diff.tool:'diff tool to use::__git_difftools'
     'difftool.*.cmd:command to invoke for the diff tool::_path_commands'
     'difftool.*.path:path to use for the diff tool:absolute diff tool path:_files -g "*(*)"'
@@ -2034,7 +2034,7 @@ _git-config () {
     http.sslCAPath:'directory containing files with CA certificates to verify against for HTTPS:CA certificates directory:_directories'
     http.sslTry:'attempt to use AUTH SSL/TLS and encrypted data transfers when connecting via regular FTP protocol::->bool:false'
     http.maxRequests:'how many HTTP requests to launch in parallel:maximum number of requests::->int:5'
-    http.minSessions:'number of curl sessions to keep across requests:mininmum number of sessions::->int:1'
+    http.minSessions:'number of curl sessions to keep across requests:minimum number of sessions::->int:1'
     http.postBuffer:'maximum size of buffer used by smart HTTP transport when POSTing:maximum POST buffer size:->bytes:1m'
     http.lowSpeedLimit:'lower limit for HTTP transfer-speed:low transfer-speed limit:->int'
     http.lowSpeedTime:'duration for http.lowSpeedLimit:time:->int'
@@ -2077,7 +2077,7 @@ _git-config () {
     merge.conflictstyle:'style used for conflicted hunks::->merge.conflictstyle:merge'
     merge.defaultToUpstream:'merge the upstream branches configured for the current branch by default::->bool:false'
     merge.ff:'allow fast-forward merges::->merge.ff:true'
-    merge.log:'include summaries of merged commits in new merge commit messsages::->bool:false'
+    merge.log:'include summaries of merged commits in new merge commit messages::->bool:false'
     merge.renameLimit:'number of files to consider when detecting copy/renames during merge:limit:->int'
     merge.renormalize:'use canonical representation of files during merge::->bool:false'
     merge.stat:'print the diffstat between ORIG_HEAD and merge at end of merge::->bool:true'
@@ -2936,7 +2936,7 @@ _git-reflog () {
               '--expire-unreachable=-[prune entries older than given time and unreachable]: :__git_datetimes' \
               '--all[prune all refs]' \
               '--updateref[update ref with SHA-1 of top reflog entry after expiring or deleting]' \
-              '--rewrite[adjust reflog entries to ensure old SHA-1 points to new SHA-1 of previous entry after expring or deleting]' \
+              '--rewrite[adjust reflog entries to ensure old SHA-1 points to new SHA-1 of previous entry after expiring or deleting]' \
               '--verbose[output additional information]' && ret=0
             ;;
           (delete)
@@ -2944,7 +2944,7 @@ _git-reflog () {
             _arguments -C -S \
               '(-n --dry-run)'{-n,--dry-run}'[undocumented]' \
               '--updateref[update ref with SHA-1 of top reflog entry after expiring or deleting]' \
-              '--rewrite[adjust reflog entries to ensure old SHA-1 points to new SHA-1 of previous entry after expring or deleting]' \
+              '--rewrite[adjust reflog entries to ensure old SHA-1 points to new SHA-1 of previous entry after expiring or deleting]' \
               '*:: :->reflog-entry' && ret=0
 
             case $state in
@@ -3124,7 +3124,7 @@ _git-blame () {
     '-l[show long rev]' \
     '-t[show raw timestamp]' \
     '-S[use revs from revs-file]:revs-file:_files' \
-    '--reverse[walk histor forward instead of backward]' \
+    '--reverse[walk history forward instead of backward]' \
     '(-p --porcelain)'{-p,--porcelain}'[show results designed for machine processing]' \
     '--line-porcelain[show results designed for machine processing but show commit information for every line]' \
     '--incremental[show results incrementally for machine processing]' \
@@ -3386,7 +3386,7 @@ _git-show-branch () {
       '(--no-name            )--sha1-name[name commits with unique prefix of object names]' \
       '--topics[show only commits that are NOT on the first branch given]' \
       '(        --no-color)--color[color status sign of commits]:: :__git_color_whens' \
-      '(--color           )--no-color[do not color statis sign of commits]' \
+      '(--color           )--no-color[do not color status sign of commits]' \
       '*: :__git_revisions' \
     - reflogs \
       '(-g --reflog)'{-g,--reflog=}'[show reflog entries for given ref]:: :->limit-and-base' \
@@ -3567,7 +3567,7 @@ _git-send-email () {
     '--quiet[be less verbose]' \
     '(           --no-validate)--validate[perform sanity checks on patches]' \
     '(--validate              )--validate[do not perform sanity checks on patches]' \
-    '--force[send emails even if safetiy checks would prevent it]' \
+    '--force[send emails even if safety checks would prevent it]' \
     '*: :_files'
 }
 
@@ -4078,7 +4078,7 @@ _git-symbolic-ref () {
     '(-d --delete)'{-d,--delete}'[delete symbolic ref]' \
     '(-q --quiet)'{-q,--quiet}'[do not issue error if specified name is not a symbolic ref]' \
     '--short[shorten the ref name (eg. refs/heads/master -> master)]' \
-    '-m[update reflog for specified name with specied reason]:reason for update' \
+    '-m[update reflog for specified name with specified reason]:reason for update' \
     ':symbolic reference:__git_heads' \
     ':: :__git_references'
 }
@@ -4133,7 +4133,7 @@ _git-update-index () {
 (( $+functions[_git-update-ref] )) ||
 _git-update-ref () {
   _arguments -w -S -s \
-    '-m[update reflog for specified name with specied reason]:reason for update' \
+    '-m[update reflog for specified name with specified reason]:reason for update' \
     '(:)-d[delete given reference after verifying its value]:symbolic reference:__git_revisions:old reference:__git_revisions' \
     '--no-deref[overwrite ref itself, not what it points to]' \
     ':symbolic reference:__git_revisions' \
@@ -4383,7 +4383,7 @@ _git-rev-list () {
     '--timestamp[print raw commit timestamp]' \
     '(         --bisect-vars --bisect-all)--bisect[show only middlemost commit object]' \
     '(--bisect)--bisect-vars[same as --bisect, displaying shell-evalable code]' \
-    '(--bisect)--bisect-all[display all commit objects beteen included and excluded commits]' \
+    '(--bisect)--bisect-all[display all commit objects between included and excluded commits]' \
     '*:: :->commit-or-path' && ret=0
 
   case $state in
@@ -4876,7 +4876,7 @@ _git_commands () {
     notes:'add or inspect object notes'
     pull:'fetch from and merge with another repository or local branch'
     push:'update remote refs along with associated objects'
-    rebase:'fasforward-port local commits to the updated upstream head'
+    rebase:'forward-port local commits to the updated upstream head'
     reset:'reset current HEAD to specified state'
     revert:'revert existing commits'
     rm:'remove files from the working tree and from the index'
@@ -4892,7 +4892,7 @@ _git_commands () {
     config:'get and set repository or global options'
     fast-export:'data exporter'
     fast-import:'import information into git directly'
-    filter-branch:'rewrite branchers'
+    filter-branch:'rewrite branches'
     mergetool:'run merge conflict resolution tools to resolve merge conflicts'
     pack-refs:'pack heads and tags for efficient repository access'
     prune:'prune all unreachable objects from the object database'
@@ -5169,7 +5169,7 @@ __git_ignore_submodules_whens () {
 
   whens=(
     none:'submodule is dirty when it contains untracked or modified files'
-    untracked:'submodule is dirty when it contains untracket files'
+    untracked:'submodule is dirty when it contains untracked files'
     dirty:'ignore all changes to submodules, showing only changes to commits stored in superproject'
     all:'ignore all changes to submodules (default)')
 
@@ -6378,8 +6378,8 @@ __git_sendemail_suppresscc_values () {
     author:'avoid including patch author' \
     self:'avoid including sender' \
     cc:'avoid including anyone mentioned in Cc lines except for self' \
-    bodycc:'avoid including anyone mentiond in Cc lines in patch body except for self' \
-    sob:'avoid including anyone mentiond in Signed-off-by lines except for self' \
+    bodycc:'avoid including anyone mentioned in Cc lines in patch body except for self' \
+    sob:'avoid including anyone mentioned in Signed-off-by lines except for self' \
     cccmd:'avoid running --cc-cmd' \
     tocmd:'avoid running --to-cmd' \
     body:'equivalent to sob + bodycc' \
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 11/14] _git: remove TODOs of actually documented options
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (9 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 10/14] _git: fix some typos in description texts Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 12/14] _git: correct some "undocumented" options Øystein Walle
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: Øystein Walle

No functional changes.
---
 Completion/Unix/Command/_git | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index eaff1b3..4bb9d24 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -1746,7 +1746,6 @@ _git-config () {
     value_arg=': :->value'
   fi
 
-  # TODO --local is undocumented.
   _arguments -w -C -S -s \
     '(         --system --local -f --file)--global[use user-global config file]' \
     '(--global          --local -f --file)--system[use system-wide config file]' \
@@ -6045,11 +6044,8 @@ __git_setup_revision_options () {
     '--log-size[print log message size in bytes before the message]'
     '--use-mailmap[use mailmap file to map author and committer names and email]'
 
-    # TODO: --reflog is undocumented.
     '--reflog[show all commits from reflogs]'
-    # TODO: --default is undocumented.
     '--default[use argument as default revision]:default revision:__git_revisions'
-    # TODO: --abrev is undocumented.
     '--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length'
     # TODO: --no-abbrev is undocumented.
     '--no-abbrev[undocumented]'
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 12/14] _git: correct some "undocumented" options
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (10 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 11/14] _git: remove TODOs of actually documented options Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 13/14] _git: change completion text for consistency Øystein Walle
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: m0viefreak

From: m0viefreak <m0viefreak.cm@googlemail.com>

diff options:
  --cumulative is deprecated --> remove
  -G / -S: reword -S to emphase the difference to -G

revision options:
  --abbrev: reword, to emphase the --abbrev-commit requirement
---
 Completion/Unix/Command/_git | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 4bb9d24..d465dfa 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -5920,7 +5920,8 @@ __git_setup_diff_options () {
     '(-D --irreversible-delete)'{-D,--irreversible-delete}'[omit the preimage for deletes]'
     '-l-[limit number of rename/copy targets to run]: :__git_guard_number'
     '--diff-filter=-[select certain kinds of files for diff]: :_guard "[ACDMRTUXB*]#" kinds'
-    '-S-[look for differences that contain the given string]:string'
+    '-S-[look for differences that add or remove the given string]:string'
+    '-G-[look for differences whose added or removed line matches the given regex]:pattern'
     '--pickaxe-all[when -S finds a change, show all changes in that changeset]'
     '--pickaxe-regex[treat argument of -S as regular expression]'
     '-O-[output patch in the order of glob-pattern lines in given file]: :_files'
@@ -5935,6 +5936,8 @@ __git_setup_diff_options () {
     '(--exit-code)--quiet[disable all output]'
     '(           --no-ext-diff)--ext-diff[allow external diff helper to be executed]'
     '(--ext-diff              )--no-ext-diff[disallow external diff helper to be executed]'
+    '(--textconv --no-textconv)--textconv[allow external text conversion filters to be run when comparing binary files]'
+    '(--textconv --no-textconv)--no-textconv[do not allow external text conversion filters to be run when comparing binary files]'
     '--ignore-submodules[ignore changes to submodules]:: :__git_ignore_submodules_whens'
     '(--no-prefix)--src-prefix=[use given prefix for source]:prefix'
     '(--no-prefix)--dst-prefix=[use given prefix for destination]:prefix'
@@ -5949,12 +5952,6 @@ __git_setup_diff_options () {
 
     # TODO: --cumulative is undocumented.
     '--cumulative[undocumented]'
-    # TODO: --textconv is undocumented.
-    '--textconv[undocumented]'
-    # TODO: --no-textconv is undocumented.
-    '--no-textconv[undocumented]'
-    # TODO: -G is undocumented.
-    '-G[undocumented]'
     # TODO: --output is undocumented.
     '--output[undocumented]:undocumented')
 }
@@ -5978,6 +5975,8 @@ __git_setup_revision_options () {
                                                                                     format\:"specify own format"))'
     '(--abbrev-commit --no-abbrev-commit)--abbrev-commit[show only partial prefixes of commit object names]'
     '(--abbrev-commit --no-abbrev-commit)--no-abbrev-commit[show the full 40-byte hexadecimal commit object name]'
+    '(--abbrev --no-abbrev)--abbrev=[set minimum SHA1 display-length (for use with --abbrev-commit)]: :__git_guard_number length'
+    '(--abbrev --no-abbrev)--no-abbrev[show the full 40-byte hexadecimal commit object name]'
     '--oneline[shorthand for --pretty=oneline --abbrev-commit]'
     '--encoding=-[output log messages in given encoding]:: :__git_encodings'
     '(--no-notes --notes)--no-notes[do not show notes that annotate commit]'
@@ -6046,9 +6045,6 @@ __git_setup_revision_options () {
 
     '--reflog[show all commits from reflogs]'
     '--default[use argument as default revision]:default revision:__git_revisions'
-    '--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length'
-    # TODO: --no-abbrev is undocumented.
-    '--no-abbrev[undocumented]'
     # TODO: --early-output is undocumented.
     '--early-output=-[undocumented]::undocumented'
     )
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 13/14] _git: change completion text for consistency
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (11 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 12/14] _git: correct some "undocumented" options Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 10:48 ` [PATCH v2 14/14] _git: git rm: make git rm --cached work as intended Øystein Walle
  2013-09-22 12:09 ` [PATCH v2 00/14] Improvements to the Git completion functions Frank Terbeck
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: Øystein Walle

---
 Completion/Unix/Command/_git | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index d465dfa..2dc9ed2 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -1934,7 +1934,7 @@ _git-config () {
     'difftool.*.cmd:command to invoke for the diff tool::_path_commands'
     'difftool.*.path:path to use for the diff tool:absolute diff tool path:_files -g "*(*)"'
     difftool.prompt:'prompt before each invocation of the diff tool::->bool:true'
-    diff.wordRegex:'regex used to determine what a word is when performing word-by-word diff:regex:->string'
+    diff.wordRegex:'regex used to determine what a word is when performing word-by-word diff:regular expression:->string'
     diff.guitool:'diff tool with gui to use::__git_difftools'
     fetch.unpackLimit:'maximum number of objects to unpack when fetching:unpack limit:->int'
     fetch.recurseSubmodules:'recurse into submodules (as needed) when fetching::->fetch.recurseSubmodules:on-demand'
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 14/14] _git: git rm: make git rm --cached work as intended
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (12 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 13/14] _git: change completion text for consistency Øystein Walle
@ 2013-09-22 10:48 ` Øystein Walle
  2013-09-22 12:09 ` [PATCH v2 00/14] Improvements to the Git completion functions Frank Terbeck
  14 siblings, 0 replies; 17+ messages in thread
From: Øystein Walle @ 2013-09-22 10:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: m0viefreak

From: m0viefreak <m0viefreak.cm@googlemail.com>

While limiting the completion to __git_changed-in-index_files
makes perfect sense for "git diff", it is wrong to use for
"git rm", because it prevents it from completing files present in
HEAD. Giving --cached to git rm is supposed to
"just remove it from the index, keep the working tree copy"
and is in no way related to the file needing to be
modified in the index in the first place.
---
 Completion/Unix/Command/_git | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 2dc9ed2..d6f44e6 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -1344,11 +1344,7 @@ _git-rm () {
 
   case $state in
     (file)
-      if [[ -n ${opt_args[(I)--cached]} ]]; then
-        __git_changed-in-index_files && ret=0
-      else
-        __git_cached_files && ret=0
-      fi
+      __git_cached_files && ret=0
       ;;
   esac
 
-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 00/14] Improvements to the Git completion functions
  2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
                   ` (13 preceding siblings ...)
  2013-09-22 10:48 ` [PATCH v2 14/14] _git: git rm: make git rm --cached work as intended Øystein Walle
@ 2013-09-22 12:09 ` Frank Terbeck
  2013-09-22 12:31   ` Frank Terbeck
  14 siblings, 1 reply; 17+ messages in thread
From: Frank Terbeck @ 2013-09-22 12:09 UTC (permalink / raw)
  To: Øystein Walle; +Cc: zsh-workers, m0viefreak.cm

Øystein Walle wrote:
> Upon request from ft at #zsh here's resend of the patch series I sent in some
> times ago. In the mean time Luka Perkov as sent in some changes and I've
> checked that we're not stepping on eachother's toes.
>
> Changes:
>
>  - I skipped the commit that documented --early-output. It's not documented
>    in the Git docs either as far as I can tell isn't really meant for
>    interactive use.
>  - I've left out a lot of the "controversal" TODO removals: There are still
>    some TODOs that are removed; I've checked and these are actually
>    documented in the Git docs, or are in fact not even supported by Git.
>    Commit messages have been reworded as needed.
>  - A commit that fixed one of our own mistakes has been squashed into the
>    offending commit (Move --(no-)follow to log-specific options)

Thanks for this! I'm looking at this now, preparing to push.

> I hope to send in another patch series adding new stuff from v1.8.4 soon.

Great!

Regards, Frank


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 00/14] Improvements to the Git completion functions
  2013-09-22 12:09 ` [PATCH v2 00/14] Improvements to the Git completion functions Frank Terbeck
@ 2013-09-22 12:31   ` Frank Terbeck
  0 siblings, 0 replies; 17+ messages in thread
From: Frank Terbeck @ 2013-09-22 12:31 UTC (permalink / raw)
  To: Øystein Walle; +Cc: zsh-workers, m0viefreak.cm

Frank Terbeck wrote:
> Øystein Walle wrote:
>> Upon request from ft at #zsh here's resend of the patch series I sent in some
>> times ago. In the mean time Luka Perkov as sent in some changes and I've
>> checked that we're not stepping on eachother's toes.
[...]
> Thanks for this! I'm looking at this now, preparing to push.

[x] Done.

Thanks guys!


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2013-09-22 12:36 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-22 10:48 [PATCH v2 00/14] Improvements to the Git completion functions Øystein Walle
2013-09-22 10:48 ` [PATCH v2 01/14] _git: fix a wrong variable in __git_config_values Øystein Walle
2013-09-22 10:48 ` [PATCH v2 02/14] _git: fix usage of ->int: for some entries in _git-config Øystein Walle
2013-09-22 10:48 ` [PATCH v2 03/14] _git: make git submodule <cmd> completion work Øystein Walle
2013-09-22 10:48 ` [PATCH v2 04/14] _git: correctly use __git_guard_number in some cases Øystein Walle
2013-09-22 10:48 ` [PATCH v2 05/14] _git: completion updates to match latest git v1.8.3 Øystein Walle
2013-09-22 10:48 ` [PATCH v2 06/14] _git: completion updates to match latest git v1.8.3 part 2 Øystein Walle
2013-09-22 10:48 ` [PATCH v2 07/14] _git: add new configuration options to match latest git v1.8.3 Øystein Walle
2013-09-22 10:48 ` [PATCH v2 08/14] _git: reword _git-config TODO Øystein Walle
2013-09-22 10:48 ` [PATCH v2 09/14] _git: support completing remote branches without <remote>/ prefix Øystein Walle
2013-09-22 10:48 ` [PATCH v2 10/14] _git: fix some typos in description texts Øystein Walle
2013-09-22 10:48 ` [PATCH v2 11/14] _git: remove TODOs of actually documented options Øystein Walle
2013-09-22 10:48 ` [PATCH v2 12/14] _git: correct some "undocumented" options Øystein Walle
2013-09-22 10:48 ` [PATCH v2 13/14] _git: change completion text for consistency Øystein Walle
2013-09-22 10:48 ` [PATCH v2 14/14] _git: git rm: make git rm --cached work as intended Øystein Walle
2013-09-22 12:09 ` [PATCH v2 00/14] Improvements to the Git completion functions Frank Terbeck
2013-09-22 12:31   ` Frank Terbeck

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).