From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20108 invoked by alias); 13 Nov 2017 20:37:46 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 42019 Received: (qmail 24791 invoked by uid 1010); 13 Nov 2017 20:37:46 -0000 X-Qmail-Scanner-Diagnostics: from park01.gkg.net by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(205.235.26.22):SA:0(-1.7/5.0):. Processed in 10.094804 secs); 13 Nov 2017 20:37:46 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RP_MATCHES_RCVD,SPF_PASS,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.1 X-Envelope-From: SRS0=Ko5U=CL=yahoo.co.uk=okiddle@bounces.park01.gkg.net X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | X-Virus-Scanned: by amavisd-new at gkg.net Authentication-Results: amavisd4.gkg.net (amavisd-new); dkim=pass (2048-bit key) header.d=yahoo.co.uk X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s2048; t=1510605439; bh=/Wlolt0NP9uvuNXlKNSEwuzPxIFm3SiYDQj6ogU2zj0=; h=From:To:Subject:Date:From:Subject; b=mi9azfZzRBhVQc3xmgJHrGjhSQdBjIIX0Rre5o7QzTZOk5dupPW+o6Q91MPi4FYg3Y6qPgdI81JkGyjqgsSd0iwr5YBWQzGAK4a1QfEs8IKS/RlaaPeG+wC4hRTHh8gPEffTEUa1A94GUPgelBHslyO7ZCuO2a73Xl3vRwgpR+BJnr3Z2yHnzblalVzYTjeT69wKczOG53R377uwWzyKTHt2yoRNW+TSvyqBgtAlpPGAJJjxoajQC3z1K33e1DlnL/EmruIA6ff0e4gYlcM0YFFOoxMW9QGRcdFKfEfbNMl+GOumxoCjRPJd1Lm8V3cPp8XA2cIgy/ikEM2U/BYtng== X-YMail-OSG: cCCNoYYVM1kjDsRGDdM.xmdJg2c.6MBO1_OjXPeUylZbTKkikLa8vNoYYXClQzu tydChBPiB58UDrVPh_LWT1RQUNPAhyVfov1QEJUfGTN8dsh2c5NcpVFRREwhzUNModrC7peg0sqK ddj7GczCAGYrbeUo3p.FFxXFxaWMmkAByTZWQOKLWWCc3Nih957NFh.RWKu3WFGLB_wEsQ_BD3OK EUlZy.azR0bohdLetNX_sRLFK8Q8pi5JPc0sFfl6ZnhGxzaqZqpaAu3eCdvq2Bxo8rsGLXXX1cPm vW2rQrUX55KjE_qhmsbXeJjCg.ei93apvEJMlYFb3habukF9G7YLOfX_WopLRDxiXSXWXSkXLRwm rgnMj5hdk2j3xFEdwEOgNKXczIGMGPajSzutkaOzeHG7H0sPP6K5_ceE8JtVDuhfP5oz.WiwYWP6 no5iNM9eUVqWEf5dmVzkM.UnDvPIlPq6m0yxn65K3jT_GfaOWhABpU3R6T7QJ9ffIVMGWWqxwzaa r3hEsBxYQR_pkLBQJp2YExVeRzU8FD1fMEr5z X-Yahoo-Newman-Id: 380824.9250.bm@smtp116.mail.ir2.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: cCCNoYYVM1kjDsRGDdM.xmdJg2c.6MBO1_OjXPeUylZbTKk ikLa8vNoYYXClQzutydChBPiB58UDrVPh_LWT1RQUNPAhyVfov1QEJUfGTN8 dsh2c5NcpVFRREwhzUNModrC7peg0sqKddj7GczCAGYrbeUo3p.FFxXFxaWM mkAByTZWQOKLWWCc3Nih957NFh.RWKu3WFGLB_wEsQ_BD3OKEUlZy.azR0bo hdLetNX_sRLFK8Q8pi5JPc0sFfl6ZnhGxzaqZqpaAu3eCdvq2Bxo8rsGLXXX 1cPmvW2rQrUX55KjE_qhmsbXeJjCg.ei93apvEJMlYFb3habukF9G7YLOfX_ WopLRDxiXSXWXSkXLRwmrgnMj5hdk2j3xFEdwEOgNKXczIGMGPajSzutkaOz eHG7H0sPP6K5_ceE8JtVDuhfP5oz.WiwYWP6no5iNM9eUVqWEf5dmVzkM.Un DvPIlPq6m0yxn65K3jT_GfaOWhABpU3R6T7QJ9ffIVMGWWqxwzaar3hEsBxY QR_pkLBQJp2YExVeRzU8FD1fMEr5z X-Yahoo-SMTP: opAkk_CswBAce_kJ3nIPlH80cJI- From: Oliver Kiddle To: Zsh workers Subject: PATCH: update git completion MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-ID: <2289.1510605435.1@thecus.kiddle.eu> Content-Transfer-Encoding: quoted-printable Date: Mon, 13 Nov 2017 21:37:15 +0100 Message-ID: <2290.1510605435@thecus.kiddle.eu> This brings git option completion up to 2.15. I also checked for other changes. git relink has gone at some point and git interpret-trailers was added. In the past, for custom formats, you needed git log --format=3Dformat:%... Now you can skip the format: part. Completion for git tag/for-each-ref sort keys and formats is also improved. Oliver diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git index 10707b454..9ee2eba76 100644 --- a/Completion/Unix/Command/_git +++ b/Completion/Unix/Command/_git @@ -293,9 +293,8 @@ _git-branch () { = l=3D'--color --no-color -r --remotes -a -v --verbose --abbrev --no-abbr= ev --list --points-at --sort' c=3D'-l --create-reflog -f --force -t --track --no-track -u --set-upstr= eam --set-upstream-to --unset-upstream --contains --no-contains --merged -= -no-merged' - m=3D'-m --move -M' + m=3D'-c --copy -C -m --move -M --edit-description' d=3D'-d --delete -D' - e=3D'--edit-description' = declare -a dependent_creation_args if (( words[(I)(-r|--remotes)] =3D=3D 0 )); then @@ -325,37 +324,39 @@ _git-branch () { fi = _arguments -S -s \ - "($c $m $d $e --no-color :)--color=3D-[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=3D[display tag listing in column= s]:column.branch option:((always\:"always show in columns" never\:"never s= how in columns" auto\:"show in columns if the output is to the terminal" c= olumn\:"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,--remotes}'[list or delete only remote-trackin= g branches]' \ - "($c $m $d $e: -r --remotes)-a[list both remote-tracking branches and= local branches]" \ - "($c $m $d $e : -v -vv --verbose)"{-v,-vv,--verbose}'[show SHA1 and c= ommit subject line for each head]' \ - "($c $m $d $e :)--abbrev=3D[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-reflog}"[create the branch's reflog]" \ - "($l $m $d $e -f --force)"{-f,--force}"[force the creation of a new b= ranch]" \ - "($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 configura= tion variable]" \ - "($l $m $d $e -u --set-upstream --set-upstream-to --unset-upstream)"{= -u+,--set-upstream-to=3D}"[set up configuration so that pull merges]:remot= e-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=3D[only list branches that contain the spec= ified commit]: :__git_committishs" \ - "($l $m $d $e)*--no-contains=3D[only list branches that don't contain= the specified commit]: :__git_committishs" \ - "($l $m $d $e)--merged=3D[only list branches that are fully contained= by HEAD]: :__git_committishs" \ - "($l $m $d $e)--no-merged=3D[don't list branches that are fully conta= ined by HEAD]: :__git_committishs" \ + "($c $m $d --no-color :)--color=3D-[turn on branch coloring]:: :__git= _color_whens" \ + "($c $m $d : --color)--no-color[turn off branch coloring]" \ + "($c $m $d --no-column)"'--column=3D[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" colu= mn\:"fill columns before rows (default)" row\:"fill rows before columns" p= lain\:"show in one column" dense\:"make unequal size columns to utilize mo= re space" nodense\:"make equal size columns"))' \ + "($c $m $d --column)--no-column[don't display in columns]" \ + "($c $m $d )*--list[list only branches matching glob]:pattern" \ + "($c $m -a)"{-r,--remotes}'[list or delete only remote-tracking b= ranches]' \ + "($c $m $d : -r --remotes)-a[list both remote-tracking branches and l= ocal branches]" \ + "($c $m $d : -v -vv --verbose)"{-v,-vv,--verbose}'[show SHA1 and comm= it subject line for each head]' \ + "($c $m $d :)--abbrev=3D[set minimum SHA1 display-length]: :__git_gua= rd_number length" \ + "($c $m $d :)--no-abbrev[don't abbreviate sha1s]" \ + "($l $m $d)"{-l,--create-reflog}"[create the branch's reflog]" \ + "($l $m $d -f --force)"{-f,--force}'[force the creation of a new bran= ch]' \ + "($l $m $d -t --track)"{-t,--track}'[setup configuration so that pull= merges from the start point]' \ + "($l $m $d)--no-track[override the branch.autosetupmerge configuratio= n variable]" \ + "($l $m $d -u --set-upstream --set-upstream-to --unset-upstream)"{-u+= ,--set-upstream-to=3D}'[set up configuration so that pull merges]:remote-b= ranches:__git_remote_branch_names' \ + "($l $m $d -u --set-upstream --set-upstream-to --unset-upstream)--uns= et-upstream[remove upstream configuration]" \ + "($l $m $d)*--contains=3D[only list branches that contain the specifi= ed commit]: :__git_committishs" \ + "($l $m $d)*--no-contains=3D[only list branches that don't contain th= e specified commit]: :__git_committishs" \ + "($l $m $d)--merged=3D[only list branches that are fully contained by= HEAD]: :__git_committishs" \ + "($l $m $d)--no-merged=3D[don't list branches that are fully containe= d by HEAD]: :__git_committishs" \ "($c $l $m $d)--edit-description[edit branch description]" \ $dependent_creation_args \ - "($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 alrea= dy exists]" \ + "($l $c $d $m)"{-m,--move}"[rename a branch and the corresponding ref= log]" \ + "($l $c $d $m)-M[rename a branch even if the new branch-name already = exists]" \ + "($l $c $d $m)"{-c,--copy}"[copy a branch and the corresponding reflo= g]" \ + "($l $c $d $m)-C[copy a branch even if the new branch-name already ex= ists]" \ $dependent_modification_args \ - "($l $c $m $d $e)"{-d,--delete}"[delete a fully merged branch]" \ - "($l $c $m $d $e)-D[delete a branch]" \ + "($l $c $m $d)"{-d,--delete}"[delete a fully merged branch]" \ + "($l $c $m $d)-D[delete a branch]" \ {-q,--quiet}"[be more quiet]" \ '*--sort=3D[specify field to sort on]: :__git_ref_sort_keys' \ '--points-at=3D[only list tags of the given object]: :__git_commits' = \ - "($c $m $d $e -i --ignore-case)"{-i,--ignore-case}'[sorting and filte= ring are case-insensitive]' \ + "($c $m $d -i --ignore-case)"{-i,--ignore-case}'[sorting and filterin= g are case-insensitive]' \ $dependent_deletion_args } = @@ -929,6 +930,7 @@ _git-format-patch () { '--no-binary[do not output contents of changes in binary files, only = note that they differ]' \ '--root[treat the revision argument as a range]' \ '--zero-commit[output all-zero hash in From header]' \ + '--progress[show progress while generating patches]' \ ': :->commit-or-commit-range' && ret=3D0 = case $state in @@ -1126,6 +1128,22 @@ _git-init () { ':: :_directories' } = +(( $+functions[_git-interpret-trailers] )) || +_git-interpret-trailers() { + _arguments \ + '--in-place[edit files in place]' \ + '--trim-empty[trim empty trailers]' \ + '--where[specify where to place the new trailer]' \ + '--if-exists[specify action if trailer already exists]' \ + '--if-missing[specify action if trailer is missing]' \ + '--only-trailers[output only the trailers]' \ + "--only-input[don't apply config rules]" \ + '--unfold[join whitespace-continued values]' \ + '--parse[set parsing options]' \ + '--trailer[specify trailer(s) to add]' \ + '*:file:_files' +} + (( $+functions[_git-log] )) || _git-log () { local curcontext=3D$curcontext state line ret=3D1 @@ -1189,6 +1207,8 @@ _git-merge () { '--abort[restore the original branch and abort the merge operation]' = \ '--continue[continue the current in-progress merge]' \ '--progress[force progress reporting]' \ + '--signoff[add Signed-off-by:]' \ + '--verify[verify commit-msg hook]' \ '*: : __git_commits -O expl:git_commit_opts' } = @@ -1988,10 +2008,10 @@ _git-tag () { "*--no-contains=3D[only list tags that don't contain the specified = commit]: :__git_commits" \ '--merged=3D-[print only tags that are merged]:: :__git_commits' \ '--no-merged=3D-[print only tags that are not merged]:: :__git_comm= its' \ - '--sort=3D[specify how the tags should be sorted]:mode:((refname\:"= lexicographic order" - version\\\:r= efname\:"tag names are treated as version numbers"))' \ + '--sort=3D[specify how the tags should be sorted]:field:__git_ref_s= ort_keys' \ '--points-at=3D[only list tags of the given object]: :__git_commits= ' \ - '--format=3D[specify format to use for the output]:format' \ + '--format=3D[specify format to use for the output]:format:__git_for= mat_ref' \ + '--color=3D-[respect any colors specified in the format]::when:(alw= ays never auto)' \ '(-i --ignore-case)'{-i,--ignore-case}'[sorting and filtering are c= ase-insensitive]' \ ':: :_guard "^-*" pattern' \ - verification \ @@ -2186,6 +2206,7 @@ __git_config_option-or-value () { advice.implicitIdentity:'show advice when identity is guessed from sy= stem 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 fai= ls to apply it::->bool:true' + advice.rmHints:'show directions in case of failure in the output of g= it-rm(1)::->bool:true' blame.blankboundary:'show blank SHA-1 for boundary commits::->bool:fa= lse' blame.showroot:'show root commits as normal commits::->bool:false' blame.date:'date format to use in output::__git_date_formats:iso' @@ -3388,6 +3409,7 @@ _git-filter-branch () { '--original[namespace where original commits will be stored]:namespac= e:_directories' \ '-d[temporary directory used for rewriting]: :_directories' \ '(-f --force)'{-f,--force}'[force operation]' \ + '--state-branch[load mapping from old to new objects from specified b= ranch]:branch:__git_branch_names' \ '*: :__git_commit_ranges' } = @@ -3504,16 +3526,6 @@ _git-reflog () { fi } = -(( $+functions[_git-relink] )) || -_git-relink () { - _arguments \ - '--safe[stop if two objects with the same hash exist but have differe= nt sizes]' \ - '(-)'{-h,--help}'[display usage information]' \ - ': :_directories' \ - ': :_directories' \ - '*: :_directories' -} - (( $+functions[_git-remote] )) || _git-remote () { local curcontext=3D$curcontext state line ret=3D1 @@ -3990,7 +4002,7 @@ _git-verify-tag () { _arguments -S -s \ '(-v --verbose)'{-v,--verbose}'[print contents of the tag object befo= re validating it]' \ '--raw[print raw gpg status output]' \ - '--format=3D[specify format to use for the output]:format' \ + '--format=3D[specify format to use for the output]:format:__git_forma= t_ref' \ '*: :__git_tags' } = @@ -4915,7 +4927,8 @@ _git-for-each-ref () { _arguments -S -s \ '--count=3D[maximum number of refs to iterate over]: :__git_guard_num= ber "maximum number of refs"' \ '*--sort=3D[key to sort refs by]: :__git_ref_sort_keys' \ - '--format=3D-[output format of ref information]:format' \ + '--format=3D-[output format of ref information]:format:__git_format_r= ef' \ + '--color=3D-[respect any colors specified in the format]::when:(alway= s never auto)' \ '*--points-at=3D[print only refs which point at the given object]:obj= ect:__git_commits' \ '*--merged=3D[print only refs that are merged]:object:__git_commits' = \ '*--no-merged=3D[print only refs that are not merged]:object:__git_co= mmits' \ @@ -5640,7 +5653,6 @@ _git_commands () { pack-refs:'pack heads and tags for efficient repository access' prune:'prune all unreachable objects from the object database' reflog:'manage reflog information' - relink:'hardlink common objects in local repositories' remote:'manage set of tracked repositories' repack:'pack unpacked objects in a repository' replace:'create, list, delete refs to replace objects') @@ -5654,6 +5666,7 @@ _git_commands () { get-tar-commit-id:'extract commit ID from an archive created using gi= t archive' help:'display help information about git' instaweb:'instantly browse your working repository in gitweb' + interpret-trailers:'add or parse structured information in commit mes= sages' merge-tree:'show three-way merge without touching index' rerere:'reuse recorded resolution of conflicted merges' rev-parse:'pick out and massage parameters for other git commands' @@ -6026,17 +6039,80 @@ __git_reflog_entries () { __git_ref_sort_keys () { compset -P '-' = - local -a sort_keys + __git_ref_fields "$@" +} = - # TODO: numparent is undocumented. - sort_keys=3D( - 'refname:the name of the ref' +(( $+functions[__git_ref_fields] )) || +__git_ref_fields () { + # pass -a to complete all fields, otherwise only fields relevant to sor= ting + local match mbegin mend + local -a cfields fields append opts all + + zparseopts -D -E -a opts x: X: J: V: a=3Dall + + if compset -P 1 '(#b)(*):'; then + case $match[1] in + push|upstream) + append=3D( + 'trackshort[show terse version: > (ahead) < (behind) =3D (in sync)]' + 'track[print gone whenever unknown upstream ref is encountered]' + 'track,nobracket[tracking information without brackets]' + ) + ;& + refname|upstream|symref) + append+=3D( + {strip,lstrip}'[strip elements from the left]:elements to strip / -rem= ain' + 'rstrip[strip elements from the right]:elements to strip / -remain' + 'short[strip to non-ambiguous short name]' + ) + ;; + objectname) + append=3D( + 'short[strip to non-ambiguous short name]:length' + ) + ;; + color) + _alternative \ + 'colors::__git_colors' \ + 'attributes::__git_color_attributes' + return + ;; + align) + append=3D( + 'width[specify width]:width' + 'position[specify alignment]:alignment:(left right middle)' + ) + ;; + if) append=3D( {,not}'equals:string' ) ;; + contents) append=3D( subject body signature lines:lines ) ;; + tailers) append=3D( only unfold ) ;; + v|version) + append=3D( + 'refname[sort by versions]' + ) + ;; + esac + (( $#append )) || return 1 + _values 'interpolation modifier' $append + return + fi + + cfields=3D( + 'refname:name of the ref' + 'objectname:object name (SHA-1)' + 'upstream:name of a local ref which can be considered =E2=80=9Cupstre= am=E2=80=9D from the displayed ref' + 'push:name of a local ref which represents the @{push} location for t= he displayed ref' + 'symref:the ref which the given symbolic ref refers to' + 'contents:complete message' + 'trailers:structured information in commit messages' + ) + fields=3D( 'objecttype:the type of the object' 'objectsize:the size of the object' - 'objectname:the object name (SHA-1)' + 'HEAD:* if HEAD matches ref or space otherwise' 'tree:the tree header-field' 'parent:the parent header-field' - 'numparent:undocumented' + 'numparent:number of parent objects' 'object:the object header-field' 'type:the type header-field' 'tag:the tag header-field' @@ -6044,19 +6120,45 @@ __git_ref_sort_keys () { 'authorname:the name component of the author header-field' 'authoremail:the email component of the author header-field' 'authordate:the date component of the author header-field' + 'committer:the committer header-field' 'committername:the name component of the committer header-field' 'committeremail:the email component of the committer header-field' 'committerdate:the date component of the committer header-field' + 'tagger:the tagger header-field' 'taggername:the name component of the tagger header-field' 'taggeremail:the email component of the tagger header-field' 'taggerdate:the date component of the tagger header-field' - 'creatorname:the name component of the creator header-field' + 'creator:the creator header-field' 'creatordate:the date component of the creator header-field' 'subject:the subject of the message' 'body:the body of the message' - 'body:the contents of the message (subject and body)') + 'version\:refname:sort by versions' + ) + if (( $#all )); then + cfields+=3D( + 'color:change output color' + 'align:set alignment' + 'if:conditional' + ) + fields+=3D( + 'then:true branch' + 'else:false branch' + 'end:end if or align block' + ) + fi = - _describe -t sort-keys 'sort key' sort_keys $* + _describe -t fields 'field' cfields -S : -r ':\\) \t\n\-' -- fields "$@= " +} + +(( $+functions[__git_format_ref] )) || +__git_format_ref() { + local expl + compset -P '(%\\\([^)]#\\\)|[^%]|%%|%[[:xdigit:]][[:xdigit:]])#' + if compset -P '%\\\((\*|)'; then + __git_ref_fields -S '\)' -a + else + _wanted -x formats expl format compadd -S '' '%(' + fi } = (( $+functions[__git_signoff_file] )) || @@ -6984,7 +7086,14 @@ __git_setup_diff_stage_options () { __git_format_placeholders() { local sep local -a disp names placeholders expl - if compset -P 'format:'; then + _describe -t formats format '( oneline:"commit-ids and subject of messa= ges" + short:"few headers and only subject of messages" + medium:"most parts of messages" + full:"all parts of commit messages" + fuller:"like full and includes dates" + email:"use email headers like From and Subject" + raw:"the raw commits" )' -- '( format:"specify own format" )' -S ':' = && return + compset -P 'format:' compset -P '(%[^acgCG]|%?[^%]|[^%])#' if compset -P '%C'; then _wanted colors expl color compadd reset red green blue @@ -7003,6 +7112,8 @@ __git_format_placeholders() { gD:'reflog selector' gd:'short reflog selector' gn:'reflog identity' + ge:'reflog identity email' + gE:'reflog identity email (use .mailmap)' gs:'reflog subject' ) disp=3D( -l ) @@ -7026,8 +7137,8 @@ __git_format_placeholders() { h:'abbreviated commit hash' T:'tree hash' t:'abbreviated tree hash' - P:'parent hash' - p:'abbreviated parent hash' + P:'parent hashes' + p:'abbreviated parent hashes' a:'author details' c:'committer details' d:'ref name in brackets' @@ -7058,15 +7169,6 @@ __git_format_placeholders() { fi _wanted placeholders expl placeholder \ compadd -p % -S '' "$disp[@]" "$@" - "$names[@]" - else - _describe -t formats format '( oneline:"commit-ids and subject of mes= sages" - short:"few headers and only subject of messages" - medium:"most parts of messages" - full:"all parts of commit messages" - fuller:"like full and includes dates" - email:"use email headers like From and Subject" - raw:"the raw commits" )' -- '( format:"specify own format" )' -S ':= ' - fi } = (( $+functions[__git_setup_revision_options] )) ||