codelation-cli 0.0.18 → 0.0.19

Sign up to get free protection for your applications and to get access to all the features.
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