codelation-cli 0.0.18 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 88c68352a6c757b857570b9ac03d6914559d9fe9
4
- data.tar.gz: 95afa4fca2b0402442831ddcb8457398c1c6da93
3
+ metadata.gz: 500e4becd56b43d04ee95cb97b3ffa22dbf6de34
4
+ data.tar.gz: c404914b94b453a2f40081abec8202ca6c879a6e
5
5
  SHA512:
6
- metadata.gz: 6da286e77d1fb884ad6b6e3292821179169201feb7ef546dcd0ccb75163adace82b40e3e1f740c37b6c25e2117b95edd971a3a208372542bb641ff6e63a3846d
7
- data.tar.gz: 91db2e5eaa471bb29fdc2b33780cd448f3b1820b2b2802dae57ad9d5a9656d27e5ae483b6451fa9d21d6b145693c074223d25bd0644eb53e81cd90c678dfae43
6
+ metadata.gz: 68d026b94b571b7b13f31c4c6db9d1b9cd8833e94459d46d238d93ca5aee1e516ae55a94025085d215dea44f4077858cb8028defacd9355a80c4d391d0ff4def
7
+ data.tar.gz: 19f71254285300f3e9b1a6bdb4b7b78eca2f409a717bed545bda28a20757ff10be5fdf72c4f1b3b7b46e855653d3ac08e1470f63a92cbf9a78f0658b416f00eb
@@ -6,6 +6,7 @@ require_relative "codelation/development/dependencies"
6
6
  require_relative "codelation/development/dot_files"
7
7
  require_relative "codelation/development/install_methods"
8
8
  require_relative "codelation/development/postgres"
9
+ require_relative "codelation/development/psequel"
9
10
  require_relative "codelation/development/ruby"
10
11
  require_relative "codelation/development/sequel_pro"
11
12
  require_relative "codelation/version"
@@ -9,6 +9,7 @@ module Codelation
9
9
  - Atom Packages: erb-snippets, linter, linter-csslint, linter-erb, linter-jshint,
10
10
  linter-php, linter-rubocop, linter-ruby, linter-scss-lint, remote-atom\n
11
11
  - Postgres.app (http://postgresapp.com)\n
12
+ - PSequel.app (http://www.psequel.com)\n
12
13
  - Ruby (https://www.ruby-lang.org)\n
13
14
  - Ruby Gems: bundler, rubocop, scss-lint\n
14
15
  - Sequel Pro.app (http://www.sequelpro.com)
@@ -33,6 +34,11 @@ module Codelation
33
34
  install_postgres
34
35
  end
35
36
 
37
+ unless Dir.exist?("/Applications/PSequel.app")
38
+ print_heading("Installing PSequel.app")
39
+ install_psequel
40
+ end
41
+
36
42
  print_heading("Installing Ruby")
37
43
  install_ruby
38
44
 
@@ -0,0 +1,15 @@
1
+ require "thor"
2
+
3
+ module Codelation
4
+ class Cli < Thor
5
+ PSEQUEL_APP_DOWNLOAD_URL = "http://www.psequel.com/download?version=latest"
6
+
7
+ private
8
+
9
+ # Install PSequel.app
10
+ def install_psequel
11
+ zip_file_path = download_file(PSEQUEL_APP_DOWNLOAD_URL)
12
+ extract_app_from_zip("PSequel.app", zip_file_path)
13
+ end
14
+ end
15
+ end
@@ -3,7 +3,7 @@ require "open-uri"
3
3
  require "thor"
4
4
 
5
5
  module Codelation
6
- VERSION = "0.0.18"
6
+ VERSION = "0.0.19"
7
7
 
8
8
  class Cli < Thor
9
9
  desc "update", "Update codelation-cli to latest version"
@@ -1,5 +1,3 @@
1
- #!bash
2
- #
3
1
  # bash/zsh completion support for core Git.
4
2
  #
5
3
  # Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
@@ -18,11 +16,17 @@
18
16
  #
19
17
  # To use these routines:
20
18
  #
21
- # 1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
19
+ # 1) Copy this file to somewhere (e.g. ~/.git-completion.bash).
22
20
  # 2) Add the following line to your .bashrc/.zshrc:
23
- # source ~/.git-completion.sh
21
+ # source ~/.git-completion.bash
24
22
  # 3) Consider changing your PS1 to also show the current branch,
25
23
  # see git-prompt.sh for details.
24
+ #
25
+ # If you use complex aliases of form '!f() { ... }; f', you can use the null
26
+ # command ':' as the first command in the function body to declare the desired
27
+ # completion style. For example '!f() { : git commit ; ... }; f' will
28
+ # tell the completion to use commit completion. This also works with aliases
29
+ # of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '".
26
30
 
27
31
  case "$COMP_WORDBREAKS" in
28
32
  *:*) : great ;;
@@ -33,22 +37,22 @@ esac
33
37
  # returns location of .git repo
34
38
  __gitdir ()
35
39
  {
36
- if [ -z "${1-}" ]; then
37
- if [ -n "${__git_dir-}" ]; then
38
- echo "$__git_dir"
39
- elif [ -n "${GIT_DIR-}" ]; then
40
- test -d "${GIT_DIR-}" || return 1
41
- echo "$GIT_DIR"
42
- elif [ -d .git ]; then
43
- echo .git
44
- else
45
- git rev-parse --git-dir 2>/dev/null
46
- fi
47
- elif [ -d "$1/.git" ]; then
48
- echo "$1/.git"
49
- else
50
- echo "$1"
51
- fi
40
+ if [ -z "${1-}" ]; then
41
+ if [ -n "${__git_dir-}" ]; then
42
+ echo "$__git_dir"
43
+ elif [ -n "${GIT_DIR-}" ]; then
44
+ test -d "${GIT_DIR-}" || return 1
45
+ echo "$GIT_DIR"
46
+ elif [ -d .git ]; then
47
+ echo .git
48
+ else
49
+ git rev-parse --git-dir 2>/dev/null
50
+ fi
51
+ elif [ -d "$1/.git" ]; then
52
+ echo "$1/.git"
53
+ else
54
+ echo "$1"
55
+ fi
52
56
  }
53
57
 
54
58
  # The following function is based on code from:
@@ -106,88 +110,94 @@ __gitdir ()
106
110
 
107
111
  __git_reassemble_comp_words_by_ref()
108
112
  {
109
- local exclude i j first
110
- # Which word separators to exclude?
111
- exclude="${1//[^$COMP_WORDBREAKS]}"
112
- cword_=$COMP_CWORD
113
- if [ -z "$exclude" ]; then
114
- words_=("${COMP_WORDS[@]}")
115
- return
116
- fi
117
- # List of word completion separators has shrunk;
118
- # re-assemble words to complete.
119
- for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++)); do
120
- # Append each nonempty word consisting of just
121
- # word separator characters to the current word.
122
- first=t
123
- while
124
- [ $i -gt 0 ] &&
125
- [ -n "${COMP_WORDS[$i]}" ] &&
126
- # word consists of excluded word separators
127
- [ "${COMP_WORDS[$i]//[^$exclude]}" = "${COMP_WORDS[$i]}" ]
128
- do
129
- # Attach to the previous token,
130
- # unless the previous token is the command name.
131
- if [ $j -ge 2 ] && [ -n "$first" ]; then
132
- ((j--))
133
- fi
134
- first=
135
- words_[$j]=${words_[j]}${COMP_WORDS[i]}
136
- if [ $i = $COMP_CWORD ]; then
137
- cword_=$j
138
- fi
139
- if (($i < ${#COMP_WORDS[@]} - 1)); then
140
- ((i++))
141
- else
142
- # Done.
143
- return
144
- fi
145
- done
146
- words_[$j]=${words_[j]}${COMP_WORDS[i]}
147
- if [ $i = $COMP_CWORD ]; then
148
- cword_=$j
149
- fi
150
- done
113
+ local exclude i j first
114
+ # Which word separators to exclude?
115
+ exclude="${1//[^$COMP_WORDBREAKS]}"
116
+ cword_=$COMP_CWORD
117
+ if [ -z "$exclude" ]; then
118
+ words_=("${COMP_WORDS[@]}")
119
+ return
120
+ fi
121
+ # List of word completion separators has shrunk;
122
+ # re-assemble words to complete.
123
+ for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++)); do
124
+ # Append each nonempty word consisting of just
125
+ # word separator characters to the current word.
126
+ first=t
127
+ while
128
+ [ $i -gt 0 ] &&
129
+ [ -n "${COMP_WORDS[$i]}" ] &&
130
+ # word consists of excluded word separators
131
+ [ "${COMP_WORDS[$i]//[^$exclude]}" = "${COMP_WORDS[$i]}" ]
132
+ do
133
+ # Attach to the previous token,
134
+ # unless the previous token is the command name.
135
+ if [ $j -ge 2 ] && [ -n "$first" ]; then
136
+ ((j--))
137
+ fi
138
+ first=
139
+ words_[$j]=${words_[j]}${COMP_WORDS[i]}
140
+ if [ $i = $COMP_CWORD ]; then
141
+ cword_=$j
142
+ fi
143
+ if (($i < ${#COMP_WORDS[@]} - 1)); then
144
+ ((i++))
145
+ else
146
+ # Done.
147
+ return
148
+ fi
149
+ done
150
+ words_[$j]=${words_[j]}${COMP_WORDS[i]}
151
+ if [ $i = $COMP_CWORD ]; then
152
+ cword_=$j
153
+ fi
154
+ done
151
155
  }
152
156
 
153
157
  if ! type _get_comp_words_by_ref >/dev/null 2>&1; then
154
158
  _get_comp_words_by_ref ()
155
159
  {
156
- local exclude cur_ words_ cword_
157
- if [ "$1" = "-n" ]; then
158
- exclude=$2
159
- shift 2
160
- fi
161
- __git_reassemble_comp_words_by_ref "$exclude"
162
- cur_=${words_[cword_]}
163
- while [ $# -gt 0 ]; do
164
- case "$1" in
165
- cur)
166
- cur=$cur_
167
- ;;
168
- prev)
169
- prev=${words_[$cword_-1]}
170
- ;;
171
- words)
172
- words=("${words_[@]}")
173
- ;;
174
- cword)
175
- cword=$cword_
176
- ;;
177
- esac
178
- shift
179
- done
160
+ local exclude cur_ words_ cword_
161
+ if [ "$1" = "-n" ]; then
162
+ exclude=$2
163
+ shift 2
164
+ fi
165
+ __git_reassemble_comp_words_by_ref "$exclude"
166
+ cur_=${words_[cword_]}
167
+ while [ $# -gt 0 ]; do
168
+ case "$1" in
169
+ cur)
170
+ cur=$cur_
171
+ ;;
172
+ prev)
173
+ prev=${words_[$cword_-1]}
174
+ ;;
175
+ words)
176
+ words=("${words_[@]}")
177
+ ;;
178
+ cword)
179
+ cword=$cword_
180
+ ;;
181
+ esac
182
+ shift
183
+ done
180
184
  }
181
185
  fi
182
186
 
187
+ __gitcompappend ()
188
+ {
189
+ local x i=${#COMPREPLY[@]}
190
+ for x in $1; do
191
+ if [[ "$x" == "$3"* ]]; then
192
+ COMPREPLY[i++]="$2$x$4"
193
+ fi
194
+ done
195
+ }
196
+
183
197
  __gitcompadd ()
184
198
  {
185
- local i=0
186
- for x in $1; do
187
- if [[ "$x" == "$3"* ]]; then
188
- COMPREPLY[i++]="$2$x$4"
189
- fi
190
- done
199
+ COMPREPLY=()
200
+ __gitcompappend "$@"
191
201
  }
192
202
 
193
203
  # Generates completion reply, appending a space to possible completion words,
@@ -199,25 +209,33 @@ __gitcompadd ()
199
209
  # 4: A suffix to be appended to each possible completion word (optional).
200
210
  __gitcomp ()
201
211
  {
202
- local cur_="${3-$cur}"
203
-
204
- case "$cur_" in
205
- --*=)
206
- ;;
207
- *)
208
- local c i=0 IFS=$' \t\n'
209
- for c in $1; do
210
- c="$c${4-}"
211
- if [[ $c == "$cur_"* ]]; then
212
- case $c in
213
- --*=*|*.) ;;
214
- *) c="$c " ;;
215
- esac
216
- COMPREPLY[i++]="${2-}$c"
217
- fi
218
- done
219
- ;;
220
- esac
212
+ local cur_="${3-$cur}"
213
+
214
+ case "$cur_" in
215
+ --*=)
216
+ ;;
217
+ *)
218
+ local c i=0 IFS=$' \t\n'
219
+ for c in $1; do
220
+ c="$c${4-}"
221
+ if [[ $c == "$cur_"* ]]; then
222
+ case $c in
223
+ --*=*|*.) ;;
224
+ *) c="$c " ;;
225
+ esac
226
+ COMPREPLY[i++]="${2-}$c"
227
+ fi
228
+ done
229
+ ;;
230
+ esac
231
+ }
232
+
233
+ # Variation of __gitcomp_nl () that appends to the existing list of
234
+ # completion candidates, COMPREPLY.
235
+ __gitcomp_nl_append ()
236
+ {
237
+ local IFS=$'\n'
238
+ __gitcompappend "$1" "${2-}" "${3-$cur}" "${4- }"
221
239
  }
222
240
 
223
241
  # Generates completion reply from newline-separated possible completion words
@@ -231,8 +249,8 @@ __gitcomp ()
231
249
  # appended.
232
250
  __gitcomp_nl ()
233
251
  {
234
- local IFS=$'\n'
235
- __gitcompadd "$1" "${2-}" "${3-$cur}" "${4- }"
252
+ COMPREPLY=()
253
+ __gitcomp_nl_append "$@"
236
254
  }
237
255
 
238
256
  # Generates completion reply with compgen from newline-separated possible
@@ -244,17 +262,17 @@ __gitcomp_nl ()
244
262
  # 3: Generate possible completion matches for this word (optional).
245
263
  __gitcomp_file ()
246
264
  {
247
- local IFS=$'\n'
265
+ local IFS=$'\n'
248
266
 
249
- # XXX does not work when the directory prefix contains a tilde,
250
- # since tilde expansion is not applied.
251
- # This means that COMPREPLY will be empty and Bash default
252
- # completion will be used.
253
- __gitcompadd "$1" "${2-}" "${3-$cur}" ""
267
+ # XXX does not work when the directory prefix contains a tilde,
268
+ # since tilde expansion is not applied.
269
+ # This means that COMPREPLY will be empty and Bash default
270
+ # completion will be used.
271
+ __gitcompadd "$1" "${2-}" "${3-$cur}" ""
254
272
 
255
- # use a hack to enable file mode in bash < 4
256
- compopt -o filenames +o nospace 2>/dev/null ||
257
- compgen -f /non-existing-dir/ > /dev/null
273
+ # use a hack to enable file mode in bash < 4
274
+ compopt -o filenames +o nospace 2>/dev/null ||
275
+ compgen -f /non-existing-dir/ > /dev/null
258
276
  }
259
277
 
260
278
  # Execute 'git ls-files', unless the --committable option is specified, in
@@ -263,16 +281,12 @@ __gitcomp_file ()
263
281
  # argument, and using the options specified in the second argument.
264
282
  __git_ls_files_helper ()
265
283
  {
266
- (
267
- test -n "${CDPATH+set}" && unset CDPATH
268
- cd "$1"
269
- if [ "$2" == "--committable" ]; then
270
- git diff-index --name-only --relative HEAD
271
- else
272
- # NOTE: $2 is not quoted in order to support multiple options
273
- git ls-files --exclude-standard $2
274
- fi
275
- ) 2>/dev/null
284
+ if [ "$2" == "--committable" ]; then
285
+ git -C "$1" diff-index --name-only --relative HEAD
286
+ else
287
+ # NOTE: $2 is not quoted in order to support multiple options
288
+ git -C "$1" ls-files --exclude-standard $2
289
+ fi 2>/dev/null
276
290
  }
277
291
 
278
292
 
@@ -284,37 +298,37 @@ __git_ls_files_helper ()
284
298
  # slash.
285
299
  __git_index_files ()
286
300
  {
287
- local dir="$(__gitdir)" root="${2-.}" file
301
+ local dir="$(__gitdir)" root="${2-.}" file
288
302
 
289
- if [ -d "$dir" ]; then
290
- __git_ls_files_helper "$root" "$1" |
291
- while read -r file; do
292
- case "$file" in
293
- ?*/*) echo "${file%%/*}" ;;
294
- *) echo "$file" ;;
295
- esac
296
- done | sort | uniq
297
- fi
303
+ if [ -d "$dir" ]; then
304
+ __git_ls_files_helper "$root" "$1" |
305
+ while read -r file; do
306
+ case "$file" in
307
+ ?*/*) echo "${file%%/*}" ;;
308
+ *) echo "$file" ;;
309
+ esac
310
+ done | sort | uniq
311
+ fi
298
312
  }
299
313
 
300
314
  __git_heads ()
301
315
  {
302
- local dir="$(__gitdir)"
303
- if [ -d "$dir" ]; then
304
- git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
305
- refs/heads
306
- return
307
- fi
316
+ local dir="$(__gitdir)"
317
+ if [ -d "$dir" ]; then
318
+ git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
319
+ refs/heads
320
+ return
321
+ fi
308
322
  }
309
323
 
310
324
  __git_tags ()
311
325
  {
312
- local dir="$(__gitdir)"
313
- if [ -d "$dir" ]; then
314
- git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
315
- refs/tags
316
- return
317
- fi
326
+ local dir="$(__gitdir)"
327
+ if [ -d "$dir" ]; then
328
+ git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
329
+ refs/tags
330
+ return
331
+ fi
318
332
  }
319
333
 
320
334
  # __git_refs accepts 0, 1 (to pass to __gitdir), or 2 arguments
@@ -322,98 +336,96 @@ __git_tags ()
322
336
  # by checkout for tracking branches
323
337
  __git_refs ()
324
338
  {
325
- local i hash dir="$(__gitdir "${1-}")" track="${2-}"
326
- local format refs
327
- if [ -d "$dir" ]; then
328
- case "$cur" in
329
- refs|refs/*)
330
- format="refname"
331
- refs="${cur%/*}"
332
- track=""
333
- ;;
334
- *)
335
- for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; do
336
- if [ -e "$dir/$i" ]; then echo $i; fi
337
- done
338
- format="refname:short"
339
- refs="refs/tags refs/heads refs/remotes"
340
- ;;
341
- esac
342
- git --git-dir="$dir" for-each-ref --format="%($format)" \
343
- $refs
344
- if [ -n "$track" ]; then
345
- # employ the heuristic used by git checkout
346
- # Try to find a remote branch that matches the completion word
347
- # but only output if the branch name is unique
348
- local ref entry
349
- git --git-dir="$dir" for-each-ref --shell --format="ref=%(refname:short)" \
350
- "refs/remotes/" | \
351
- while read -r entry; do
352
- eval "$entry"
353
- ref="${ref#*/}"
354
- if [[ "$ref" == "$cur"* ]]; then
355
- echo "$ref"
356
- fi
357
- done | sort | uniq -u
358
- fi
359
- return
360
- fi
361
- case "$cur" in
362
- refs|refs/*)
363
- git ls-remote "$dir" "$cur*" 2>/dev/null | \
364
- while read -r hash i; do
365
- case "$i" in
366
- *^{}) ;;
367
- *) echo "$i" ;;
368
- esac
369
- done
370
- ;;
371
- *)
372
- echo "HEAD"
373
- git for-each-ref --format="%(refname:short)" -- "refs/remotes/$dir/" | sed -e "s#^$dir/##"
374
- ;;
375
- esac
339
+ local i hash dir="$(__gitdir "${1-}")" track="${2-}"
340
+ local format refs
341
+ if [ -d "$dir" ]; then
342
+ case "$cur" in
343
+ refs|refs/*)
344
+ format="refname"
345
+ refs="${cur%/*}"
346
+ track=""
347
+ ;;
348
+ *)
349
+ for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; do
350
+ if [ -e "$dir/$i" ]; then echo $i; fi
351
+ done
352
+ format="refname:short"
353
+ refs="refs/tags refs/heads refs/remotes"
354
+ ;;
355
+ esac
356
+ git --git-dir="$dir" for-each-ref --format="%($format)" \
357
+ $refs
358
+ if [ -n "$track" ]; then
359
+ # employ the heuristic used by git checkout
360
+ # Try to find a remote branch that matches the completion word
361
+ # but only output if the branch name is unique
362
+ local ref entry
363
+ git --git-dir="$dir" for-each-ref --shell --format="ref=%(refname:short)" \
364
+ "refs/remotes/" | \
365
+ while read -r entry; do
366
+ eval "$entry"
367
+ ref="${ref#*/}"
368
+ if [[ "$ref" == "$cur"* ]]; then
369
+ echo "$ref"
370
+ fi
371
+ done | sort | uniq -u
372
+ fi
373
+ return
374
+ fi
375
+ case "$cur" in
376
+ refs|refs/*)
377
+ git ls-remote "$dir" "$cur*" 2>/dev/null | \
378
+ while read -r hash i; do
379
+ case "$i" in
380
+ *^{}) ;;
381
+ *) echo "$i" ;;
382
+ esac
383
+ done
384
+ ;;
385
+ *)
386
+ echo "HEAD"
387
+ git for-each-ref --format="%(refname:short)" -- \
388
+ "refs/remotes/$dir/" 2>/dev/null | sed -e "s#^$dir/##"
389
+ ;;
390
+ esac
376
391
  }
377
392
 
378
393
  # __git_refs2 requires 1 argument (to pass to __git_refs)
379
394
  __git_refs2 ()
380
395
  {
381
- local i
382
- for i in $(__git_refs "$1"); do
383
- echo "$i:$i"
384
- done
396
+ local i
397
+ for i in $(__git_refs "$1"); do
398
+ echo "$i:$i"
399
+ done
385
400
  }
386
401
 
387
402
  # __git_refs_remotes requires 1 argument (to pass to ls-remote)
388
403
  __git_refs_remotes ()
389
404
  {
390
- local i hash
391
- git ls-remote "$1" 'refs/heads/*' 2>/dev/null | \
392
- while read -r hash i; do
393
- echo "$i:refs/remotes/$1/${i#refs/heads/}"
394
- done
405
+ local i hash
406
+ git ls-remote "$1" 'refs/heads/*' 2>/dev/null | \
407
+ while read -r hash i; do
408
+ echo "$i:refs/remotes/$1/${i#refs/heads/}"
409
+ done
395
410
  }
396
411
 
397
412
  __git_remotes ()
398
413
  {
399
- local i IFS=$'\n' d="$(__gitdir)"
400
- test -d "$d/remotes" && ls -1 "$d/remotes"
401
- for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do
402
- i="${i#remote.}"
403
- echo "${i/.url*/}"
404
- done
414
+ local d="$(__gitdir)"
415
+ test -d "$d/remotes" && ls -1 "$d/remotes"
416
+ git --git-dir="$d" remote
405
417
  }
406
418
 
407
419
  __git_list_merge_strategies ()
408
420
  {
409
- git merge -s help 2>&1 |
410
- sed -n -e '/[Aa]vailable strategies are: /,/^$/{
411
- s/\.$//
412
- s/.*://
413
- s/^[ ]*//
414
- s/[ ]*$//
415
- p
416
- }'
421
+ git merge -s help 2>&1 |
422
+ sed -n -e '/[Aa]vailable strategies are: /,/^$/{
423
+ s/\.$//
424
+ s/.*://
425
+ s/^[ ]*//
426
+ s/[ ]*$//
427
+ p
428
+ }'
417
429
  }
418
430
 
419
431
  __git_merge_strategies=
@@ -424,67 +436,67 @@ __git_merge_strategies=
424
436
  # is needed.
425
437
  __git_compute_merge_strategies ()
426
438
  {
427
- test -n "$__git_merge_strategies" ||
428
- __git_merge_strategies=$(__git_list_merge_strategies)
439
+ test -n "$__git_merge_strategies" ||
440
+ __git_merge_strategies=$(__git_list_merge_strategies)
429
441
  }
430
442
 
431
443
  __git_complete_revlist_file ()
432
444
  {
433
- local pfx ls ref cur_="$cur"
434
- case "$cur_" in
435
- *..?*:*)
436
- return
437
- ;;
438
- ?*:*)
439
- ref="${cur_%%:*}"
440
- cur_="${cur_#*:}"
441
- case "$cur_" in
442
- ?*/*)
443
- pfx="${cur_%/*}"
444
- cur_="${cur_##*/}"
445
- ls="$ref:$pfx"
446
- pfx="$pfx/"
447
- ;;
448
- *)
449
- ls="$ref"
450
- ;;
451
- esac
452
-
453
- case "$COMP_WORDBREAKS" in
454
- *:*) : great ;;
455
- *) pfx="$ref:$pfx" ;;
456
- esac
457
-
458
- __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" 2>/dev/null \
459
- | sed '/^100... blob /{
460
- s,^.* ,,
461
- s,$, ,
462
- }
463
- /^120000 blob /{
464
- s,^.* ,,
465
- s,$, ,
466
- }
467
- /^040000 tree /{
468
- s,^.* ,,
469
- s,$,/,
470
- }
471
- s/^.* //')" \
472
- "$pfx" "$cur_" ""
473
- ;;
474
- *...*)
475
- pfx="${cur_%...*}..."
476
- cur_="${cur_#*...}"
477
- __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
478
- ;;
479
- *..*)
480
- pfx="${cur_%..*}.."
481
- cur_="${cur_#*..}"
482
- __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
483
- ;;
484
- *)
485
- __gitcomp_nl "$(__git_refs)"
486
- ;;
487
- esac
445
+ local pfx ls ref cur_="$cur"
446
+ case "$cur_" in
447
+ *..?*:*)
448
+ return
449
+ ;;
450
+ ?*:*)
451
+ ref="${cur_%%:*}"
452
+ cur_="${cur_#*:}"
453
+ case "$cur_" in
454
+ ?*/*)
455
+ pfx="${cur_%/*}"
456
+ cur_="${cur_##*/}"
457
+ ls="$ref:$pfx"
458
+ pfx="$pfx/"
459
+ ;;
460
+ *)
461
+ ls="$ref"
462
+ ;;
463
+ esac
464
+
465
+ case "$COMP_WORDBREAKS" in
466
+ *:*) : great ;;
467
+ *) pfx="$ref:$pfx" ;;
468
+ esac
469
+
470
+ __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" 2>/dev/null \
471
+ | sed '/^100... blob /{
472
+ s,^.* ,,
473
+ s,$, ,
474
+ }
475
+ /^120000 blob /{
476
+ s,^.* ,,
477
+ s,$, ,
478
+ }
479
+ /^040000 tree /{
480
+ s,^.* ,,
481
+ s,$,/,
482
+ }
483
+ s/^.* //')" \
484
+ "$pfx" "$cur_" ""
485
+ ;;
486
+ *...*)
487
+ pfx="${cur_%...*}..."
488
+ cur_="${cur_#*...}"
489
+ __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
490
+ ;;
491
+ *..*)
492
+ pfx="${cur_%..*}.."
493
+ cur_="${cur_#*..}"
494
+ __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
495
+ ;;
496
+ *)
497
+ __gitcomp_nl "$(__git_refs)"
498
+ ;;
499
+ esac
488
500
  }
489
501
 
490
502
 
@@ -494,318 +506,312 @@ __git_complete_revlist_file ()
494
506
  # The exception is --committable, which finds the files appropriate commit.
495
507
  __git_complete_index_file ()
496
508
  {
497
- local pfx="" cur_="$cur"
509
+ local pfx="" cur_="$cur"
498
510
 
499
- case "$cur_" in
500
- ?*/*)
501
- pfx="${cur_%/*}"
502
- cur_="${cur_##*/}"
503
- pfx="${pfx}/"
504
- ;;
505
- esac
511
+ case "$cur_" in
512
+ ?*/*)
513
+ pfx="${cur_%/*}"
514
+ cur_="${cur_##*/}"
515
+ pfx="${pfx}/"
516
+ ;;
517
+ esac
506
518
 
507
- __gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_"
519
+ __gitcomp_file "$(__git_index_files "$1" ${pfx:+"$pfx"})" "$pfx" "$cur_"
508
520
  }
509
521
 
510
522
  __git_complete_file ()
511
523
  {
512
- __git_complete_revlist_file
524
+ __git_complete_revlist_file
513
525
  }
514
526
 
515
527
  __git_complete_revlist ()
516
528
  {
517
- __git_complete_revlist_file
529
+ __git_complete_revlist_file
518
530
  }
519
531
 
520
532
  __git_complete_remote_or_refspec ()
521
533
  {
522
- local cur_="$cur" cmd="${words[1]}"
523
- local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0
524
- if [ "$cmd" = "remote" ]; then
525
- ((c++))
526
- fi
527
- while [ $c -lt $cword ]; do
528
- i="${words[c]}"
529
- case "$i" in
530
- --mirror) [ "$cmd" = "push" ] && no_complete_refspec=1 ;;
531
- --all)
532
- case "$cmd" in
533
- push) no_complete_refspec=1 ;;
534
- fetch)
535
- return
536
- ;;
537
- *) ;;
538
- esac
539
- ;;
540
- -*) ;;
541
- *) remote="$i"; break ;;
542
- esac
543
- ((c++))
544
- done
545
- if [ -z "$remote" ]; then
546
- __gitcomp_nl "$(__git_remotes)"
547
- return
548
- fi
549
- if [ $no_complete_refspec = 1 ]; then
550
- return
551
- fi
552
- [ "$remote" = "." ] && remote=
553
- case "$cur_" in
554
- *:*)
555
- case "$COMP_WORDBREAKS" in
556
- *:*) : great ;;
557
- *) pfx="${cur_%%:*}:" ;;
558
- esac
559
- cur_="${cur_#*:}"
560
- lhs=0
561
- ;;
562
- +*)
563
- pfx="+"
564
- cur_="${cur_#+}"
565
- ;;
566
- esac
567
- case "$cmd" in
568
- fetch)
569
- if [ $lhs = 1 ]; then
570
- __gitcomp_nl "$(__git_refs2 "$remote")" "$pfx" "$cur_"
571
- else
572
- __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
573
- fi
574
- ;;
575
- pull|remote)
576
- if [ $lhs = 1 ]; then
577
- __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"
578
- else
579
- __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
580
- fi
581
- ;;
582
- push)
583
- if [ $lhs = 1 ]; then
584
- __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
585
- else
586
- __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"
587
- fi
588
- ;;
589
- esac
534
+ local cur_="$cur" cmd="${words[1]}"
535
+ local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0
536
+ if [ "$cmd" = "remote" ]; then
537
+ ((c++))
538
+ fi
539
+ while [ $c -lt $cword ]; do
540
+ i="${words[c]}"
541
+ case "$i" in
542
+ --mirror) [ "$cmd" = "push" ] && no_complete_refspec=1 ;;
543
+ --all)
544
+ case "$cmd" in
545
+ push) no_complete_refspec=1 ;;
546
+ fetch)
547
+ return
548
+ ;;
549
+ *) ;;
550
+ esac
551
+ ;;
552
+ -*) ;;
553
+ *) remote="$i"; break ;;
554
+ esac
555
+ ((c++))
556
+ done
557
+ if [ -z "$remote" ]; then
558
+ __gitcomp_nl "$(__git_remotes)"
559
+ return
560
+ fi
561
+ if [ $no_complete_refspec = 1 ]; then
562
+ return
563
+ fi
564
+ [ "$remote" = "." ] && remote=
565
+ case "$cur_" in
566
+ *:*)
567
+ case "$COMP_WORDBREAKS" in
568
+ *:*) : great ;;
569
+ *) pfx="${cur_%%:*}:" ;;
570
+ esac
571
+ cur_="${cur_#*:}"
572
+ lhs=0
573
+ ;;
574
+ +*)
575
+ pfx="+"
576
+ cur_="${cur_#+}"
577
+ ;;
578
+ esac
579
+ case "$cmd" in
580
+ fetch)
581
+ if [ $lhs = 1 ]; then
582
+ __gitcomp_nl "$(__git_refs2 "$remote")" "$pfx" "$cur_"
583
+ else
584
+ __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
585
+ fi
586
+ ;;
587
+ pull|remote)
588
+ if [ $lhs = 1 ]; then
589
+ __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"
590
+ else
591
+ __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
592
+ fi
593
+ ;;
594
+ push)
595
+ if [ $lhs = 1 ]; then
596
+ __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
597
+ else
598
+ __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"
599
+ fi
600
+ ;;
601
+ esac
590
602
  }
591
603
 
592
604
  __git_complete_strategy ()
593
605
  {
594
- __git_compute_merge_strategies
595
- case "$prev" in
596
- -s|--strategy)
597
- __gitcomp "$__git_merge_strategies"
598
- return 0
599
- esac
600
- case "$cur" in
601
- --strategy=*)
602
- __gitcomp "$__git_merge_strategies" "" "${cur##--strategy=}"
603
- return 0
604
- ;;
605
- esac
606
- return 1
606
+ __git_compute_merge_strategies
607
+ case "$prev" in
608
+ -s|--strategy)
609
+ __gitcomp "$__git_merge_strategies"
610
+ return 0
611
+ esac
612
+ case "$cur" in
613
+ --strategy=*)
614
+ __gitcomp "$__git_merge_strategies" "" "${cur##--strategy=}"
615
+ return 0
616
+ ;;
617
+ esac
618
+ return 1
607
619
  }
608
620
 
609
621
  __git_commands () {
610
- if test -n "${GIT_TESTING_COMMAND_COMPLETION:-}"
611
- then
612
- printf "%s" "${GIT_TESTING_COMMAND_COMPLETION}"
613
- else
614
- git help -a|egrep '^ [a-zA-Z0-9]'
615
- fi
622
+ if test -n "${GIT_TESTING_COMMAND_COMPLETION:-}"
623
+ then
624
+ printf "%s" "${GIT_TESTING_COMMAND_COMPLETION}"
625
+ else
626
+ git help -a|egrep '^ [a-zA-Z0-9]'
627
+ fi
616
628
  }
617
629
 
618
630
  __git_list_all_commands ()
619
631
  {
620
- local i IFS=" "$'\n'
621
- for i in $(__git_commands)
622
- do
623
- case $i in
624
- *--*) : helper pattern;;
625
- *) echo $i;;
626
- esac
627
- done
632
+ local i IFS=" "$'\n'
633
+ for i in $(__git_commands)
634
+ do
635
+ case $i in
636
+ *--*) : helper pattern;;
637
+ *) echo $i;;
638
+ esac
639
+ done
628
640
  }
629
641
 
630
642
  __git_all_commands=
631
643
  __git_compute_all_commands ()
632
644
  {
633
- test -n "$__git_all_commands" ||
634
- __git_all_commands=$(__git_list_all_commands)
645
+ test -n "$__git_all_commands" ||
646
+ __git_all_commands=$(__git_list_all_commands)
635
647
  }
636
648
 
637
649
  __git_list_porcelain_commands ()
638
650
  {
639
- local i IFS=" "$'\n'
640
- __git_compute_all_commands
641
- for i in $__git_all_commands
642
- do
643
- case $i in
644
- *--*) : helper pattern;;
645
- applymbox) : ask gittus;;
646
- applypatch) : ask gittus;;
647
- archimport) : import;;
648
- cat-file) : plumbing;;
649
- check-attr) : plumbing;;
650
- check-ignore) : plumbing;;
651
- check-mailmap) : plumbing;;
652
- check-ref-format) : plumbing;;
653
- checkout-index) : plumbing;;
654
- commit-tree) : plumbing;;
655
- count-objects) : infrequent;;
656
- credential-cache) : credentials helper;;
657
- credential-store) : credentials helper;;
658
- cvsexportcommit) : export;;
659
- cvsimport) : import;;
660
- cvsserver) : daemon;;
661
- daemon) : daemon;;
662
- diff-files) : plumbing;;
663
- diff-index) : plumbing;;
664
- diff-tree) : plumbing;;
665
- fast-import) : import;;
666
- fast-export) : export;;
667
- fsck-objects) : plumbing;;
668
- fetch-pack) : plumbing;;
669
- fmt-merge-msg) : plumbing;;
670
- for-each-ref) : plumbing;;
671
- hash-object) : plumbing;;
672
- http-*) : transport;;
673
- index-pack) : plumbing;;
674
- init-db) : deprecated;;
675
- local-fetch) : plumbing;;
676
- lost-found) : infrequent;;
677
- ls-files) : plumbing;;
678
- ls-remote) : plumbing;;
679
- ls-tree) : plumbing;;
680
- mailinfo) : plumbing;;
681
- mailsplit) : plumbing;;
682
- merge-*) : plumbing;;
683
- mktree) : plumbing;;
684
- mktag) : plumbing;;
685
- pack-objects) : plumbing;;
686
- pack-redundant) : plumbing;;
687
- pack-refs) : plumbing;;
688
- parse-remote) : plumbing;;
689
- patch-id) : plumbing;;
690
- peek-remote) : plumbing;;
691
- prune) : plumbing;;
692
- prune-packed) : plumbing;;
693
- quiltimport) : import;;
694
- read-tree) : plumbing;;
695
- receive-pack) : plumbing;;
696
- remote-*) : transport;;
697
- repo-config) : deprecated;;
698
- rerere) : plumbing;;
699
- rev-list) : plumbing;;
700
- rev-parse) : plumbing;;
701
- runstatus) : plumbing;;
702
- sh-setup) : internal;;
703
- shell) : daemon;;
704
- show-ref) : plumbing;;
705
- send-pack) : plumbing;;
706
- show-index) : plumbing;;
707
- ssh-*) : transport;;
708
- stripspace) : plumbing;;
709
- symbolic-ref) : plumbing;;
710
- tar-tree) : deprecated;;
711
- unpack-file) : plumbing;;
712
- unpack-objects) : plumbing;;
713
- update-index) : plumbing;;
714
- update-ref) : plumbing;;
715
- update-server-info) : daemon;;
716
- upload-archive) : plumbing;;
717
- upload-pack) : plumbing;;
718
- write-tree) : plumbing;;
719
- var) : infrequent;;
720
- verify-pack) : infrequent;;
721
- verify-tag) : plumbing;;
722
- *) echo $i;;
723
- esac
724
- done
651
+ local i IFS=" "$'\n'
652
+ __git_compute_all_commands
653
+ for i in $__git_all_commands
654
+ do
655
+ case $i in
656
+ *--*) : helper pattern;;
657
+ applymbox) : ask gittus;;
658
+ applypatch) : ask gittus;;
659
+ archimport) : import;;
660
+ cat-file) : plumbing;;
661
+ check-attr) : plumbing;;
662
+ check-ignore) : plumbing;;
663
+ check-mailmap) : plumbing;;
664
+ check-ref-format) : plumbing;;
665
+ checkout-index) : plumbing;;
666
+ commit-tree) : plumbing;;
667
+ count-objects) : infrequent;;
668
+ credential) : credentials;;
669
+ credential-*) : credentials helper;;
670
+ cvsexportcommit) : export;;
671
+ cvsimport) : import;;
672
+ cvsserver) : daemon;;
673
+ daemon) : daemon;;
674
+ diff-files) : plumbing;;
675
+ diff-index) : plumbing;;
676
+ diff-tree) : plumbing;;
677
+ fast-import) : import;;
678
+ fast-export) : export;;
679
+ fsck-objects) : plumbing;;
680
+ fetch-pack) : plumbing;;
681
+ fmt-merge-msg) : plumbing;;
682
+ for-each-ref) : plumbing;;
683
+ hash-object) : plumbing;;
684
+ http-*) : transport;;
685
+ index-pack) : plumbing;;
686
+ init-db) : deprecated;;
687
+ local-fetch) : plumbing;;
688
+ ls-files) : plumbing;;
689
+ ls-remote) : plumbing;;
690
+ ls-tree) : plumbing;;
691
+ mailinfo) : plumbing;;
692
+ mailsplit) : plumbing;;
693
+ merge-*) : plumbing;;
694
+ mktree) : plumbing;;
695
+ mktag) : plumbing;;
696
+ pack-objects) : plumbing;;
697
+ pack-redundant) : plumbing;;
698
+ pack-refs) : plumbing;;
699
+ parse-remote) : plumbing;;
700
+ patch-id) : plumbing;;
701
+ prune) : plumbing;;
702
+ prune-packed) : plumbing;;
703
+ quiltimport) : import;;
704
+ read-tree) : plumbing;;
705
+ receive-pack) : plumbing;;
706
+ remote-*) : transport;;
707
+ rerere) : plumbing;;
708
+ rev-list) : plumbing;;
709
+ rev-parse) : plumbing;;
710
+ runstatus) : plumbing;;
711
+ sh-setup) : internal;;
712
+ shell) : daemon;;
713
+ show-ref) : plumbing;;
714
+ send-pack) : plumbing;;
715
+ show-index) : plumbing;;
716
+ ssh-*) : transport;;
717
+ stripspace) : plumbing;;
718
+ symbolic-ref) : plumbing;;
719
+ unpack-file) : plumbing;;
720
+ unpack-objects) : plumbing;;
721
+ update-index) : plumbing;;
722
+ update-ref) : plumbing;;
723
+ update-server-info) : daemon;;
724
+ upload-archive) : plumbing;;
725
+ upload-pack) : plumbing;;
726
+ write-tree) : plumbing;;
727
+ var) : infrequent;;
728
+ verify-pack) : infrequent;;
729
+ verify-tag) : plumbing;;
730
+ *) echo $i;;
731
+ esac
732
+ done
725
733
  }
726
734
 
727
735
  __git_porcelain_commands=
728
736
  __git_compute_porcelain_commands ()
729
737
  {
730
- __git_compute_all_commands
731
- test -n "$__git_porcelain_commands" ||
732
- __git_porcelain_commands=$(__git_list_porcelain_commands)
738
+ test -n "$__git_porcelain_commands" ||
739
+ __git_porcelain_commands=$(__git_list_porcelain_commands)
740
+ }
741
+
742
+ # Lists all set config variables starting with the given section prefix,
743
+ # with the prefix removed.
744
+ __git_get_config_variables ()
745
+ {
746
+ local section="$1" i IFS=$'\n'
747
+ for i in $(git --git-dir="$(__gitdir)" config --get-regexp "^$section\..*" 2>/dev/null); do
748
+ i="${i#$section.}"
749
+ echo "${i/ */}"
750
+ done
733
751
  }
734
752
 
735
753
  __git_pretty_aliases ()
736
754
  {
737
- local i IFS=$'\n'
738
- for i in $(git --git-dir="$(__gitdir)" config --get-regexp "pretty\..*" 2>/dev/null); do
739
- case "$i" in
740
- pretty.*)
741
- i="${i#pretty.}"
742
- echo "${i/ */}"
743
- ;;
744
- esac
745
- done
755
+ __git_get_config_variables "pretty"
746
756
  }
747
757
 
748
758
  __git_aliases ()
749
759
  {
750
- local i IFS=$'\n'
751
- for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); do
752
- case "$i" in
753
- alias.*)
754
- i="${i#alias.}"
755
- echo "${i/ */}"
756
- ;;
757
- esac
758
- done
760
+ __git_get_config_variables "alias"
759
761
  }
760
762
 
761
763
  # __git_aliased_command requires 1 argument
762
764
  __git_aliased_command ()
763
765
  {
764
- local word cmdline=$(git --git-dir="$(__gitdir)" \
765
- config --get "alias.$1")
766
- for word in $cmdline; do
767
- case "$word" in
768
- \!gitk|gitk)
769
- echo "gitk"
770
- return
771
- ;;
772
- \!*) : shell command alias ;;
773
- -*) : option ;;
774
- *=*) : setting env ;;
775
- git) : git itself ;;
776
- *)
777
- echo "$word"
778
- return
779
- esac
780
- done
766
+ local word cmdline=$(git --git-dir="$(__gitdir)" \
767
+ config --get "alias.$1")
768
+ for word in $cmdline; do
769
+ case "$word" in
770
+ \!gitk|gitk)
771
+ echo "gitk"
772
+ return
773
+ ;;
774
+ \!*) : shell command alias ;;
775
+ -*) : option ;;
776
+ *=*) : setting env ;;
777
+ git) : git itself ;;
778
+ \(\)) : skip parens of shell function definition ;;
779
+ {) : skip start of shell helper function ;;
780
+ :) : skip null command ;;
781
+ \'*) : skip opening quote after sh -c ;;
782
+ *)
783
+ echo "$word"
784
+ return
785
+ esac
786
+ done
781
787
  }
782
788
 
783
789
  # __git_find_on_cmdline requires 1 argument
784
790
  __git_find_on_cmdline ()
785
791
  {
786
- local word subcommand c=1
787
- while [ $c -lt $cword ]; do
788
- word="${words[c]}"
789
- for subcommand in $1; do
790
- if [ "$subcommand" = "$word" ]; then
791
- echo "$subcommand"
792
- return
793
- fi
794
- done
795
- ((c++))
796
- done
792
+ local word subcommand c=1
793
+ while [ $c -lt $cword ]; do
794
+ word="${words[c]}"
795
+ for subcommand in $1; do
796
+ if [ "$subcommand" = "$word" ]; then
797
+ echo "$subcommand"
798
+ return
799
+ fi
800
+ done
801
+ ((c++))
802
+ done
797
803
  }
798
804
 
799
805
  __git_has_doubledash ()
800
806
  {
801
- local c=1
802
- while [ $c -lt $cword ]; do
803
- if [ "--" = "${words[c]}" ]; then
804
- return 0
805
- fi
806
- ((c++))
807
- done
808
- return 1
807
+ local c=1
808
+ while [ $c -lt $cword ]; do
809
+ if [ "--" = "${words[c]}" ]; then
810
+ return 0
811
+ fi
812
+ ((c++))
813
+ done
814
+ return 1
809
815
  }
810
816
 
811
817
  # Try to count non option arguments passed on the command line for the
@@ -819,592 +825,598 @@ __git_has_doubledash ()
819
825
  # __git_count_arguments requires 1 argument: the git command executed.
820
826
  __git_count_arguments ()
821
827
  {
822
- local word i c=0
828
+ local word i c=0
823
829
 
824
- # Skip "git" (first argument)
825
- for ((i=1; i < ${#words[@]}; i++)); do
826
- word="${words[i]}"
830
+ # Skip "git" (first argument)
831
+ for ((i=1; i < ${#words[@]}; i++)); do
832
+ word="${words[i]}"
827
833
 
828
- case "$word" in
829
- --)
830
- # Good; we can assume that the following are only non
831
- # option arguments.
832
- ((c = 0))
833
- ;;
834
- "$1")
835
- # Skip the specified git command and discard git
836
- # main options
837
- ((c = 0))
838
- ;;
839
- ?*)
840
- ((c++))
841
- ;;
842
- esac
843
- done
834
+ case "$word" in
835
+ --)
836
+ # Good; we can assume that the following are only non
837
+ # option arguments.
838
+ ((c = 0))
839
+ ;;
840
+ "$1")
841
+ # Skip the specified git command and discard git
842
+ # main options
843
+ ((c = 0))
844
+ ;;
845
+ ?*)
846
+ ((c++))
847
+ ;;
848
+ esac
849
+ done
844
850
 
845
- printf "%d" $c
851
+ printf "%d" $c
846
852
  }
847
853
 
848
854
  __git_whitespacelist="nowarn warn error error-all fix"
849
855
 
850
856
  _git_am ()
851
857
  {
852
- local dir="$(__gitdir)"
853
- if [ -d "$dir"/rebase-apply ]; then
854
- __gitcomp "--skip --continue --resolved --abort"
855
- return
856
- fi
857
- case "$cur" in
858
- --whitespace=*)
859
- __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
860
- return
861
- ;;
862
- --*)
863
- __gitcomp "
864
- --3way --committer-date-is-author-date --ignore-date
865
- --ignore-whitespace --ignore-space-change
866
- --interactive --keep --no-utf8 --signoff --utf8
867
- --whitespace= --scissors
868
- "
869
- return
870
- esac
858
+ local dir="$(__gitdir)"
859
+ if [ -d "$dir"/rebase-apply ]; then
860
+ __gitcomp "--skip --continue --resolved --abort"
861
+ return
862
+ fi
863
+ case "$cur" in
864
+ --whitespace=*)
865
+ __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
866
+ return
867
+ ;;
868
+ --*)
869
+ __gitcomp "
870
+ --3way --committer-date-is-author-date --ignore-date
871
+ --ignore-whitespace --ignore-space-change
872
+ --interactive --keep --no-utf8 --signoff --utf8
873
+ --whitespace= --scissors
874
+ "
875
+ return
876
+ esac
871
877
  }
872
878
 
873
879
  _git_apply ()
874
880
  {
875
- case "$cur" in
876
- --whitespace=*)
877
- __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
878
- return
879
- ;;
880
- --*)
881
- __gitcomp "
882
- --stat --numstat --summary --check --index
883
- --cached --index-info --reverse --reject --unidiff-zero
884
- --apply --no-add --exclude=
885
- --ignore-whitespace --ignore-space-change
886
- --whitespace= --inaccurate-eof --verbose
887
- "
888
- return
889
- esac
881
+ case "$cur" in
882
+ --whitespace=*)
883
+ __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
884
+ return
885
+ ;;
886
+ --*)
887
+ __gitcomp "
888
+ --stat --numstat --summary --check --index
889
+ --cached --index-info --reverse --reject --unidiff-zero
890
+ --apply --no-add --exclude=
891
+ --ignore-whitespace --ignore-space-change
892
+ --whitespace= --inaccurate-eof --verbose
893
+ "
894
+ return
895
+ esac
890
896
  }
891
897
 
892
898
  _git_add ()
893
899
  {
894
- case "$cur" in
895
- --*)
896
- __gitcomp "
897
- --interactive --refresh --patch --update --dry-run
898
- --ignore-errors --intent-to-add
899
- "
900
- return
901
- esac
900
+ case "$cur" in
901
+ --*)
902
+ __gitcomp "
903
+ --interactive --refresh --patch --update --dry-run
904
+ --ignore-errors --intent-to-add
905
+ "
906
+ return
907
+ esac
902
908
 
903
- # XXX should we check for --update and --all options ?
904
- __git_complete_index_file "--others --modified"
909
+ # XXX should we check for --update and --all options ?
910
+ __git_complete_index_file "--others --modified --directory --no-empty-directory"
905
911
  }
906
912
 
907
913
  _git_archive ()
908
914
  {
909
- case "$cur" in
910
- --format=*)
911
- __gitcomp "$(git archive --list)" "" "${cur##--format=}"
912
- return
913
- ;;
914
- --remote=*)
915
- __gitcomp_nl "$(__git_remotes)" "" "${cur##--remote=}"
916
- return
917
- ;;
918
- --*)
919
- __gitcomp "
920
- --format= --list --verbose
921
- --prefix= --remote= --exec=
922
- "
923
- return
924
- ;;
925
- esac
926
- __git_complete_file
915
+ case "$cur" in
916
+ --format=*)
917
+ __gitcomp "$(git archive --list)" "" "${cur##--format=}"
918
+ return
919
+ ;;
920
+ --remote=*)
921
+ __gitcomp_nl "$(__git_remotes)" "" "${cur##--remote=}"
922
+ return
923
+ ;;
924
+ --*)
925
+ __gitcomp "
926
+ --format= --list --verbose
927
+ --prefix= --remote= --exec=
928
+ "
929
+ return
930
+ ;;
931
+ esac
932
+ __git_complete_file
927
933
  }
928
934
 
929
935
  _git_bisect ()
930
936
  {
931
- __git_has_doubledash && return
937
+ __git_has_doubledash && return
932
938
 
933
- local subcommands="start bad good skip reset visualize replay log run"
934
- local subcommand="$(__git_find_on_cmdline "$subcommands")"
935
- if [ -z "$subcommand" ]; then
936
- if [ -f "$(__gitdir)"/BISECT_START ]; then
937
- __gitcomp "$subcommands"
938
- else
939
- __gitcomp "replay start"
940
- fi
941
- return
942
- fi
939
+ local subcommands="start bad good skip reset visualize replay log run"
940
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
941
+ if [ -z "$subcommand" ]; then
942
+ if [ -f "$(__gitdir)"/BISECT_START ]; then
943
+ __gitcomp "$subcommands"
944
+ else
945
+ __gitcomp "replay start"
946
+ fi
947
+ return
948
+ fi
943
949
 
944
- case "$subcommand" in
945
- bad|good|reset|skip|start)
946
- __gitcomp_nl "$(__git_refs)"
947
- ;;
948
- *)
949
- ;;
950
- esac
950
+ case "$subcommand" in
951
+ bad|good|reset|skip|start)
952
+ __gitcomp_nl "$(__git_refs)"
953
+ ;;
954
+ *)
955
+ ;;
956
+ esac
951
957
  }
952
958
 
953
959
  _git_branch ()
954
960
  {
955
- local i c=1 only_local_ref="n" has_r="n"
956
-
957
- while [ $c -lt $cword ]; do
958
- i="${words[c]}"
959
- case "$i" in
960
- -d|-m) only_local_ref="y" ;;
961
- -r) has_r="y" ;;
962
- esac
963
- ((c++))
964
- done
965
-
966
- case "$cur" in
967
- --set-upstream-to=*)
968
- __gitcomp "$(__git_refs)" "" "${cur##--set-upstream-to=}"
969
- ;;
970
- --*)
971
- __gitcomp "
972
- --color --no-color --verbose --abbrev= --no-abbrev
973
- --track --no-track --contains --merged --no-merged
974
- --set-upstream-to= --edit-description --list
975
- --unset-upstream
976
- "
977
- ;;
978
- *)
979
- if [ $only_local_ref = "y" -a $has_r = "n" ]; then
980
- __gitcomp_nl "$(__git_heads)"
981
- else
982
- __gitcomp_nl "$(__git_refs)"
983
- fi
984
- ;;
985
- esac
961
+ local i c=1 only_local_ref="n" has_r="n"
962
+
963
+ while [ $c -lt $cword ]; do
964
+ i="${words[c]}"
965
+ case "$i" in
966
+ -d|-m) only_local_ref="y" ;;
967
+ -r) has_r="y" ;;
968
+ esac
969
+ ((c++))
970
+ done
971
+
972
+ case "$cur" in
973
+ --set-upstream-to=*)
974
+ __gitcomp_nl "$(__git_refs)" "" "${cur##--set-upstream-to=}"
975
+ ;;
976
+ --*)
977
+ __gitcomp "
978
+ --color --no-color --verbose --abbrev= --no-abbrev
979
+ --track --no-track --contains --merged --no-merged
980
+ --set-upstream-to= --edit-description --list
981
+ --unset-upstream
982
+ "
983
+ ;;
984
+ *)
985
+ if [ $only_local_ref = "y" -a $has_r = "n" ]; then
986
+ __gitcomp_nl "$(__git_heads)"
987
+ else
988
+ __gitcomp_nl "$(__git_refs)"
989
+ fi
990
+ ;;
991
+ esac
986
992
  }
987
993
 
988
994
  _git_bundle ()
989
995
  {
990
- local cmd="${words[2]}"
991
- case "$cword" in
992
- 2)
993
- __gitcomp "create list-heads verify unbundle"
994
- ;;
995
- 3)
996
- # looking for a file
997
- ;;
998
- *)
999
- case "$cmd" in
1000
- create)
1001
- __git_complete_revlist
1002
- ;;
1003
- esac
1004
- ;;
1005
- esac
996
+ local cmd="${words[2]}"
997
+ case "$cword" in
998
+ 2)
999
+ __gitcomp "create list-heads verify unbundle"
1000
+ ;;
1001
+ 3)
1002
+ # looking for a file
1003
+ ;;
1004
+ *)
1005
+ case "$cmd" in
1006
+ create)
1007
+ __git_complete_revlist
1008
+ ;;
1009
+ esac
1010
+ ;;
1011
+ esac
1006
1012
  }
1007
1013
 
1008
1014
  _git_checkout ()
1009
1015
  {
1010
- __git_has_doubledash && return
1011
-
1012
- case "$cur" in
1013
- --conflict=*)
1014
- __gitcomp "diff3 merge" "" "${cur##--conflict=}"
1015
- ;;
1016
- --*)
1017
- __gitcomp "
1018
- --quiet --ours --theirs --track --no-track --merge
1019
- --conflict= --orphan --patch
1020
- "
1021
- ;;
1022
- *)
1023
- # check if --track, --no-track, or --no-guess was specified
1024
- # if so, disable DWIM mode
1025
- local flags="--track --no-track --no-guess" track=1
1026
- if [ -n "$(__git_find_on_cmdline "$flags")" ]; then
1027
- track=''
1028
- fi
1029
- __gitcomp_nl "$(__git_refs '' $track)"
1030
- ;;
1031
- esac
1016
+ __git_has_doubledash && return
1017
+
1018
+ case "$cur" in
1019
+ --conflict=*)
1020
+ __gitcomp "diff3 merge" "" "${cur##--conflict=}"
1021
+ ;;
1022
+ --*)
1023
+ __gitcomp "
1024
+ --quiet --ours --theirs --track --no-track --merge
1025
+ --conflict= --orphan --patch
1026
+ "
1027
+ ;;
1028
+ *)
1029
+ # check if --track, --no-track, or --no-guess was specified
1030
+ # if so, disable DWIM mode
1031
+ local flags="--track --no-track --no-guess" track=1
1032
+ if [ -n "$(__git_find_on_cmdline "$flags")" ]; then
1033
+ track=''
1034
+ fi
1035
+ __gitcomp_nl "$(__git_refs '' $track)"
1036
+ ;;
1037
+ esac
1032
1038
  }
1033
1039
 
1034
1040
  _git_cherry ()
1035
1041
  {
1036
- __gitcomp "$(__git_refs)"
1042
+ __gitcomp_nl "$(__git_refs)"
1037
1043
  }
1038
1044
 
1039
1045
  _git_cherry_pick ()
1040
1046
  {
1041
- local dir="$(__gitdir)"
1042
- if [ -f "$dir"/CHERRY_PICK_HEAD ]; then
1043
- __gitcomp "--continue --quit --abort"
1044
- return
1045
- fi
1046
- case "$cur" in
1047
- --*)
1048
- __gitcomp "--edit --no-commit --signoff --strategy= --mainline"
1049
- ;;
1050
- *)
1051
- __gitcomp_nl "$(__git_refs)"
1052
- ;;
1053
- esac
1047
+ local dir="$(__gitdir)"
1048
+ if [ -f "$dir"/CHERRY_PICK_HEAD ]; then
1049
+ __gitcomp "--continue --quit --abort"
1050
+ return
1051
+ fi
1052
+ case "$cur" in
1053
+ --*)
1054
+ __gitcomp "--edit --no-commit --signoff --strategy= --mainline"
1055
+ ;;
1056
+ *)
1057
+ __gitcomp_nl "$(__git_refs)"
1058
+ ;;
1059
+ esac
1054
1060
  }
1055
1061
 
1056
1062
  _git_clean ()
1057
1063
  {
1058
- case "$cur" in
1059
- --*)
1060
- __gitcomp "--dry-run --quiet"
1061
- return
1062
- ;;
1063
- esac
1064
+ case "$cur" in
1065
+ --*)
1066
+ __gitcomp "--dry-run --quiet"
1067
+ return
1068
+ ;;
1069
+ esac
1064
1070
 
1065
- # XXX should we check for -x option ?
1066
- __git_complete_index_file "--others"
1071
+ # XXX should we check for -x option ?
1072
+ __git_complete_index_file "--others --directory"
1067
1073
  }
1068
1074
 
1069
1075
  _git_clone ()
1070
1076
  {
1071
- case "$cur" in
1072
- --*)
1073
- __gitcomp "
1074
- --local
1075
- --no-hardlinks
1076
- --shared
1077
- --reference
1078
- --quiet
1079
- --no-checkout
1080
- --bare
1081
- --mirror
1082
- --origin
1083
- --upload-pack
1084
- --template=
1085
- --depth
1086
- --single-branch
1087
- --branch
1088
- "
1089
- return
1090
- ;;
1091
- esac
1077
+ case "$cur" in
1078
+ --*)
1079
+ __gitcomp "
1080
+ --local
1081
+ --no-hardlinks
1082
+ --shared
1083
+ --reference
1084
+ --quiet
1085
+ --no-checkout
1086
+ --bare
1087
+ --mirror
1088
+ --origin
1089
+ --upload-pack
1090
+ --template=
1091
+ --depth
1092
+ --single-branch
1093
+ --branch
1094
+ "
1095
+ return
1096
+ ;;
1097
+ esac
1092
1098
  }
1093
1099
 
1094
1100
  _git_commit ()
1095
1101
  {
1096
- case "$prev" in
1097
- -c|-C)
1098
- __gitcomp_nl "$(__git_refs)" "" "${cur}"
1099
- return
1100
- ;;
1101
- esac
1102
-
1103
- case "$cur" in
1104
- --cleanup=*)
1105
- __gitcomp "default strip verbatim whitespace
1106
- " "" "${cur##--cleanup=}"
1107
- return
1108
- ;;
1109
- --reuse-message=*|--reedit-message=*|\
1110
- --fixup=*|--squash=*)
1111
- __gitcomp_nl "$(__git_refs)" "" "${cur#*=}"
1112
- return
1113
- ;;
1114
- --untracked-files=*)
1115
- __gitcomp "all no normal" "" "${cur##--untracked-files=}"
1116
- return
1117
- ;;
1118
- --*)
1119
- __gitcomp "
1120
- --all --author= --signoff --verify --no-verify
1121
- --edit --no-edit
1122
- --amend --include --only --interactive
1123
- --dry-run --reuse-message= --reedit-message=
1124
- --reset-author --file= --message= --template=
1125
- --cleanup= --untracked-files --untracked-files=
1126
- --verbose --quiet --fixup= --squash=
1127
- "
1128
- return
1129
- esac
1130
-
1131
- if git rev-parse --verify --quiet HEAD >/dev/null; then
1132
- __git_complete_index_file "--committable"
1133
- else
1134
- # This is the first commit
1135
- __git_complete_index_file "--cached"
1136
- fi
1102
+ case "$prev" in
1103
+ -c|-C)
1104
+ __gitcomp_nl "$(__git_refs)" "" "${cur}"
1105
+ return
1106
+ ;;
1107
+ esac
1108
+
1109
+ case "$cur" in
1110
+ --cleanup=*)
1111
+ __gitcomp "default scissors strip verbatim whitespace
1112
+ " "" "${cur##--cleanup=}"
1113
+ return
1114
+ ;;
1115
+ --reuse-message=*|--reedit-message=*|\
1116
+ --fixup=*|--squash=*)
1117
+ __gitcomp_nl "$(__git_refs)" "" "${cur#*=}"
1118
+ return
1119
+ ;;
1120
+ --untracked-files=*)
1121
+ __gitcomp "all no normal" "" "${cur##--untracked-files=}"
1122
+ return
1123
+ ;;
1124
+ --*)
1125
+ __gitcomp "
1126
+ --all --author= --signoff --verify --no-verify
1127
+ --edit --no-edit
1128
+ --amend --include --only --interactive
1129
+ --dry-run --reuse-message= --reedit-message=
1130
+ --reset-author --file= --message= --template=
1131
+ --cleanup= --untracked-files --untracked-files=
1132
+ --verbose --quiet --fixup= --squash=
1133
+ "
1134
+ return
1135
+ esac
1136
+
1137
+ if git rev-parse --verify --quiet HEAD >/dev/null; then
1138
+ __git_complete_index_file "--committable"
1139
+ else
1140
+ # This is the first commit
1141
+ __git_complete_index_file "--cached"
1142
+ fi
1137
1143
  }
1138
1144
 
1139
1145
  _git_describe ()
1140
1146
  {
1141
- case "$cur" in
1142
- --*)
1143
- __gitcomp "
1144
- --all --tags --contains --abbrev= --candidates=
1145
- --exact-match --debug --long --match --always
1146
- "
1147
- return
1148
- esac
1149
- __gitcomp_nl "$(__git_refs)"
1147
+ case "$cur" in
1148
+ --*)
1149
+ __gitcomp "
1150
+ --all --tags --contains --abbrev= --candidates=
1151
+ --exact-match --debug --long --match --always
1152
+ "
1153
+ return
1154
+ esac
1155
+ __gitcomp_nl "$(__git_refs)"
1150
1156
  }
1151
1157
 
1152
1158
  __git_diff_algorithms="myers minimal patience histogram"
1153
1159
 
1154
1160
  __git_diff_common_options="--stat --numstat --shortstat --summary
1155
- --patch-with-stat --name-only --name-status --color
1156
- --no-color --color-words --no-renames --check
1157
- --full-index --binary --abbrev --diff-filter=
1158
- --find-copies-harder
1159
- --text --ignore-space-at-eol --ignore-space-change
1160
- --ignore-all-space --exit-code --quiet --ext-diff
1161
- --no-ext-diff
1162
- --no-prefix --src-prefix= --dst-prefix=
1163
- --inter-hunk-context=
1164
- --patience --histogram --minimal
1165
- --raw --word-diff
1166
- --dirstat --dirstat= --dirstat-by-file
1167
- --dirstat-by-file= --cumulative
1168
- --diff-algorithm=
1161
+ --patch-with-stat --name-only --name-status --color
1162
+ --no-color --color-words --no-renames --check
1163
+ --full-index --binary --abbrev --diff-filter=
1164
+ --find-copies-harder
1165
+ --text --ignore-space-at-eol --ignore-space-change
1166
+ --ignore-all-space --ignore-blank-lines --exit-code
1167
+ --quiet --ext-diff --no-ext-diff
1168
+ --no-prefix --src-prefix= --dst-prefix=
1169
+ --inter-hunk-context=
1170
+ --patience --histogram --minimal
1171
+ --raw --word-diff
1172
+ --dirstat --dirstat= --dirstat-by-file
1173
+ --dirstat-by-file= --cumulative
1174
+ --diff-algorithm=
1169
1175
  "
1170
1176
 
1171
1177
  _git_diff ()
1172
1178
  {
1173
- __git_has_doubledash && return
1174
-
1175
- case "$cur" in
1176
- --diff-algorithm=*)
1177
- __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
1178
- return
1179
- ;;
1180
- --*)
1181
- __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex
1182
- --base --ours --theirs --no-index
1183
- $__git_diff_common_options
1184
- "
1185
- return
1186
- ;;
1187
- esac
1188
- __git_complete_revlist_file
1189
- }
1190
-
1191
- __git_mergetools_common="diffuse ecmerge emerge kdiff3 meld opendiff
1192
- tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3 codecompare
1179
+ __git_has_doubledash && return
1180
+
1181
+ case "$cur" in
1182
+ --diff-algorithm=*)
1183
+ __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
1184
+ return
1185
+ ;;
1186
+ --*)
1187
+ __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex
1188
+ --base --ours --theirs --no-index
1189
+ $__git_diff_common_options
1190
+ "
1191
+ return
1192
+ ;;
1193
+ esac
1194
+ __git_complete_revlist_file
1195
+ }
1196
+
1197
+ __git_mergetools_common="diffuse diffmerge ecmerge emerge kdiff3 meld opendiff
1198
+ tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc codecompare
1193
1199
  "
1194
1200
 
1195
1201
  _git_difftool ()
1196
1202
  {
1197
- __git_has_doubledash && return
1198
-
1199
- case "$cur" in
1200
- --tool=*)
1201
- __gitcomp "$__git_mergetools_common kompare" "" "${cur##--tool=}"
1202
- return
1203
- ;;
1204
- --*)
1205
- __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex
1206
- --base --ours --theirs
1207
- --no-renames --diff-filter= --find-copies-harder
1208
- --relative --ignore-submodules
1209
- --tool="
1210
- return
1211
- ;;
1212
- esac
1213
- __git_complete_revlist_file
1203
+ __git_has_doubledash && return
1204
+
1205
+ case "$cur" in
1206
+ --tool=*)
1207
+ __gitcomp "$__git_mergetools_common kompare" "" "${cur##--tool=}"
1208
+ return
1209
+ ;;
1210
+ --*)
1211
+ __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex
1212
+ --base --ours --theirs
1213
+ --no-renames --diff-filter= --find-copies-harder
1214
+ --relative --ignore-submodules
1215
+ --tool="
1216
+ return
1217
+ ;;
1218
+ esac
1219
+ __git_complete_revlist_file
1214
1220
  }
1215
1221
 
1222
+ __git_fetch_recurse_submodules="yes on-demand no"
1223
+
1216
1224
  __git_fetch_options="
1217
- --quiet --verbose --append --upload-pack --force --keep --depth=
1218
- --tags --no-tags --all --prune --dry-run
1225
+ --quiet --verbose --append --upload-pack --force --keep --depth=
1226
+ --tags --no-tags --all --prune --dry-run --recurse-submodules=
1219
1227
  "
1220
1228
 
1221
1229
  _git_fetch ()
1222
1230
  {
1223
- case "$cur" in
1224
- --*)
1225
- __gitcomp "$__git_fetch_options"
1226
- return
1227
- ;;
1228
- esac
1229
- __git_complete_remote_or_refspec
1231
+ case "$cur" in
1232
+ --recurse-submodules=*)
1233
+ __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"
1234
+ return
1235
+ ;;
1236
+ --*)
1237
+ __gitcomp "$__git_fetch_options"
1238
+ return
1239
+ ;;
1240
+ esac
1241
+ __git_complete_remote_or_refspec
1230
1242
  }
1231
1243
 
1232
1244
  __git_format_patch_options="
1233
- --stdout --attach --no-attach --thread --thread= --no-thread
1234
- --numbered --start-number --numbered-files --keep-subject --signoff
1235
- --signature --no-signature --in-reply-to= --cc= --full-index --binary
1236
- --not --all --cover-letter --no-prefix --src-prefix= --dst-prefix=
1237
- --inline --suffix= --ignore-if-in-upstream --subject-prefix=
1238
- --output-directory --reroll-count --to= --quiet --notes
1245
+ --stdout --attach --no-attach --thread --thread= --no-thread
1246
+ --numbered --start-number --numbered-files --keep-subject --signoff
1247
+ --signature --no-signature --in-reply-to= --cc= --full-index --binary
1248
+ --not --all --cover-letter --no-prefix --src-prefix= --dst-prefix=
1249
+ --inline --suffix= --ignore-if-in-upstream --subject-prefix=
1250
+ --output-directory --reroll-count --to= --quiet --notes
1239
1251
  "
1240
1252
 
1241
1253
  _git_format_patch ()
1242
1254
  {
1243
- case "$cur" in
1244
- --thread=*)
1245
- __gitcomp "
1246
- deep shallow
1247
- " "" "${cur##--thread=}"
1248
- return
1249
- ;;
1250
- --*)
1251
- __gitcomp "$__git_format_patch_options"
1252
- return
1253
- ;;
1254
- esac
1255
- __git_complete_revlist
1255
+ case "$cur" in
1256
+ --thread=*)
1257
+ __gitcomp "
1258
+ deep shallow
1259
+ " "" "${cur##--thread=}"
1260
+ return
1261
+ ;;
1262
+ --*)
1263
+ __gitcomp "$__git_format_patch_options"
1264
+ return
1265
+ ;;
1266
+ esac
1267
+ __git_complete_revlist
1256
1268
  }
1257
1269
 
1258
1270
  _git_fsck ()
1259
1271
  {
1260
- case "$cur" in
1261
- --*)
1262
- __gitcomp "
1263
- --tags --root --unreachable --cache --no-reflogs --full
1264
- --strict --verbose --lost-found
1265
- "
1266
- return
1267
- ;;
1268
- esac
1272
+ case "$cur" in
1273
+ --*)
1274
+ __gitcomp "
1275
+ --tags --root --unreachable --cache --no-reflogs --full
1276
+ --strict --verbose --lost-found
1277
+ "
1278
+ return
1279
+ ;;
1280
+ esac
1269
1281
  }
1270
1282
 
1271
1283
  _git_gc ()
1272
1284
  {
1273
- case "$cur" in
1274
- --*)
1275
- __gitcomp "--prune --aggressive"
1276
- return
1277
- ;;
1278
- esac
1285
+ case "$cur" in
1286
+ --*)
1287
+ __gitcomp "--prune --aggressive"
1288
+ return
1289
+ ;;
1290
+ esac
1279
1291
  }
1280
1292
 
1281
1293
  _git_gitk ()
1282
1294
  {
1283
- _gitk
1295
+ _gitk
1284
1296
  }
1285
1297
 
1286
1298
  __git_match_ctag() {
1287
- awk "/^${1////\\/}/ { print \$1 }" "$2"
1299
+ awk "/^${1//\//\\/}/ { print \$1 }" "$2"
1288
1300
  }
1289
1301
 
1290
1302
  _git_grep ()
1291
1303
  {
1292
- __git_has_doubledash && return
1293
-
1294
- case "$cur" in
1295
- --*)
1296
- __gitcomp "
1297
- --cached
1298
- --text --ignore-case --word-regexp --invert-match
1299
- --full-name --line-number
1300
- --extended-regexp --basic-regexp --fixed-strings
1301
- --perl-regexp
1302
- --files-with-matches --name-only
1303
- --files-without-match
1304
- --max-depth
1305
- --count
1306
- --and --or --not --all-match
1307
- "
1308
- return
1309
- ;;
1310
- esac
1311
-
1312
- case "$cword,$prev" in
1313
- 2,*|*,-*)
1314
- if test -r tags; then
1315
- __gitcomp_nl "$(__git_match_ctag "$cur" tags)"
1316
- return
1317
- fi
1318
- ;;
1319
- esac
1320
-
1321
- __gitcomp_nl "$(__git_refs)"
1304
+ __git_has_doubledash && return
1305
+
1306
+ case "$cur" in
1307
+ --*)
1308
+ __gitcomp "
1309
+ --cached
1310
+ --text --ignore-case --word-regexp --invert-match
1311
+ --full-name --line-number
1312
+ --extended-regexp --basic-regexp --fixed-strings
1313
+ --perl-regexp
1314
+ --files-with-matches --name-only
1315
+ --files-without-match
1316
+ --max-depth
1317
+ --count
1318
+ --and --or --not --all-match
1319
+ "
1320
+ return
1321
+ ;;
1322
+ esac
1323
+
1324
+ case "$cword,$prev" in
1325
+ 2,*|*,-*)
1326
+ if test -r tags; then
1327
+ __gitcomp_nl "$(__git_match_ctag "$cur" tags)"
1328
+ return
1329
+ fi
1330
+ ;;
1331
+ esac
1332
+
1333
+ __gitcomp_nl "$(__git_refs)"
1322
1334
  }
1323
1335
 
1324
1336
  _git_help ()
1325
1337
  {
1326
- case "$cur" in
1327
- --*)
1328
- __gitcomp "--all --info --man --web"
1329
- return
1330
- ;;
1331
- esac
1332
- __git_compute_all_commands
1333
- __gitcomp "$__git_all_commands $(__git_aliases)
1334
- attributes cli core-tutorial cvs-migration
1335
- diffcore gitk glossary hooks ignore modules
1336
- namespaces repository-layout tutorial tutorial-2
1337
- workflows
1338
- "
1338
+ case "$cur" in
1339
+ --*)
1340
+ __gitcomp "--all --info --man --web"
1341
+ return
1342
+ ;;
1343
+ esac
1344
+ __git_compute_all_commands
1345
+ __gitcomp "$__git_all_commands $(__git_aliases)
1346
+ attributes cli core-tutorial cvs-migration
1347
+ diffcore gitk glossary hooks ignore modules
1348
+ namespaces repository-layout tutorial tutorial-2
1349
+ workflows
1350
+ "
1339
1351
  }
1340
1352
 
1341
1353
  _git_init ()
1342
1354
  {
1343
- case "$cur" in
1344
- --shared=*)
1345
- __gitcomp "
1346
- false true umask group all world everybody
1347
- " "" "${cur##--shared=}"
1348
- return
1349
- ;;
1350
- --*)
1351
- __gitcomp "--quiet --bare --template= --shared --shared="
1352
- return
1353
- ;;
1354
- esac
1355
+ case "$cur" in
1356
+ --shared=*)
1357
+ __gitcomp "
1358
+ false true umask group all world everybody
1359
+ " "" "${cur##--shared=}"
1360
+ return
1361
+ ;;
1362
+ --*)
1363
+ __gitcomp "--quiet --bare --template= --shared --shared="
1364
+ return
1365
+ ;;
1366
+ esac
1355
1367
  }
1356
1368
 
1357
1369
  _git_ls_files ()
1358
1370
  {
1359
- case "$cur" in
1360
- --*)
1361
- __gitcomp "--cached --deleted --modified --others --ignored
1362
- --stage --directory --no-empty-directory --unmerged
1363
- --killed --exclude= --exclude-from=
1364
- --exclude-per-directory= --exclude-standard
1365
- --error-unmatch --with-tree= --full-name
1366
- --abbrev --ignored --exclude-per-directory
1367
- "
1368
- return
1369
- ;;
1370
- esac
1371
+ case "$cur" in
1372
+ --*)
1373
+ __gitcomp "--cached --deleted --modified --others --ignored
1374
+ --stage --directory --no-empty-directory --unmerged
1375
+ --killed --exclude= --exclude-from=
1376
+ --exclude-per-directory= --exclude-standard
1377
+ --error-unmatch --with-tree= --full-name
1378
+ --abbrev --ignored --exclude-per-directory
1379
+ "
1380
+ return
1381
+ ;;
1382
+ esac
1371
1383
 
1372
- # XXX ignore options like --modified and always suggest all cached
1373
- # files.
1374
- __git_complete_index_file "--cached"
1384
+ # XXX ignore options like --modified and always suggest all cached
1385
+ # files.
1386
+ __git_complete_index_file "--cached"
1375
1387
  }
1376
1388
 
1377
1389
  _git_ls_remote ()
1378
1390
  {
1379
- __gitcomp_nl "$(__git_remotes)"
1391
+ __gitcomp_nl "$(__git_remotes)"
1380
1392
  }
1381
1393
 
1382
1394
  _git_ls_tree ()
1383
1395
  {
1384
- __git_complete_file
1396
+ __git_complete_file
1385
1397
  }
1386
1398
 
1387
1399
  # Options that go well for log, shortlog and gitk
1388
1400
  __git_log_common_options="
1389
- --not --all
1390
- --branches --tags --remotes
1391
- --first-parent --merges --no-merges
1392
- --max-count=
1393
- --max-age= --since= --after=
1394
- --min-age= --until= --before=
1395
- --min-parents= --max-parents=
1396
- --no-min-parents --no-max-parents
1401
+ --not --all
1402
+ --branches --tags --remotes
1403
+ --first-parent --merges --no-merges
1404
+ --max-count=
1405
+ --max-age= --since= --after=
1406
+ --min-age= --until= --before=
1407
+ --min-parents= --max-parents=
1408
+ --no-min-parents --no-max-parents
1397
1409
  "
1398
1410
  # Options that go well for log and gitk (not shortlog)
1399
1411
  __git_log_gitk_options="
1400
- --dense --sparse --full-history
1401
- --simplify-merges --simplify-by-decoration
1402
- --left-right --notes --no-notes
1412
+ --dense --sparse --full-history
1413
+ --simplify-merges --simplify-by-decoration
1414
+ --left-right --notes --no-notes
1403
1415
  "
1404
1416
  # Options that go well for log and shortlog (not gitk)
1405
1417
  __git_log_shortlog_options="
1406
- --author= --committer= --grep=
1407
- --all-match
1418
+ --author= --committer= --grep=
1419
+ --all-match --invert-grep
1408
1420
  "
1409
1421
 
1410
1422
  __git_log_pretty_formats="oneline short medium full fuller email raw format:"
@@ -1412,235 +1424,287 @@ __git_log_date_formats="relative iso8601 rfc2822 short local default raw"
1412
1424
 
1413
1425
  _git_log ()
1414
1426
  {
1415
- __git_has_doubledash && return
1416
-
1417
- local g="$(git rev-parse --git-dir 2>/dev/null)"
1418
- local merge=""
1419
- if [ -f "$g/MERGE_HEAD" ]; then
1420
- merge="--merge"
1421
- fi
1422
- case "$cur" in
1423
- --pretty=*|--format=*)
1424
- __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
1425
- " "" "${cur#*=}"
1426
- return
1427
- ;;
1428
- --date=*)
1429
- __gitcomp "$__git_log_date_formats" "" "${cur##--date=}"
1430
- return
1431
- ;;
1432
- --decorate=*)
1433
- __gitcomp "long short" "" "${cur##--decorate=}"
1434
- return
1435
- ;;
1436
- --*)
1437
- __gitcomp "
1438
- $__git_log_common_options
1439
- $__git_log_shortlog_options
1440
- $__git_log_gitk_options
1441
- --root --topo-order --date-order --reverse
1442
- --follow --full-diff
1443
- --abbrev-commit --abbrev=
1444
- --relative-date --date=
1445
- --pretty= --format= --oneline
1446
- --cherry-pick
1447
- --graph
1448
- --decorate --decorate=
1449
- --walk-reflogs
1450
- --parents --children
1451
- $merge
1452
- $__git_diff_common_options
1453
- --pickaxe-all --pickaxe-regex
1454
- "
1455
- return
1456
- ;;
1457
- esac
1458
- __git_complete_revlist
1459
- }
1460
-
1427
+ __git_has_doubledash && return
1428
+
1429
+ local g="$(git rev-parse --git-dir 2>/dev/null)"
1430
+ local merge=""
1431
+ if [ -f "$g/MERGE_HEAD" ]; then
1432
+ merge="--merge"
1433
+ fi
1434
+ case "$cur" in
1435
+ --pretty=*|--format=*)
1436
+ __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
1437
+ " "" "${cur#*=}"
1438
+ return
1439
+ ;;
1440
+ --date=*)
1441
+ __gitcomp "$__git_log_date_formats" "" "${cur##--date=}"
1442
+ return
1443
+ ;;
1444
+ --decorate=*)
1445
+ __gitcomp "full short no" "" "${cur##--decorate=}"
1446
+ return
1447
+ ;;
1448
+ --*)
1449
+ __gitcomp "
1450
+ $__git_log_common_options
1451
+ $__git_log_shortlog_options
1452
+ $__git_log_gitk_options
1453
+ --root --topo-order --date-order --reverse
1454
+ --follow --full-diff
1455
+ --abbrev-commit --abbrev=
1456
+ --relative-date --date=
1457
+ --pretty= --format= --oneline
1458
+ --show-signature
1459
+ --cherry-pick
1460
+ --graph
1461
+ --decorate --decorate=
1462
+ --walk-reflogs
1463
+ --parents --children
1464
+ $merge
1465
+ $__git_diff_common_options
1466
+ --pickaxe-all --pickaxe-regex
1467
+ "
1468
+ return
1469
+ ;;
1470
+ esac
1471
+ __git_complete_revlist
1472
+ }
1473
+
1474
+ # Common merge options shared by git-merge(1) and git-pull(1).
1461
1475
  __git_merge_options="
1462
- --no-commit --no-stat --log --no-log --squash --strategy
1463
- --commit --stat --no-squash --ff --no-ff --ff-only --edit --no-edit
1476
+ --no-commit --no-stat --log --no-log --squash --strategy
1477
+ --commit --stat --no-squash --ff --no-ff --ff-only --edit --no-edit
1478
+ --verify-signatures --no-verify-signatures --gpg-sign
1479
+ --quiet --verbose --progress --no-progress
1464
1480
  "
1465
1481
 
1466
1482
  _git_merge ()
1467
1483
  {
1468
- __git_complete_strategy && return
1484
+ __git_complete_strategy && return
1469
1485
 
1470
- case "$cur" in
1471
- --*)
1472
- __gitcomp "$__git_merge_options"
1473
- return
1474
- esac
1475
- __gitcomp_nl "$(__git_refs)"
1486
+ case "$cur" in
1487
+ --*)
1488
+ __gitcomp "$__git_merge_options
1489
+ --rerere-autoupdate --no-rerere-autoupdate --abort"
1490
+ return
1491
+ esac
1492
+ __gitcomp_nl "$(__git_refs)"
1476
1493
  }
1477
1494
 
1478
1495
  _git_mergetool ()
1479
1496
  {
1480
- case "$cur" in
1481
- --tool=*)
1482
- __gitcomp "$__git_mergetools_common tortoisemerge" "" "${cur##--tool=}"
1483
- return
1484
- ;;
1485
- --*)
1486
- __gitcomp "--tool="
1487
- return
1488
- ;;
1489
- esac
1497
+ case "$cur" in
1498
+ --tool=*)
1499
+ __gitcomp "$__git_mergetools_common tortoisemerge" "" "${cur##--tool=}"
1500
+ return
1501
+ ;;
1502
+ --*)
1503
+ __gitcomp "--tool="
1504
+ return
1505
+ ;;
1506
+ esac
1490
1507
  }
1491
1508
 
1492
1509
  _git_merge_base ()
1493
1510
  {
1494
- __gitcomp_nl "$(__git_refs)"
1511
+ case "$cur" in
1512
+ --*)
1513
+ __gitcomp "--octopus --independent --is-ancestor --fork-point"
1514
+ return
1515
+ ;;
1516
+ esac
1517
+ __gitcomp_nl "$(__git_refs)"
1495
1518
  }
1496
1519
 
1497
1520
  _git_mv ()
1498
1521
  {
1499
- case "$cur" in
1500
- --*)
1501
- __gitcomp "--dry-run"
1502
- return
1503
- ;;
1504
- esac
1522
+ case "$cur" in
1523
+ --*)
1524
+ __gitcomp "--dry-run"
1525
+ return
1526
+ ;;
1527
+ esac
1505
1528
 
1506
- if [ $(__git_count_arguments "mv") -gt 0 ]; then
1507
- # We need to show both cached and untracked files (including
1508
- # empty directories) since this may not be the last argument.
1509
- __git_complete_index_file "--cached --others --directory"
1510
- else
1511
- __git_complete_index_file "--cached"
1512
- fi
1529
+ if [ $(__git_count_arguments "mv") -gt 0 ]; then
1530
+ # We need to show both cached and untracked files (including
1531
+ # empty directories) since this may not be the last argument.
1532
+ __git_complete_index_file "--cached --others --directory"
1533
+ else
1534
+ __git_complete_index_file "--cached"
1535
+ fi
1513
1536
  }
1514
1537
 
1515
1538
  _git_name_rev ()
1516
1539
  {
1517
- __gitcomp "--tags --all --stdin"
1540
+ __gitcomp "--tags --all --stdin"
1518
1541
  }
1519
1542
 
1520
1543
  _git_notes ()
1521
1544
  {
1522
- local subcommands='add append copy edit list prune remove show'
1523
- local subcommand="$(__git_find_on_cmdline "$subcommands")"
1524
-
1525
- case "$subcommand,$cur" in
1526
- ,--*)
1527
- __gitcomp '--ref'
1528
- ;;
1529
- ,*)
1530
- case "$prev" in
1531
- --ref)
1532
- __gitcomp_nl "$(__git_refs)"
1533
- ;;
1534
- *)
1535
- __gitcomp "$subcommands --ref"
1536
- ;;
1537
- esac
1538
- ;;
1539
- add,--reuse-message=*|append,--reuse-message=*|\
1540
- add,--reedit-message=*|append,--reedit-message=*)
1541
- __gitcomp_nl "$(__git_refs)" "" "${cur#*=}"
1542
- ;;
1543
- add,--*|append,--*)
1544
- __gitcomp '--file= --message= --reedit-message=
1545
- --reuse-message='
1546
- ;;
1547
- copy,--*)
1548
- __gitcomp '--stdin'
1549
- ;;
1550
- prune,--*)
1551
- __gitcomp '--dry-run --verbose'
1552
- ;;
1553
- prune,*)
1554
- ;;
1555
- *)
1556
- case "$prev" in
1557
- -m|-F)
1558
- ;;
1559
- *)
1560
- __gitcomp_nl "$(__git_refs)"
1561
- ;;
1562
- esac
1563
- ;;
1564
- esac
1545
+ local subcommands='add append copy edit list prune remove show'
1546
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
1547
+
1548
+ case "$subcommand,$cur" in
1549
+ ,--*)
1550
+ __gitcomp '--ref'
1551
+ ;;
1552
+ ,*)
1553
+ case "$prev" in
1554
+ --ref)
1555
+ __gitcomp_nl "$(__git_refs)"
1556
+ ;;
1557
+ *)
1558
+ __gitcomp "$subcommands --ref"
1559
+ ;;
1560
+ esac
1561
+ ;;
1562
+ add,--reuse-message=*|append,--reuse-message=*|\
1563
+ add,--reedit-message=*|append,--reedit-message=*)
1564
+ __gitcomp_nl "$(__git_refs)" "" "${cur#*=}"
1565
+ ;;
1566
+ add,--*|append,--*)
1567
+ __gitcomp '--file= --message= --reedit-message=
1568
+ --reuse-message='
1569
+ ;;
1570
+ copy,--*)
1571
+ __gitcomp '--stdin'
1572
+ ;;
1573
+ prune,--*)
1574
+ __gitcomp '--dry-run --verbose'
1575
+ ;;
1576
+ prune,*)
1577
+ ;;
1578
+ *)
1579
+ case "$prev" in
1580
+ -m|-F)
1581
+ ;;
1582
+ *)
1583
+ __gitcomp_nl "$(__git_refs)"
1584
+ ;;
1585
+ esac
1586
+ ;;
1587
+ esac
1565
1588
  }
1566
1589
 
1567
1590
  _git_pull ()
1568
1591
  {
1569
- __git_complete_strategy && return
1592
+ __git_complete_strategy && return
1593
+
1594
+ case "$cur" in
1595
+ --recurse-submodules=*)
1596
+ __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"
1597
+ return
1598
+ ;;
1599
+ --*)
1600
+ __gitcomp "
1601
+ --rebase --no-rebase
1602
+ $__git_merge_options
1603
+ $__git_fetch_options
1604
+ "
1605
+ return
1606
+ ;;
1607
+ esac
1608
+ __git_complete_remote_or_refspec
1609
+ }
1610
+
1611
+ __git_push_recurse_submodules="check on-demand"
1612
+
1613
+ __git_complete_force_with_lease ()
1614
+ {
1615
+ local cur_=$1
1570
1616
 
1571
- case "$cur" in
1572
- --*)
1573
- __gitcomp "
1574
- --rebase --no-rebase
1575
- $__git_merge_options
1576
- $__git_fetch_options
1577
- "
1578
- return
1579
- ;;
1580
- esac
1581
- __git_complete_remote_or_refspec
1617
+ case "$cur_" in
1618
+ --*=)
1619
+ ;;
1620
+ *:*)
1621
+ __gitcomp_nl "$(__git_refs)" "" "${cur_#*:}"
1622
+ ;;
1623
+ *)
1624
+ __gitcomp_nl "$(__git_refs)" "" "$cur_"
1625
+ ;;
1626
+ esac
1582
1627
  }
1583
1628
 
1584
1629
  _git_push ()
1585
1630
  {
1586
- case "$prev" in
1587
- --repo)
1588
- __gitcomp_nl "$(__git_remotes)"
1589
- return
1590
- esac
1591
- case "$cur" in
1592
- --repo=*)
1593
- __gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}"
1594
- return
1595
- ;;
1596
- --*)
1597
- __gitcomp "
1598
- --all --mirror --tags --dry-run --force --verbose
1599
- --receive-pack= --repo= --set-upstream
1600
- "
1601
- return
1602
- ;;
1603
- esac
1604
- __git_complete_remote_or_refspec
1631
+ case "$prev" in
1632
+ --repo)
1633
+ __gitcomp_nl "$(__git_remotes)"
1634
+ return
1635
+ ;;
1636
+ --recurse-submodules)
1637
+ __gitcomp "$__git_push_recurse_submodules"
1638
+ return
1639
+ ;;
1640
+ esac
1641
+ case "$cur" in
1642
+ --repo=*)
1643
+ __gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}"
1644
+ return
1645
+ ;;
1646
+ --recurse-submodules=*)
1647
+ __gitcomp "$__git_push_recurse_submodules" "" "${cur##--recurse-submodules=}"
1648
+ return
1649
+ ;;
1650
+ --force-with-lease=*)
1651
+ __git_complete_force_with_lease "${cur##--force-with-lease=}"
1652
+ return
1653
+ ;;
1654
+ --*)
1655
+ __gitcomp "
1656
+ --all --mirror --tags --dry-run --force --verbose
1657
+ --quiet --prune --delete --follow-tags
1658
+ --receive-pack= --repo= --set-upstream
1659
+ --force-with-lease --force-with-lease= --recurse-submodules=
1660
+ "
1661
+ return
1662
+ ;;
1663
+ esac
1664
+ __git_complete_remote_or_refspec
1605
1665
  }
1606
1666
 
1607
1667
  _git_rebase ()
1608
1668
  {
1609
- local dir="$(__gitdir)"
1610
- if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
1611
- __gitcomp "--continue --skip --abort"
1612
- return
1613
- fi
1614
- __git_complete_strategy && return
1615
- case "$cur" in
1616
- --whitespace=*)
1617
- __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
1618
- return
1619
- ;;
1620
- --*)
1621
- __gitcomp "
1622
- --onto --merge --strategy --interactive
1623
- --preserve-merges --stat --no-stat
1624
- --committer-date-is-author-date --ignore-date
1625
- --ignore-whitespace --whitespace=
1626
- --autosquash
1627
- "
1628
-
1629
- return
1630
- esac
1631
- __gitcomp_nl "$(__git_refs)"
1669
+ local dir="$(__gitdir)"
1670
+ if [ -f "$dir"/rebase-merge/interactive ]; then
1671
+ __gitcomp "--continue --skip --abort --edit-todo"
1672
+ return
1673
+ elif [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
1674
+ __gitcomp "--continue --skip --abort"
1675
+ return
1676
+ fi
1677
+ __git_complete_strategy && return
1678
+ case "$cur" in
1679
+ --whitespace=*)
1680
+ __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
1681
+ return
1682
+ ;;
1683
+ --*)
1684
+ __gitcomp "
1685
+ --onto --merge --strategy --interactive
1686
+ --preserve-merges --stat --no-stat
1687
+ --committer-date-is-author-date --ignore-date
1688
+ --ignore-whitespace --whitespace=
1689
+ --autosquash --fork-point --no-fork-point
1690
+ --autostash
1691
+ "
1692
+
1693
+ return
1694
+ esac
1695
+ __gitcomp_nl "$(__git_refs)"
1632
1696
  }
1633
1697
 
1634
1698
  _git_reflog ()
1635
1699
  {
1636
- local subcommands="show delete expire"
1637
- local subcommand="$(__git_find_on_cmdline "$subcommands")"
1700
+ local subcommands="show delete expire"
1701
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
1638
1702
 
1639
- if [ -z "$subcommand" ]; then
1640
- __gitcomp "$subcommands"
1641
- else
1642
- __gitcomp_nl "$(__git_refs)"
1643
- fi
1703
+ if [ -z "$subcommand" ]; then
1704
+ __gitcomp "$subcommands"
1705
+ else
1706
+ __gitcomp_nl "$(__git_refs)"
1707
+ fi
1644
1708
  }
1645
1709
 
1646
1710
  __git_send_email_confirm_options="always never auto cc compose"
@@ -1648,984 +1712,1006 @@ __git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all"
1648
1712
 
1649
1713
  _git_send_email ()
1650
1714
  {
1651
- case "$cur" in
1652
- --confirm=*)
1653
- __gitcomp "
1654
- $__git_send_email_confirm_options
1655
- " "" "${cur##--confirm=}"
1656
- return
1657
- ;;
1658
- --suppress-cc=*)
1659
- __gitcomp "
1660
- $__git_send_email_suppresscc_options
1661
- " "" "${cur##--suppress-cc=}"
1662
-
1663
- return
1664
- ;;
1665
- --smtp-encryption=*)
1666
- __gitcomp "ssl tls" "" "${cur##--smtp-encryption=}"
1667
- return
1668
- ;;
1669
- --thread=*)
1670
- __gitcomp "
1671
- deep shallow
1672
- " "" "${cur##--thread=}"
1673
- return
1674
- ;;
1675
- --*)
1676
- __gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to
1677
- --compose --confirm= --dry-run --envelope-sender
1678
- --from --identity
1679
- --in-reply-to --no-chain-reply-to --no-signed-off-by-cc
1680
- --no-suppress-from --no-thread --quiet
1681
- --signed-off-by-cc --smtp-pass --smtp-server
1682
- --smtp-server-port --smtp-encryption= --smtp-user
1683
- --subject --suppress-cc= --suppress-from --thread --to
1684
- --validate --no-validate
1685
- $__git_format_patch_options"
1686
- return
1687
- ;;
1688
- esac
1689
- __git_complete_revlist
1715
+ case "$cur" in
1716
+ --confirm=*)
1717
+ __gitcomp "
1718
+ $__git_send_email_confirm_options
1719
+ " "" "${cur##--confirm=}"
1720
+ return
1721
+ ;;
1722
+ --suppress-cc=*)
1723
+ __gitcomp "
1724
+ $__git_send_email_suppresscc_options
1725
+ " "" "${cur##--suppress-cc=}"
1726
+
1727
+ return
1728
+ ;;
1729
+ --smtp-encryption=*)
1730
+ __gitcomp "ssl tls" "" "${cur##--smtp-encryption=}"
1731
+ return
1732
+ ;;
1733
+ --thread=*)
1734
+ __gitcomp "
1735
+ deep shallow
1736
+ " "" "${cur##--thread=}"
1737
+ return
1738
+ ;;
1739
+ --*)
1740
+ __gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to
1741
+ --compose --confirm= --dry-run --envelope-sender
1742
+ --from --identity
1743
+ --in-reply-to --no-chain-reply-to --no-signed-off-by-cc
1744
+ --no-suppress-from --no-thread --quiet
1745
+ --signed-off-by-cc --smtp-pass --smtp-server
1746
+ --smtp-server-port --smtp-encryption= --smtp-user
1747
+ --subject --suppress-cc= --suppress-from --thread --to
1748
+ --validate --no-validate
1749
+ $__git_format_patch_options"
1750
+ return
1751
+ ;;
1752
+ esac
1753
+ __git_complete_revlist
1690
1754
  }
1691
1755
 
1692
1756
  _git_stage ()
1693
1757
  {
1694
- _git_add
1758
+ _git_add
1695
1759
  }
1696
1760
 
1697
1761
  __git_config_get_set_variables ()
1698
1762
  {
1699
- local prevword word config_file= c=$cword
1700
- while [ $c -gt 1 ]; do
1701
- word="${words[c]}"
1702
- case "$word" in
1703
- --system|--global|--local|--file=*)
1704
- config_file="$word"
1705
- break
1706
- ;;
1707
- -f|--file)
1708
- config_file="$word $prevword"
1709
- break
1710
- ;;
1711
- esac
1712
- prevword=$word
1713
- c=$((--c))
1714
- done
1715
-
1716
- git --git-dir="$(__gitdir)" config $config_file --list 2>/dev/null |
1717
- while read -r line
1718
- do
1719
- case "$line" in
1720
- *.*=*)
1721
- echo "${line/=*/}"
1722
- ;;
1723
- esac
1724
- done
1763
+ local prevword word config_file= c=$cword
1764
+ while [ $c -gt 1 ]; do
1765
+ word="${words[c]}"
1766
+ case "$word" in
1767
+ --system|--global|--local|--file=*)
1768
+ config_file="$word"
1769
+ break
1770
+ ;;
1771
+ -f|--file)
1772
+ config_file="$word $prevword"
1773
+ break
1774
+ ;;
1775
+ esac
1776
+ prevword=$word
1777
+ c=$((--c))
1778
+ done
1779
+
1780
+ git --git-dir="$(__gitdir)" config $config_file --list 2>/dev/null |
1781
+ while read -r line
1782
+ do
1783
+ case "$line" in
1784
+ *.*=*)
1785
+ echo "${line/=*/}"
1786
+ ;;
1787
+ esac
1788
+ done
1725
1789
  }
1726
1790
 
1727
1791
  _git_config ()
1728
1792
  {
1729
- case "$prev" in
1730
- branch.*.remote|branch.*.pushremote)
1731
- __gitcomp_nl "$(__git_remotes)"
1732
- return
1733
- ;;
1734
- branch.*.merge)
1735
- __gitcomp_nl "$(__git_refs)"
1736
- return
1737
- ;;
1738
- branch.*.rebase)
1739
- __gitcomp "false true"
1740
- return
1741
- ;;
1742
- remote.pushdefault)
1743
- __gitcomp_nl "$(__git_remotes)"
1744
- return
1745
- ;;
1746
- remote.*.fetch)
1747
- local remote="${prev#remote.}"
1748
- remote="${remote%.fetch}"
1749
- if [ -z "$cur" ]; then
1750
- __gitcomp_nl "refs/heads/" "" "" ""
1751
- return
1752
- fi
1753
- __gitcomp_nl "$(__git_refs_remotes "$remote")"
1754
- return
1755
- ;;
1756
- remote.*.push)
1757
- local remote="${prev#remote.}"
1758
- remote="${remote%.push}"
1759
- __gitcomp_nl "$(git --git-dir="$(__gitdir)" \
1760
- for-each-ref --format='%(refname):%(refname)' \
1761
- refs/heads)"
1762
- return
1763
- ;;
1764
- pull.twohead|pull.octopus)
1765
- __git_compute_merge_strategies
1766
- __gitcomp "$__git_merge_strategies"
1767
- return
1768
- ;;
1769
- color.branch|color.diff|color.interactive|\
1770
- color.showbranch|color.status|color.ui)
1771
- __gitcomp "always never auto"
1772
- return
1773
- ;;
1774
- color.pager)
1775
- __gitcomp "false true"
1776
- return
1777
- ;;
1778
- color.*.*)
1779
- __gitcomp "
1780
- normal black red green yellow blue magenta cyan white
1781
- bold dim ul blink reverse
1782
- "
1783
- return
1784
- ;;
1785
- diff.submodule)
1786
- __gitcomp "log short"
1787
- return
1788
- ;;
1789
- help.format)
1790
- __gitcomp "man info web html"
1791
- return
1792
- ;;
1793
- log.date)
1794
- __gitcomp "$__git_log_date_formats"
1795
- return
1796
- ;;
1797
- sendemail.aliasesfiletype)
1798
- __gitcomp "mutt mailrc pine elm gnus"
1799
- return
1800
- ;;
1801
- sendemail.confirm)
1802
- __gitcomp "$__git_send_email_confirm_options"
1803
- return
1804
- ;;
1805
- sendemail.suppresscc)
1806
- __gitcomp "$__git_send_email_suppresscc_options"
1807
- return
1808
- ;;
1809
- --get|--get-all|--unset|--unset-all)
1810
- __gitcomp_nl "$(__git_config_get_set_variables)"
1811
- return
1812
- ;;
1813
- *.*)
1814
- return
1815
- ;;
1816
- esac
1817
- case "$cur" in
1818
- --*)
1819
- __gitcomp "
1820
- --system --global --local --file=
1821
- --list --replace-all
1822
- --get --get-all --get-regexp
1823
- --add --unset --unset-all
1824
- --remove-section --rename-section
1825
- "
1826
- return
1827
- ;;
1828
- branch.*.*)
1829
- local pfx="${cur%.*}." cur_="${cur##*.}"
1830
- __gitcomp "remote pushremote merge mergeoptions rebase" "$pfx" "$cur_"
1831
- return
1832
- ;;
1833
- branch.*)
1834
- local pfx="${cur%.*}." cur_="${cur#*.}"
1835
- __gitcomp_nl "$(__git_heads)" "$pfx" "$cur_" "."
1836
- return
1837
- ;;
1838
- guitool.*.*)
1839
- local pfx="${cur%.*}." cur_="${cur##*.}"
1840
- __gitcomp "
1841
- argprompt cmd confirm needsfile noconsole norescan
1842
- prompt revprompt revunmerged title
1843
- " "$pfx" "$cur_"
1844
- return
1845
- ;;
1846
- difftool.*.*)
1847
- local pfx="${cur%.*}." cur_="${cur##*.}"
1848
- __gitcomp "cmd path" "$pfx" "$cur_"
1849
- return
1850
- ;;
1851
- man.*.*)
1852
- local pfx="${cur%.*}." cur_="${cur##*.}"
1853
- __gitcomp "cmd path" "$pfx" "$cur_"
1854
- return
1855
- ;;
1856
- mergetool.*.*)
1857
- local pfx="${cur%.*}." cur_="${cur##*.}"
1858
- __gitcomp "cmd path trustExitCode" "$pfx" "$cur_"
1859
- return
1860
- ;;
1861
- pager.*)
1862
- local pfx="${cur%.*}." cur_="${cur#*.}"
1863
- __git_compute_all_commands
1864
- __gitcomp_nl "$__git_all_commands" "$pfx" "$cur_"
1865
- return
1866
- ;;
1867
- remote.*.*)
1868
- local pfx="${cur%.*}." cur_="${cur##*.}"
1869
- __gitcomp "
1870
- url proxy fetch push mirror skipDefaultUpdate
1871
- receivepack uploadpack tagopt pushurl
1872
- " "$pfx" "$cur_"
1873
- return
1874
- ;;
1875
- remote.*)
1876
- local pfx="${cur%.*}." cur_="${cur#*.}"
1877
- __gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "."
1878
- return
1879
- ;;
1880
- url.*.*)
1881
- local pfx="${cur%.*}." cur_="${cur##*.}"
1882
- __gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur_"
1883
- return
1884
- ;;
1885
- esac
1886
- __gitcomp "
1887
- add.ignoreErrors
1888
- advice.commitBeforeMerge
1889
- advice.detachedHead
1890
- advice.implicitIdentity
1891
- advice.pushNonFastForward
1892
- advice.resolveConflict
1893
- advice.statusHints
1894
- alias.
1895
- am.keepcr
1896
- apply.ignorewhitespace
1897
- apply.whitespace
1898
- branch.autosetupmerge
1899
- branch.autosetuprebase
1900
- browser.
1901
- clean.requireForce
1902
- color.branch
1903
- color.branch.current
1904
- color.branch.local
1905
- color.branch.plain
1906
- color.branch.remote
1907
- color.decorate.HEAD
1908
- color.decorate.branch
1909
- color.decorate.remoteBranch
1910
- color.decorate.stash
1911
- color.decorate.tag
1912
- color.diff
1913
- color.diff.commit
1914
- color.diff.frag
1915
- color.diff.func
1916
- color.diff.meta
1917
- color.diff.new
1918
- color.diff.old
1919
- color.diff.plain
1920
- color.diff.whitespace
1921
- color.grep
1922
- color.grep.context
1923
- color.grep.filename
1924
- color.grep.function
1925
- color.grep.linenumber
1926
- color.grep.match
1927
- color.grep.selected
1928
- color.grep.separator
1929
- color.interactive
1930
- color.interactive.error
1931
- color.interactive.header
1932
- color.interactive.help
1933
- color.interactive.prompt
1934
- color.pager
1935
- color.showbranch
1936
- color.status
1937
- color.status.added
1938
- color.status.changed
1939
- color.status.header
1940
- color.status.nobranch
1941
- color.status.untracked
1942
- color.status.updated
1943
- color.ui
1944
- commit.status
1945
- commit.template
1946
- core.abbrev
1947
- core.askpass
1948
- core.attributesfile
1949
- core.autocrlf
1950
- core.bare
1951
- core.bigFileThreshold
1952
- core.compression
1953
- core.createObject
1954
- core.deltaBaseCacheLimit
1955
- core.editor
1956
- core.eol
1957
- core.excludesfile
1958
- core.fileMode
1959
- core.fsyncobjectfiles
1960
- core.gitProxy
1961
- core.ignoreStat
1962
- core.ignorecase
1963
- core.logAllRefUpdates
1964
- core.loosecompression
1965
- core.notesRef
1966
- core.packedGitLimit
1967
- core.packedGitWindowSize
1968
- core.pager
1969
- core.preferSymlinkRefs
1970
- core.preloadindex
1971
- core.quotepath
1972
- core.repositoryFormatVersion
1973
- core.safecrlf
1974
- core.sharedRepository
1975
- core.sparseCheckout
1976
- core.symlinks
1977
- core.trustctime
1978
- core.warnAmbiguousRefs
1979
- core.whitespace
1980
- core.worktree
1981
- diff.autorefreshindex
1982
- diff.external
1983
- diff.ignoreSubmodules
1984
- diff.mnemonicprefix
1985
- diff.noprefix
1986
- diff.renameLimit
1987
- diff.renames
1988
- diff.statGraphWidth
1989
- diff.submodule
1990
- diff.suppressBlankEmpty
1991
- diff.tool
1992
- diff.wordRegex
1993
- diff.algorithm
1994
- difftool.
1995
- difftool.prompt
1996
- fetch.recurseSubmodules
1997
- fetch.unpackLimit
1998
- format.attach
1999
- format.cc
2000
- format.headers
2001
- format.numbered
2002
- format.pretty
2003
- format.signature
2004
- format.signoff
2005
- format.subjectprefix
2006
- format.suffix
2007
- format.thread
2008
- format.to
2009
- gc.
2010
- gc.aggressiveWindow
2011
- gc.auto
2012
- gc.autopacklimit
2013
- gc.packrefs
2014
- gc.pruneexpire
2015
- gc.reflogexpire
2016
- gc.reflogexpireunreachable
2017
- gc.rerereresolved
2018
- gc.rerereunresolved
2019
- gitcvs.allbinary
2020
- gitcvs.commitmsgannotation
2021
- gitcvs.dbTableNamePrefix
2022
- gitcvs.dbdriver
2023
- gitcvs.dbname
2024
- gitcvs.dbpass
2025
- gitcvs.dbuser
2026
- gitcvs.enabled
2027
- gitcvs.logfile
2028
- gitcvs.usecrlfattr
2029
- guitool.
2030
- gui.blamehistoryctx
2031
- gui.commitmsgwidth
2032
- gui.copyblamethreshold
2033
- gui.diffcontext
2034
- gui.encoding
2035
- gui.fastcopyblame
2036
- gui.matchtrackingbranch
2037
- gui.newbranchtemplate
2038
- gui.pruneduringfetch
2039
- gui.spellingdictionary
2040
- gui.trustmtime
2041
- help.autocorrect
2042
- help.browser
2043
- help.format
2044
- http.lowSpeedLimit
2045
- http.lowSpeedTime
2046
- http.maxRequests
2047
- http.minSessions
2048
- http.noEPSV
2049
- http.postBuffer
2050
- http.proxy
2051
- http.sslCAInfo
2052
- http.sslCAPath
2053
- http.sslCert
2054
- http.sslCertPasswordProtected
2055
- http.sslKey
2056
- http.sslVerify
2057
- http.useragent
2058
- i18n.commitEncoding
2059
- i18n.logOutputEncoding
2060
- imap.authMethod
2061
- imap.folder
2062
- imap.host
2063
- imap.pass
2064
- imap.port
2065
- imap.preformattedHTML
2066
- imap.sslverify
2067
- imap.tunnel
2068
- imap.user
2069
- init.templatedir
2070
- instaweb.browser
2071
- instaweb.httpd
2072
- instaweb.local
2073
- instaweb.modulepath
2074
- instaweb.port
2075
- interactive.singlekey
2076
- log.date
2077
- log.decorate
2078
- log.showroot
2079
- mailmap.file
2080
- man.
2081
- man.viewer
2082
- merge.
2083
- merge.conflictstyle
2084
- merge.log
2085
- merge.renameLimit
2086
- merge.renormalize
2087
- merge.stat
2088
- merge.tool
2089
- merge.verbosity
2090
- mergetool.
2091
- mergetool.keepBackup
2092
- mergetool.keepTemporaries
2093
- mergetool.prompt
2094
- notes.displayRef
2095
- notes.rewrite.
2096
- notes.rewrite.amend
2097
- notes.rewrite.rebase
2098
- notes.rewriteMode
2099
- notes.rewriteRef
2100
- pack.compression
2101
- pack.deltaCacheLimit
2102
- pack.deltaCacheSize
2103
- pack.depth
2104
- pack.indexVersion
2105
- pack.packSizeLimit
2106
- pack.threads
2107
- pack.window
2108
- pack.windowMemory
2109
- pager.
2110
- pretty.
2111
- pull.octopus
2112
- pull.twohead
2113
- push.default
2114
- rebase.autosquash
2115
- rebase.stat
2116
- receive.autogc
2117
- receive.denyCurrentBranch
2118
- receive.denyDeleteCurrent
2119
- receive.denyDeletes
2120
- receive.denyNonFastForwards
2121
- receive.fsckObjects
2122
- receive.unpackLimit
2123
- receive.updateserverinfo
2124
- remote.pushdefault
2125
- remotes.
2126
- repack.usedeltabaseoffset
2127
- rerere.autoupdate
2128
- rerere.enabled
2129
- sendemail.
2130
- sendemail.aliasesfile
2131
- sendemail.aliasfiletype
2132
- sendemail.bcc
2133
- sendemail.cc
2134
- sendemail.cccmd
2135
- sendemail.chainreplyto
2136
- sendemail.confirm
2137
- sendemail.envelopesender
2138
- sendemail.from
2139
- sendemail.identity
2140
- sendemail.multiedit
2141
- sendemail.signedoffbycc
2142
- sendemail.smtpdomain
2143
- sendemail.smtpencryption
2144
- sendemail.smtppass
2145
- sendemail.smtpserver
2146
- sendemail.smtpserveroption
2147
- sendemail.smtpserverport
2148
- sendemail.smtpuser
2149
- sendemail.suppresscc
2150
- sendemail.suppressfrom
2151
- sendemail.thread
2152
- sendemail.to
2153
- sendemail.validate
2154
- showbranch.default
2155
- status.relativePaths
2156
- status.showUntrackedFiles
2157
- status.submodulesummary
2158
- submodule.
2159
- tar.umask
2160
- transfer.unpackLimit
2161
- url.
2162
- user.email
2163
- user.name
2164
- user.signingkey
2165
- web.browser
2166
- branch. remote.
2167
- "
1793
+ case "$prev" in
1794
+ branch.*.remote|branch.*.pushremote)
1795
+ __gitcomp_nl "$(__git_remotes)"
1796
+ return
1797
+ ;;
1798
+ branch.*.merge)
1799
+ __gitcomp_nl "$(__git_refs)"
1800
+ return
1801
+ ;;
1802
+ branch.*.rebase)
1803
+ __gitcomp "false true"
1804
+ return
1805
+ ;;
1806
+ remote.pushdefault)
1807
+ __gitcomp_nl "$(__git_remotes)"
1808
+ return
1809
+ ;;
1810
+ remote.*.fetch)
1811
+ local remote="${prev#remote.}"
1812
+ remote="${remote%.fetch}"
1813
+ if [ -z "$cur" ]; then
1814
+ __gitcomp_nl "refs/heads/" "" "" ""
1815
+ return
1816
+ fi
1817
+ __gitcomp_nl "$(__git_refs_remotes "$remote")"
1818
+ return
1819
+ ;;
1820
+ remote.*.push)
1821
+ local remote="${prev#remote.}"
1822
+ remote="${remote%.push}"
1823
+ __gitcomp_nl "$(git --git-dir="$(__gitdir)" \
1824
+ for-each-ref --format='%(refname):%(refname)' \
1825
+ refs/heads)"
1826
+ return
1827
+ ;;
1828
+ pull.twohead|pull.octopus)
1829
+ __git_compute_merge_strategies
1830
+ __gitcomp "$__git_merge_strategies"
1831
+ return
1832
+ ;;
1833
+ color.branch|color.diff|color.interactive|\
1834
+ color.showbranch|color.status|color.ui)
1835
+ __gitcomp "always never auto"
1836
+ return
1837
+ ;;
1838
+ color.pager)
1839
+ __gitcomp "false true"
1840
+ return
1841
+ ;;
1842
+ color.*.*)
1843
+ __gitcomp "
1844
+ normal black red green yellow blue magenta cyan white
1845
+ bold dim ul blink reverse
1846
+ "
1847
+ return
1848
+ ;;
1849
+ diff.submodule)
1850
+ __gitcomp "log short"
1851
+ return
1852
+ ;;
1853
+ help.format)
1854
+ __gitcomp "man info web html"
1855
+ return
1856
+ ;;
1857
+ log.date)
1858
+ __gitcomp "$__git_log_date_formats"
1859
+ return
1860
+ ;;
1861
+ sendemail.aliasesfiletype)
1862
+ __gitcomp "mutt mailrc pine elm gnus"
1863
+ return
1864
+ ;;
1865
+ sendemail.confirm)
1866
+ __gitcomp "$__git_send_email_confirm_options"
1867
+ return
1868
+ ;;
1869
+ sendemail.suppresscc)
1870
+ __gitcomp "$__git_send_email_suppresscc_options"
1871
+ return
1872
+ ;;
1873
+ sendemail.transferencoding)
1874
+ __gitcomp "7bit 8bit quoted-printable base64"
1875
+ return
1876
+ ;;
1877
+ --get|--get-all|--unset|--unset-all)
1878
+ __gitcomp_nl "$(__git_config_get_set_variables)"
1879
+ return
1880
+ ;;
1881
+ *.*)
1882
+ return
1883
+ ;;
1884
+ esac
1885
+ case "$cur" in
1886
+ --*)
1887
+ __gitcomp "
1888
+ --system --global --local --file=
1889
+ --list --replace-all
1890
+ --get --get-all --get-regexp
1891
+ --add --unset --unset-all
1892
+ --remove-section --rename-section
1893
+ "
1894
+ return
1895
+ ;;
1896
+ branch.*.*)
1897
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1898
+ __gitcomp "remote pushremote merge mergeoptions rebase" "$pfx" "$cur_"
1899
+ return
1900
+ ;;
1901
+ branch.*)
1902
+ local pfx="${cur%.*}." cur_="${cur#*.}"
1903
+ __gitcomp_nl "$(__git_heads)" "$pfx" "$cur_" "."
1904
+ __gitcomp_nl_append $'autosetupmerge\nautosetuprebase\n' "$pfx" "$cur_"
1905
+ return
1906
+ ;;
1907
+ guitool.*.*)
1908
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1909
+ __gitcomp "
1910
+ argprompt cmd confirm needsfile noconsole norescan
1911
+ prompt revprompt revunmerged title
1912
+ " "$pfx" "$cur_"
1913
+ return
1914
+ ;;
1915
+ difftool.*.*)
1916
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1917
+ __gitcomp "cmd path" "$pfx" "$cur_"
1918
+ return
1919
+ ;;
1920
+ man.*.*)
1921
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1922
+ __gitcomp "cmd path" "$pfx" "$cur_"
1923
+ return
1924
+ ;;
1925
+ mergetool.*.*)
1926
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1927
+ __gitcomp "cmd path trustExitCode" "$pfx" "$cur_"
1928
+ return
1929
+ ;;
1930
+ pager.*)
1931
+ local pfx="${cur%.*}." cur_="${cur#*.}"
1932
+ __git_compute_all_commands
1933
+ __gitcomp_nl "$__git_all_commands" "$pfx" "$cur_"
1934
+ return
1935
+ ;;
1936
+ remote.*.*)
1937
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1938
+ __gitcomp "
1939
+ url proxy fetch push mirror skipDefaultUpdate
1940
+ receivepack uploadpack tagopt pushurl
1941
+ " "$pfx" "$cur_"
1942
+ return
1943
+ ;;
1944
+ remote.*)
1945
+ local pfx="${cur%.*}." cur_="${cur#*.}"
1946
+ __gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "."
1947
+ __gitcomp_nl_append "pushdefault" "$pfx" "$cur_"
1948
+ return
1949
+ ;;
1950
+ url.*.*)
1951
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1952
+ __gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur_"
1953
+ return
1954
+ ;;
1955
+ esac
1956
+ __gitcomp "
1957
+ add.ignoreErrors
1958
+ advice.commitBeforeMerge
1959
+ advice.detachedHead
1960
+ advice.implicitIdentity
1961
+ advice.pushNonFastForward
1962
+ advice.resolveConflict
1963
+ advice.statusHints
1964
+ alias.
1965
+ am.keepcr
1966
+ apply.ignorewhitespace
1967
+ apply.whitespace
1968
+ branch.autosetupmerge
1969
+ branch.autosetuprebase
1970
+ browser.
1971
+ clean.requireForce
1972
+ color.branch
1973
+ color.branch.current
1974
+ color.branch.local
1975
+ color.branch.plain
1976
+ color.branch.remote
1977
+ color.decorate.HEAD
1978
+ color.decorate.branch
1979
+ color.decorate.remoteBranch
1980
+ color.decorate.stash
1981
+ color.decorate.tag
1982
+ color.diff
1983
+ color.diff.commit
1984
+ color.diff.frag
1985
+ color.diff.func
1986
+ color.diff.meta
1987
+ color.diff.new
1988
+ color.diff.old
1989
+ color.diff.plain
1990
+ color.diff.whitespace
1991
+ color.grep
1992
+ color.grep.context
1993
+ color.grep.filename
1994
+ color.grep.function
1995
+ color.grep.linenumber
1996
+ color.grep.match
1997
+ color.grep.selected
1998
+ color.grep.separator
1999
+ color.interactive
2000
+ color.interactive.error
2001
+ color.interactive.header
2002
+ color.interactive.help
2003
+ color.interactive.prompt
2004
+ color.pager
2005
+ color.showbranch
2006
+ color.status
2007
+ color.status.added
2008
+ color.status.changed
2009
+ color.status.header
2010
+ color.status.nobranch
2011
+ color.status.unmerged
2012
+ color.status.untracked
2013
+ color.status.updated
2014
+ color.ui
2015
+ commit.status
2016
+ commit.template
2017
+ core.abbrev
2018
+ core.askpass
2019
+ core.attributesfile
2020
+ core.autocrlf
2021
+ core.bare
2022
+ core.bigFileThreshold
2023
+ core.compression
2024
+ core.createObject
2025
+ core.deltaBaseCacheLimit
2026
+ core.editor
2027
+ core.eol
2028
+ core.excludesfile
2029
+ core.fileMode
2030
+ core.fsyncobjectfiles
2031
+ core.gitProxy
2032
+ core.ignoreStat
2033
+ core.ignorecase
2034
+ core.logAllRefUpdates
2035
+ core.loosecompression
2036
+ core.notesRef
2037
+ core.packedGitLimit
2038
+ core.packedGitWindowSize
2039
+ core.pager
2040
+ core.preferSymlinkRefs
2041
+ core.preloadindex
2042
+ core.quotepath
2043
+ core.repositoryFormatVersion
2044
+ core.safecrlf
2045
+ core.sharedRepository
2046
+ core.sparseCheckout
2047
+ core.symlinks
2048
+ core.trustctime
2049
+ core.warnAmbiguousRefs
2050
+ core.whitespace
2051
+ core.worktree
2052
+ diff.autorefreshindex
2053
+ diff.external
2054
+ diff.ignoreSubmodules
2055
+ diff.mnemonicprefix
2056
+ diff.noprefix
2057
+ diff.renameLimit
2058
+ diff.renames
2059
+ diff.statGraphWidth
2060
+ diff.submodule
2061
+ diff.suppressBlankEmpty
2062
+ diff.tool
2063
+ diff.wordRegex
2064
+ diff.algorithm
2065
+ difftool.
2066
+ difftool.prompt
2067
+ fetch.recurseSubmodules
2068
+ fetch.unpackLimit
2069
+ format.attach
2070
+ format.cc
2071
+ format.coverLetter
2072
+ format.headers
2073
+ format.numbered
2074
+ format.pretty
2075
+ format.signature
2076
+ format.signoff
2077
+ format.subjectprefix
2078
+ format.suffix
2079
+ format.thread
2080
+ format.to
2081
+ gc.
2082
+ gc.aggressiveWindow
2083
+ gc.auto
2084
+ gc.autopacklimit
2085
+ gc.packrefs
2086
+ gc.pruneexpire
2087
+ gc.reflogexpire
2088
+ gc.reflogexpireunreachable
2089
+ gc.rerereresolved
2090
+ gc.rerereunresolved
2091
+ gitcvs.allbinary
2092
+ gitcvs.commitmsgannotation
2093
+ gitcvs.dbTableNamePrefix
2094
+ gitcvs.dbdriver
2095
+ gitcvs.dbname
2096
+ gitcvs.dbpass
2097
+ gitcvs.dbuser
2098
+ gitcvs.enabled
2099
+ gitcvs.logfile
2100
+ gitcvs.usecrlfattr
2101
+ guitool.
2102
+ gui.blamehistoryctx
2103
+ gui.commitmsgwidth
2104
+ gui.copyblamethreshold
2105
+ gui.diffcontext
2106
+ gui.encoding
2107
+ gui.fastcopyblame
2108
+ gui.matchtrackingbranch
2109
+ gui.newbranchtemplate
2110
+ gui.pruneduringfetch
2111
+ gui.spellingdictionary
2112
+ gui.trustmtime
2113
+ help.autocorrect
2114
+ help.browser
2115
+ help.format
2116
+ http.lowSpeedLimit
2117
+ http.lowSpeedTime
2118
+ http.maxRequests
2119
+ http.minSessions
2120
+ http.noEPSV
2121
+ http.postBuffer
2122
+ http.proxy
2123
+ http.sslCipherList
2124
+ http.sslCAInfo
2125
+ http.sslCAPath
2126
+ http.sslCert
2127
+ http.sslCertPasswordProtected
2128
+ http.sslKey
2129
+ http.sslVerify
2130
+ http.useragent
2131
+ i18n.commitEncoding
2132
+ i18n.logOutputEncoding
2133
+ imap.authMethod
2134
+ imap.folder
2135
+ imap.host
2136
+ imap.pass
2137
+ imap.port
2138
+ imap.preformattedHTML
2139
+ imap.sslverify
2140
+ imap.tunnel
2141
+ imap.user
2142
+ init.templatedir
2143
+ instaweb.browser
2144
+ instaweb.httpd
2145
+ instaweb.local
2146
+ instaweb.modulepath
2147
+ instaweb.port
2148
+ interactive.singlekey
2149
+ log.date
2150
+ log.decorate
2151
+ log.showroot
2152
+ mailmap.file
2153
+ man.
2154
+ man.viewer
2155
+ merge.
2156
+ merge.conflictstyle
2157
+ merge.log
2158
+ merge.renameLimit
2159
+ merge.renormalize
2160
+ merge.stat
2161
+ merge.tool
2162
+ merge.verbosity
2163
+ mergetool.
2164
+ mergetool.keepBackup
2165
+ mergetool.keepTemporaries
2166
+ mergetool.prompt
2167
+ notes.displayRef
2168
+ notes.rewrite.
2169
+ notes.rewrite.amend
2170
+ notes.rewrite.rebase
2171
+ notes.rewriteMode
2172
+ notes.rewriteRef
2173
+ pack.compression
2174
+ pack.deltaCacheLimit
2175
+ pack.deltaCacheSize
2176
+ pack.depth
2177
+ pack.indexVersion
2178
+ pack.packSizeLimit
2179
+ pack.threads
2180
+ pack.window
2181
+ pack.windowMemory
2182
+ pager.
2183
+ pretty.
2184
+ pull.octopus
2185
+ pull.twohead
2186
+ push.default
2187
+ push.followTags
2188
+ rebase.autosquash
2189
+ rebase.stat
2190
+ receive.autogc
2191
+ receive.denyCurrentBranch
2192
+ receive.denyDeleteCurrent
2193
+ receive.denyDeletes
2194
+ receive.denyNonFastForwards
2195
+ receive.fsckObjects
2196
+ receive.unpackLimit
2197
+ receive.updateserverinfo
2198
+ remote.pushdefault
2199
+ remotes.
2200
+ repack.usedeltabaseoffset
2201
+ rerere.autoupdate
2202
+ rerere.enabled
2203
+ sendemail.
2204
+ sendemail.aliasesfile
2205
+ sendemail.aliasfiletype
2206
+ sendemail.bcc
2207
+ sendemail.cc
2208
+ sendemail.cccmd
2209
+ sendemail.chainreplyto
2210
+ sendemail.confirm
2211
+ sendemail.envelopesender
2212
+ sendemail.from
2213
+ sendemail.identity
2214
+ sendemail.multiedit
2215
+ sendemail.signedoffbycc
2216
+ sendemail.smtpdomain
2217
+ sendemail.smtpencryption
2218
+ sendemail.smtppass
2219
+ sendemail.smtpserver
2220
+ sendemail.smtpserveroption
2221
+ sendemail.smtpserverport
2222
+ sendemail.smtpuser
2223
+ sendemail.suppresscc
2224
+ sendemail.suppressfrom
2225
+ sendemail.thread
2226
+ sendemail.to
2227
+ sendemail.validate
2228
+ showbranch.default
2229
+ status.relativePaths
2230
+ status.showUntrackedFiles
2231
+ status.submodulesummary
2232
+ submodule.
2233
+ tar.umask
2234
+ transfer.unpackLimit
2235
+ url.
2236
+ user.email
2237
+ user.name
2238
+ user.signingkey
2239
+ web.browser
2240
+ branch. remote.
2241
+ "
2168
2242
  }
2169
2243
 
2170
2244
  _git_remote ()
2171
2245
  {
2172
- local subcommands="add rename remove set-head set-branches set-url show prune update"
2173
- local subcommand="$(__git_find_on_cmdline "$subcommands")"
2174
- if [ -z "$subcommand" ]; then
2175
- __gitcomp "$subcommands"
2176
- return
2177
- fi
2178
-
2179
- case "$subcommand" in
2180
- rename|remove|set-url|show|prune)
2181
- __gitcomp_nl "$(__git_remotes)"
2182
- ;;
2183
- set-head|set-branches)
2184
- __git_complete_remote_or_refspec
2185
- ;;
2186
- update)
2187
- local i c='' IFS=$'\n'
2188
- for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); do
2189
- i="${i#remotes.}"
2190
- c="$c ${i/ */}"
2191
- done
2192
- __gitcomp "$c"
2193
- ;;
2194
- *)
2195
- ;;
2196
- esac
2246
+ local subcommands="add rename remove set-head set-branches set-url show prune update"
2247
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
2248
+ if [ -z "$subcommand" ]; then
2249
+ __gitcomp "$subcommands"
2250
+ return
2251
+ fi
2252
+
2253
+ case "$subcommand" in
2254
+ rename|remove|set-url|show|prune)
2255
+ __gitcomp_nl "$(__git_remotes)"
2256
+ ;;
2257
+ set-head|set-branches)
2258
+ __git_complete_remote_or_refspec
2259
+ ;;
2260
+ update)
2261
+ __gitcomp "$(__git_get_config_variables "remotes")"
2262
+ ;;
2263
+ *)
2264
+ ;;
2265
+ esac
2197
2266
  }
2198
2267
 
2199
2268
  _git_replace ()
2200
2269
  {
2201
- __gitcomp_nl "$(__git_refs)"
2270
+ __gitcomp_nl "$(__git_refs)"
2202
2271
  }
2203
2272
 
2204
2273
  _git_reset ()
2205
2274
  {
2206
- __git_has_doubledash && return
2275
+ __git_has_doubledash && return
2207
2276
 
2208
- case "$cur" in
2209
- --*)
2210
- __gitcomp "--merge --mixed --hard --soft --patch"
2211
- return
2212
- ;;
2213
- esac
2214
- __gitcomp_nl "$(__git_refs)"
2277
+ case "$cur" in
2278
+ --*)
2279
+ __gitcomp "--merge --mixed --hard --soft --patch"
2280
+ return
2281
+ ;;
2282
+ esac
2283
+ __gitcomp_nl "$(__git_refs)"
2215
2284
  }
2216
2285
 
2217
2286
  _git_revert ()
2218
2287
  {
2219
- case "$cur" in
2220
- --*)
2221
- __gitcomp "--edit --mainline --no-edit --no-commit --signoff"
2222
- return
2223
- ;;
2224
- esac
2225
- __gitcomp_nl "$(__git_refs)"
2288
+ local dir="$(__gitdir)"
2289
+ if [ -f "$dir"/REVERT_HEAD ]; then
2290
+ __gitcomp "--continue --quit --abort"
2291
+ return
2292
+ fi
2293
+ case "$cur" in
2294
+ --*)
2295
+ __gitcomp "--edit --mainline --no-edit --no-commit --signoff"
2296
+ return
2297
+ ;;
2298
+ esac
2299
+ __gitcomp_nl "$(__git_refs)"
2226
2300
  }
2227
2301
 
2228
2302
  _git_rm ()
2229
2303
  {
2230
- case "$cur" in
2231
- --*)
2232
- __gitcomp "--cached --dry-run --ignore-unmatch --quiet"
2233
- return
2234
- ;;
2235
- esac
2304
+ case "$cur" in
2305
+ --*)
2306
+ __gitcomp "--cached --dry-run --ignore-unmatch --quiet"
2307
+ return
2308
+ ;;
2309
+ esac
2236
2310
 
2237
- __git_complete_index_file "--cached"
2311
+ __git_complete_index_file "--cached"
2238
2312
  }
2239
2313
 
2240
2314
  _git_shortlog ()
2241
2315
  {
2242
- __git_has_doubledash && return
2316
+ __git_has_doubledash && return
2243
2317
 
2244
- case "$cur" in
2245
- --*)
2246
- __gitcomp "
2247
- $__git_log_common_options
2248
- $__git_log_shortlog_options
2249
- --numbered --summary
2250
- "
2251
- return
2252
- ;;
2253
- esac
2254
- __git_complete_revlist
2318
+ case "$cur" in
2319
+ --*)
2320
+ __gitcomp "
2321
+ $__git_log_common_options
2322
+ $__git_log_shortlog_options
2323
+ --numbered --summary
2324
+ "
2325
+ return
2326
+ ;;
2327
+ esac
2328
+ __git_complete_revlist
2255
2329
  }
2256
2330
 
2257
2331
  _git_show ()
2258
2332
  {
2259
- __git_has_doubledash && return
2260
-
2261
- case "$cur" in
2262
- --pretty=*|--format=*)
2263
- __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
2264
- " "" "${cur#*=}"
2265
- return
2266
- ;;
2267
- --diff-algorithm=*)
2268
- __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
2269
- return
2270
- ;;
2271
- --*)
2272
- __gitcomp "--pretty= --format= --abbrev-commit --oneline
2273
- $__git_diff_common_options
2274
- "
2275
- return
2276
- ;;
2277
- esac
2278
- __git_complete_revlist_file
2333
+ __git_has_doubledash && return
2334
+
2335
+ case "$cur" in
2336
+ --pretty=*|--format=*)
2337
+ __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
2338
+ " "" "${cur#*=}"
2339
+ return
2340
+ ;;
2341
+ --diff-algorithm=*)
2342
+ __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
2343
+ return
2344
+ ;;
2345
+ --*)
2346
+ __gitcomp "--pretty= --format= --abbrev-commit --oneline
2347
+ --show-signature
2348
+ $__git_diff_common_options
2349
+ "
2350
+ return
2351
+ ;;
2352
+ esac
2353
+ __git_complete_revlist_file
2279
2354
  }
2280
2355
 
2281
2356
  _git_show_branch ()
2282
2357
  {
2283
- case "$cur" in
2284
- --*)
2285
- __gitcomp "
2286
- --all --remotes --topo-order --current --more=
2287
- --list --independent --merge-base --no-name
2288
- --color --no-color
2289
- --sha1-name --sparse --topics --reflog
2290
- "
2291
- return
2292
- ;;
2293
- esac
2294
- __git_complete_revlist
2358
+ case "$cur" in
2359
+ --*)
2360
+ __gitcomp "
2361
+ --all --remotes --topo-order --current --more=
2362
+ --list --independent --merge-base --no-name
2363
+ --color --no-color
2364
+ --sha1-name --sparse --topics --reflog
2365
+ "
2366
+ return
2367
+ ;;
2368
+ esac
2369
+ __git_complete_revlist
2295
2370
  }
2296
2371
 
2297
2372
  _git_stash ()
2298
2373
  {
2299
- local save_opts='--keep-index --no-keep-index --quiet --patch'
2300
- local subcommands='save list show apply clear drop pop create branch'
2301
- local subcommand="$(__git_find_on_cmdline "$subcommands")"
2302
- if [ -z "$subcommand" ]; then
2303
- case "$cur" in
2304
- --*)
2305
- __gitcomp "$save_opts"
2306
- ;;
2307
- *)
2308
- if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then
2309
- __gitcomp "$subcommands"
2310
- fi
2311
- ;;
2312
- esac
2313
- else
2314
- case "$subcommand,$cur" in
2315
- save,--*)
2316
- __gitcomp "$save_opts"
2317
- ;;
2318
- apply,--*|pop,--*)
2319
- __gitcomp "--index --quiet"
2320
- ;;
2321
- show,--*|drop,--*|branch,--*)
2322
- ;;
2323
- show,*|apply,*|drop,*|pop,*|branch,*)
2324
- __gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
2325
- | sed -n -e 's/:.*//p')"
2326
- ;;
2327
- *)
2328
- ;;
2329
- esac
2330
- fi
2374
+ local save_opts='--keep-index --no-keep-index --quiet --patch'
2375
+ local subcommands='save list show apply clear drop pop create branch'
2376
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
2377
+ if [ -z "$subcommand" ]; then
2378
+ case "$cur" in
2379
+ --*)
2380
+ __gitcomp "$save_opts"
2381
+ ;;
2382
+ *)
2383
+ if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then
2384
+ __gitcomp "$subcommands"
2385
+ fi
2386
+ ;;
2387
+ esac
2388
+ else
2389
+ case "$subcommand,$cur" in
2390
+ save,--*)
2391
+ __gitcomp "$save_opts"
2392
+ ;;
2393
+ apply,--*|pop,--*)
2394
+ __gitcomp "--index --quiet"
2395
+ ;;
2396
+ show,--*|drop,--*|branch,--*)
2397
+ ;;
2398
+ show,*|apply,*|drop,*|pop,*|branch,*)
2399
+ __gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
2400
+ | sed -n -e 's/:.*//p')"
2401
+ ;;
2402
+ *)
2403
+ ;;
2404
+ esac
2405
+ fi
2331
2406
  }
2332
2407
 
2333
2408
  _git_submodule ()
2334
2409
  {
2335
- __git_has_doubledash && return
2410
+ __git_has_doubledash && return
2336
2411
 
2337
- local subcommands="add status init deinit update summary foreach sync"
2338
- if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then
2339
- case "$cur" in
2340
- --*)
2341
- __gitcomp "--quiet --cached"
2342
- ;;
2343
- *)
2344
- __gitcomp "$subcommands"
2345
- ;;
2346
- esac
2347
- return
2348
- fi
2412
+ local subcommands="add status init deinit update summary foreach sync"
2413
+ if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then
2414
+ case "$cur" in
2415
+ --*)
2416
+ __gitcomp "--quiet --cached"
2417
+ ;;
2418
+ *)
2419
+ __gitcomp "$subcommands"
2420
+ ;;
2421
+ esac
2422
+ return
2423
+ fi
2349
2424
  }
2350
2425
 
2351
2426
  _git_svn ()
2352
2427
  {
2353
- local subcommands="
2354
- init fetch clone rebase dcommit log find-rev
2355
- set-tree commit-diff info create-ignore propget
2356
- proplist show-ignore show-externals branch tag blame
2357
- migrate mkdirs reset gc
2358
- "
2359
- local subcommand="$(__git_find_on_cmdline "$subcommands")"
2360
- if [ -z "$subcommand" ]; then
2361
- __gitcomp "$subcommands"
2362
- else
2363
- local remote_opts="--username= --config-dir= --no-auth-cache"
2364
- local fc_opts="
2365
- --follow-parent --authors-file= --repack=
2366
- --no-metadata --use-svm-props --use-svnsync-props
2367
- --log-window-size= --no-checkout --quiet
2368
- --repack-flags --use-log-author --localtime
2369
- --ignore-paths= --include-paths= $remote_opts
2370
- "
2371
- local init_opts="
2372
- --template= --shared= --trunk= --tags=
2373
- --branches= --stdlayout --minimize-url
2374
- --no-metadata --use-svm-props --use-svnsync-props
2375
- --rewrite-root= --prefix= --use-log-author
2376
- --add-author-from $remote_opts
2377
- "
2378
- local cmt_opts="
2379
- --edit --rmdir --find-copies-harder --copy-similarity=
2380
- "
2381
-
2382
- case "$subcommand,$cur" in
2383
- fetch,--*)
2384
- __gitcomp "--revision= --fetch-all $fc_opts"
2385
- ;;
2386
- clone,--*)
2387
- __gitcomp "--revision= $fc_opts $init_opts"
2388
- ;;
2389
- init,--*)
2390
- __gitcomp "$init_opts"
2391
- ;;
2392
- dcommit,--*)
2393
- __gitcomp "
2394
- --merge --strategy= --verbose --dry-run
2395
- --fetch-all --no-rebase --commit-url
2396
- --revision --interactive $cmt_opts $fc_opts
2397
- "
2398
- ;;
2399
- set-tree,--*)
2400
- __gitcomp "--stdin $cmt_opts $fc_opts"
2401
- ;;
2402
- create-ignore,--*|propget,--*|proplist,--*|show-ignore,--*|\
2403
- show-externals,--*|mkdirs,--*)
2404
- __gitcomp "--revision="
2405
- ;;
2406
- log,--*)
2407
- __gitcomp "
2408
- --limit= --revision= --verbose --incremental
2409
- --oneline --show-commit --non-recursive
2410
- --authors-file= --color
2411
- "
2412
- ;;
2413
- rebase,--*)
2414
- __gitcomp "
2415
- --merge --verbose --strategy= --local
2416
- --fetch-all --dry-run $fc_opts
2417
- "
2418
- ;;
2419
- commit-diff,--*)
2420
- __gitcomp "--message= --file= --revision= $cmt_opts"
2421
- ;;
2422
- info,--*)
2423
- __gitcomp "--url"
2424
- ;;
2425
- branch,--*)
2426
- __gitcomp "--dry-run --message --tag"
2427
- ;;
2428
- tag,--*)
2429
- __gitcomp "--dry-run --message"
2430
- ;;
2431
- blame,--*)
2432
- __gitcomp "--git-format"
2433
- ;;
2434
- migrate,--*)
2435
- __gitcomp "
2436
- --config-dir= --ignore-paths= --minimize
2437
- --no-auth-cache --username=
2438
- "
2439
- ;;
2440
- reset,--*)
2441
- __gitcomp "--revision= --parent"
2442
- ;;
2443
- *)
2444
- ;;
2445
- esac
2446
- fi
2428
+ local subcommands="
2429
+ init fetch clone rebase dcommit log find-rev
2430
+ set-tree commit-diff info create-ignore propget
2431
+ proplist show-ignore show-externals branch tag blame
2432
+ migrate mkdirs reset gc
2433
+ "
2434
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
2435
+ if [ -z "$subcommand" ]; then
2436
+ __gitcomp "$subcommands"
2437
+ else
2438
+ local remote_opts="--username= --config-dir= --no-auth-cache"
2439
+ local fc_opts="
2440
+ --follow-parent --authors-file= --repack=
2441
+ --no-metadata --use-svm-props --use-svnsync-props
2442
+ --log-window-size= --no-checkout --quiet
2443
+ --repack-flags --use-log-author --localtime
2444
+ --ignore-paths= --include-paths= $remote_opts
2445
+ "
2446
+ local init_opts="
2447
+ --template= --shared= --trunk= --tags=
2448
+ --branches= --stdlayout --minimize-url
2449
+ --no-metadata --use-svm-props --use-svnsync-props
2450
+ --rewrite-root= --prefix= --use-log-author
2451
+ --add-author-from $remote_opts
2452
+ "
2453
+ local cmt_opts="
2454
+ --edit --rmdir --find-copies-harder --copy-similarity=
2455
+ "
2456
+
2457
+ case "$subcommand,$cur" in
2458
+ fetch,--*)
2459
+ __gitcomp "--revision= --fetch-all $fc_opts"
2460
+ ;;
2461
+ clone,--*)
2462
+ __gitcomp "--revision= $fc_opts $init_opts"
2463
+ ;;
2464
+ init,--*)
2465
+ __gitcomp "$init_opts"
2466
+ ;;
2467
+ dcommit,--*)
2468
+ __gitcomp "
2469
+ --merge --strategy= --verbose --dry-run
2470
+ --fetch-all --no-rebase --commit-url
2471
+ --revision --interactive $cmt_opts $fc_opts
2472
+ "
2473
+ ;;
2474
+ set-tree,--*)
2475
+ __gitcomp "--stdin $cmt_opts $fc_opts"
2476
+ ;;
2477
+ create-ignore,--*|propget,--*|proplist,--*|show-ignore,--*|\
2478
+ show-externals,--*|mkdirs,--*)
2479
+ __gitcomp "--revision="
2480
+ ;;
2481
+ log,--*)
2482
+ __gitcomp "
2483
+ --limit= --revision= --verbose --incremental
2484
+ --oneline --show-commit --non-recursive
2485
+ --authors-file= --color
2486
+ "
2487
+ ;;
2488
+ rebase,--*)
2489
+ __gitcomp "
2490
+ --merge --verbose --strategy= --local
2491
+ --fetch-all --dry-run $fc_opts
2492
+ "
2493
+ ;;
2494
+ commit-diff,--*)
2495
+ __gitcomp "--message= --file= --revision= $cmt_opts"
2496
+ ;;
2497
+ info,--*)
2498
+ __gitcomp "--url"
2499
+ ;;
2500
+ branch,--*)
2501
+ __gitcomp "--dry-run --message --tag"
2502
+ ;;
2503
+ tag,--*)
2504
+ __gitcomp "--dry-run --message"
2505
+ ;;
2506
+ blame,--*)
2507
+ __gitcomp "--git-format"
2508
+ ;;
2509
+ migrate,--*)
2510
+ __gitcomp "
2511
+ --config-dir= --ignore-paths= --minimize
2512
+ --no-auth-cache --username=
2513
+ "
2514
+ ;;
2515
+ reset,--*)
2516
+ __gitcomp "--revision= --parent"
2517
+ ;;
2518
+ *)
2519
+ ;;
2520
+ esac
2521
+ fi
2447
2522
  }
2448
2523
 
2449
2524
  _git_tag ()
2450
2525
  {
2451
- local i c=1 f=0
2452
- while [ $c -lt $cword ]; do
2453
- i="${words[c]}"
2454
- case "$i" in
2455
- -d|-v)
2456
- __gitcomp_nl "$(__git_tags)"
2457
- return
2458
- ;;
2459
- -f)
2460
- f=1
2461
- ;;
2462
- esac
2463
- ((c++))
2464
- done
2465
-
2466
- case "$prev" in
2467
- -m|-F)
2468
- ;;
2469
- -*|tag)
2470
- if [ $f = 1 ]; then
2471
- __gitcomp_nl "$(__git_tags)"
2472
- fi
2473
- ;;
2474
- *)
2475
- __gitcomp_nl "$(__git_refs)"
2476
- ;;
2477
- esac
2526
+ local i c=1 f=0
2527
+ while [ $c -lt $cword ]; do
2528
+ i="${words[c]}"
2529
+ case "$i" in
2530
+ -d|-v)
2531
+ __gitcomp_nl "$(__git_tags)"
2532
+ return
2533
+ ;;
2534
+ -f)
2535
+ f=1
2536
+ ;;
2537
+ esac
2538
+ ((c++))
2539
+ done
2540
+
2541
+ case "$prev" in
2542
+ -m|-F)
2543
+ ;;
2544
+ -*|tag)
2545
+ if [ $f = 1 ]; then
2546
+ __gitcomp_nl "$(__git_tags)"
2547
+ fi
2548
+ ;;
2549
+ *)
2550
+ __gitcomp_nl "$(__git_refs)"
2551
+ ;;
2552
+ esac
2553
+
2554
+ case "$cur" in
2555
+ --*)
2556
+ __gitcomp "
2557
+ --list --delete --verify --annotate --message --file
2558
+ --sign --cleanup --local-user --force --column --sort
2559
+ --contains --points-at
2560
+ "
2561
+ ;;
2562
+ esac
2478
2563
  }
2479
2564
 
2480
2565
  _git_whatchanged ()
2481
2566
  {
2482
- _git_log
2567
+ _git_log
2483
2568
  }
2484
2569
 
2485
2570
  __git_main ()
2486
2571
  {
2487
- local i c=1 command __git_dir
2488
-
2489
- while [ $c -lt $cword ]; do
2490
- i="${words[c]}"
2491
- case "$i" in
2492
- --git-dir=*) __git_dir="${i#--git-dir=}" ;;
2493
- --git-dir) ((c++)) ; __git_dir="${words[c]}" ;;
2494
- --bare) __git_dir="." ;;
2495
- --help) command="help"; break ;;
2496
- -c|--work-tree|--namespace) ((c++)) ;;
2497
- -*) ;;
2498
- *) command="$i"; break ;;
2499
- esac
2500
- ((c++))
2501
- done
2502
-
2503
- if [ -z "$command" ]; then
2504
- case "$cur" in
2505
- --*) __gitcomp "
2506
- --paginate
2507
- --no-pager
2508
- --git-dir=
2509
- --bare
2510
- --version
2511
- --exec-path
2512
- --exec-path=
2513
- --html-path
2514
- --man-path
2515
- --info-path
2516
- --work-tree=
2517
- --namespace=
2518
- --no-replace-objects
2519
- --help
2520
- "
2521
- ;;
2522
- *) __git_compute_porcelain_commands
2523
- __gitcomp "$__git_porcelain_commands $(__git_aliases)" ;;
2524
- esac
2525
- return
2526
- fi
2527
-
2528
- local completion_func="_git_${command//-/_}"
2529
- declare -f $completion_func >/dev/null && $completion_func && return
2530
-
2531
- local expansion=$(__git_aliased_command "$command")
2532
- if [ -n "$expansion" ]; then
2533
- completion_func="_git_${expansion//-/_}"
2534
- declare -f $completion_func >/dev/null && $completion_func
2535
- fi
2572
+ local i c=1 command __git_dir
2573
+
2574
+ while [ $c -lt $cword ]; do
2575
+ i="${words[c]}"
2576
+ case "$i" in
2577
+ --git-dir=*) __git_dir="${i#--git-dir=}" ;;
2578
+ --git-dir) ((c++)) ; __git_dir="${words[c]}" ;;
2579
+ --bare) __git_dir="." ;;
2580
+ --help) command="help"; break ;;
2581
+ -c|--work-tree|--namespace) ((c++)) ;;
2582
+ -*) ;;
2583
+ *) command="$i"; break ;;
2584
+ esac
2585
+ ((c++))
2586
+ done
2587
+
2588
+ if [ -z "$command" ]; then
2589
+ case "$cur" in
2590
+ --*) __gitcomp "
2591
+ --paginate
2592
+ --no-pager
2593
+ --git-dir=
2594
+ --bare
2595
+ --version
2596
+ --exec-path
2597
+ --exec-path=
2598
+ --html-path
2599
+ --man-path
2600
+ --info-path
2601
+ --work-tree=
2602
+ --namespace=
2603
+ --no-replace-objects
2604
+ --help
2605
+ "
2606
+ ;;
2607
+ *) __git_compute_porcelain_commands
2608
+ __gitcomp "$__git_porcelain_commands $(__git_aliases)" ;;
2609
+ esac
2610
+ return
2611
+ fi
2612
+
2613
+ local completion_func="_git_${command//-/_}"
2614
+ declare -f $completion_func >/dev/null && $completion_func && return
2615
+
2616
+ local expansion=$(__git_aliased_command "$command")
2617
+ if [ -n "$expansion" ]; then
2618
+ words[1]=$expansion
2619
+ completion_func="_git_${expansion//-/_}"
2620
+ declare -f $completion_func >/dev/null && $completion_func
2621
+ fi
2536
2622
  }
2537
2623
 
2538
2624
  __gitk_main ()
2539
2625
  {
2540
- __git_has_doubledash && return
2541
-
2542
- local g="$(__gitdir)"
2543
- local merge=""
2544
- if [ -f "$g/MERGE_HEAD" ]; then
2545
- merge="--merge"
2546
- fi
2547
- case "$cur" in
2548
- --*)
2549
- __gitcomp "
2550
- $__git_log_common_options
2551
- $__git_log_gitk_options
2552
- $merge
2553
- "
2554
- return
2555
- ;;
2556
- esac
2557
- __git_complete_revlist
2626
+ __git_has_doubledash && return
2627
+
2628
+ local g="$(__gitdir)"
2629
+ local merge=""
2630
+ if [ -f "$g/MERGE_HEAD" ]; then
2631
+ merge="--merge"
2632
+ fi
2633
+ case "$cur" in
2634
+ --*)
2635
+ __gitcomp "
2636
+ $__git_log_common_options
2637
+ $__git_log_gitk_options
2638
+ $merge
2639
+ "
2640
+ return
2641
+ ;;
2642
+ esac
2643
+ __git_complete_revlist
2558
2644
  }
2559
2645
 
2560
2646
  if [[ -n ${ZSH_VERSION-} ]]; then
2561
- echo "WARNING: this script is deprecated, please see git-completion.zsh" 1>&2
2562
-
2563
- autoload -U +X compinit && compinit
2564
-
2565
- __gitcomp ()
2566
- {
2567
- emulate -L zsh
2568
-
2569
- local cur_="${3-$cur}"
2570
-
2571
- case "$cur_" in
2572
- --*=)
2573
- ;;
2574
- *)
2575
- local c IFS=$' \t\n'
2576
- local -a array
2577
- for c in ${=1}; do
2578
- c="$c${4-}"
2579
- case $c in
2580
- --*=*|*.) ;;
2581
- *) c="$c " ;;
2582
- esac
2583
- array[$#array+1]="$c"
2584
- done
2585
- compset -P '*[=:]'
2586
- compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
2587
- ;;
2588
- esac
2589
- }
2590
-
2591
- __gitcomp_nl ()
2592
- {
2593
- emulate -L zsh
2594
-
2595
- local IFS=$'\n'
2596
- compset -P '*[=:]'
2597
- compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0
2598
- }
2599
-
2600
- __gitcomp_file ()
2601
- {
2602
- emulate -L zsh
2603
-
2604
- local IFS=$'\n'
2605
- compset -P '*[=:]'
2606
- compadd -Q -p "${2-}" -f -- ${=1} && _ret=0
2607
- }
2608
-
2609
- _git ()
2610
- {
2611
- local _ret=1 cur cword prev
2612
- cur=${words[CURRENT]}
2613
- prev=${words[CURRENT-1]}
2614
- let cword=CURRENT-1
2615
- emulate ksh -c __${service}_main
2616
- let _ret && _default && _ret=0
2617
- return _ret
2618
- }
2619
-
2620
- compdef _git git gitk
2621
- return
2647
+ echo "WARNING: this script is deprecated, please see git-completion.zsh" 1>&2
2648
+
2649
+ autoload -U +X compinit && compinit
2650
+
2651
+ __gitcomp ()
2652
+ {
2653
+ emulate -L zsh
2654
+
2655
+ local cur_="${3-$cur}"
2656
+
2657
+ case "$cur_" in
2658
+ --*=)
2659
+ ;;
2660
+ *)
2661
+ local c IFS=$' \t\n'
2662
+ local -a array
2663
+ for c in ${=1}; do
2664
+ c="$c${4-}"
2665
+ case $c in
2666
+ --*=*|*.) ;;
2667
+ *) c="$c " ;;
2668
+ esac
2669
+ array[${#array[@]}+1]="$c"
2670
+ done
2671
+ compset -P '*[=:]'
2672
+ compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
2673
+ ;;
2674
+ esac
2675
+ }
2676
+
2677
+ __gitcomp_nl ()
2678
+ {
2679
+ emulate -L zsh
2680
+
2681
+ local IFS=$'\n'
2682
+ compset -P '*[=:]'
2683
+ compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0
2684
+ }
2685
+
2686
+ __gitcomp_file ()
2687
+ {
2688
+ emulate -L zsh
2689
+
2690
+ local IFS=$'\n'
2691
+ compset -P '*[=:]'
2692
+ compadd -Q -p "${2-}" -f -- ${=1} && _ret=0
2693
+ }
2694
+
2695
+ _git ()
2696
+ {
2697
+ local _ret=1 cur cword prev
2698
+ cur=${words[CURRENT]}
2699
+ prev=${words[CURRENT-1]}
2700
+ let cword=CURRENT-1
2701
+ emulate ksh -c __${service}_main
2702
+ let _ret && _default && _ret=0
2703
+ return _ret
2704
+ }
2705
+
2706
+ compdef _git git gitk
2707
+ return
2622
2708
  fi
2623
2709
 
2624
2710
  __git_func_wrap ()
2625
2711
  {
2626
- local cur words cword prev
2627
- _get_comp_words_by_ref -n =: cur words cword prev
2628
- $1
2712
+ local cur words cword prev
2713
+ _get_comp_words_by_ref -n =: cur words cword prev
2714
+ $1
2629
2715
  }
2630
2716
 
2631
2717
  # Setup completion for certain functions defined above by setting common
@@ -2633,22 +2719,22 @@ __git_func_wrap ()
2633
2719
  # This is NOT a public function; use at your own risk.
2634
2720
  __git_complete ()
2635
2721
  {
2636
- local wrapper="__git_wrap${2}"
2637
- eval "$wrapper () { __git_func_wrap $2 ; }"
2638
- complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
2639
- || complete -o default -o nospace -F $wrapper $1
2722
+ local wrapper="__git_wrap${2}"
2723
+ eval "$wrapper () { __git_func_wrap $2 ; }"
2724
+ complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
2725
+ || complete -o default -o nospace -F $wrapper $1
2640
2726
  }
2641
2727
 
2642
2728
  # wrapper for backwards compatibility
2643
2729
  _git ()
2644
2730
  {
2645
- __git_wrap__git_main
2731
+ __git_wrap__git_main
2646
2732
  }
2647
2733
 
2648
2734
  # wrapper for backwards compatibility
2649
2735
  _gitk ()
2650
2736
  {
2651
- __git_wrap__gitk_main
2737
+ __git_wrap__gitk_main
2652
2738
  }
2653
2739
 
2654
2740
  __git_complete git __git_main