2 # bash completion support for core Git.
4 # Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
5 # Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
6 # Distributed under the GNU General Public License, version 2.0.
8 # The contained completion routines provide support for completing:
10 # *) local and remote branch names
11 # *) local and remote tag names
12 # *) .git/remotes file names
13 # *) git 'subcommands'
14 # *) tree paths within 'ref:path/to/file' expressions
15 # *) common --long-options
17 # To use these routines:
19 # 1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
20 # 2) Added the following line to your .bashrc:
21 # source ~/.git-completion.sh
23 # 3) You may want to make sure the git executable is available
24 # in your PATH before this script is sourced, as some caching
25 # is performed while the script loads. If git isn't found
26 # at source time then all lookups will be done on demand,
27 # which may be slightly slower.
29 # 4) Consider changing your PS1 to also show the current branch:
30 # PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
32 # The argument to __git_ps1 will be displayed only if you
33 # are currently in a git repository. The %s token will be
34 # the name of the current branch.
38 # *) Read Documentation/SubmittingPatches
39 # *) Send all patches to the current maintainer:
41 # "Shawn O. Pearce" <spearce@spearce.org>
43 # *) Always CC the Git mailing list:
51 if [ -n "$__git_dir" ]; then
53 elif [ -d .git
]; then
56 git rev-parse
--git-dir 2>/dev
/null
58 elif [ -d "$1/.git" ]; then
67 local b
="$(git symbolic-ref HEAD 2>/dev/null)"
70 printf "$1" "${b##refs/heads/}"
72 printf " (%s)" "${b##refs/heads/}"
79 local all c s
=$
'\n' IFS
=' '$
'\t'$
'\n'
80 local cur
="${COMP_WORDS[COMP_CWORD]}"
86 --*=*) all
="$all$c$4$s" ;;
87 *.
) all
="$all$c$4$s" ;;
88 *) all
="$all$c$4 $s" ;;
92 COMPREPLY
=($
(compgen
-P "$2" -W "$all" -- "$cur"))
98 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
99 if [ -d "$dir" ]; then
100 for i
in $
(git
--git-dir="$dir" \
101 for-each-ref
--format='%(refname)' \
103 echo "${i#refs/heads/}"
107 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
108 case "$is_hash,$i" in
111 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
112 n
,*) is_hash
=y
; echo "$i" ;;
119 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
120 if [ -d "$dir" ]; then
121 for i
in $
(git
--git-dir="$dir" \
122 for-each-ref
--format='%(refname)' \
124 echo "${i#refs/tags/}"
128 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
129 case "$is_hash,$i" in
132 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
133 n
,*) is_hash
=y
; echo "$i" ;;
140 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
141 if [ -d "$dir" ]; then
142 if [ -e "$dir/HEAD" ]; then echo HEAD
; fi
143 for i
in $
(git
--git-dir="$dir" \
144 for-each-ref
--format='%(refname)' \
145 refs
/tags refs
/heads refs
/remotes
); do
147 refs
/tags
/*) echo "${i#refs/tags/}" ;;
148 refs
/heads
/*) echo "${i#refs/heads/}" ;;
149 refs
/remotes
/*) echo "${i#refs/remotes/}" ;;
155 for i
in $
(git-ls-remote
"$dir" 2>/dev
/null
); do
156 case "$is_hash,$i" in
159 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
160 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
161 n
,refs
/remotes
/*) is_hash
=y
; echo "${i#refs/remotes/}" ;;
162 n
,*) is_hash
=y
; echo "$i" ;;
170 for i
in $
(__git_refs
"$1"); do
175 __git_refs_remotes
()
177 local cmd i is_hash
=y
178 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
179 case "$is_hash,$i" in
182 echo "$i:refs/remotes/$1/${i#refs/heads/}"
186 n
,refs
/tags
/*) is_hash
=y
;;
194 local i ngoff IFS
=$
'\n' d
="$(__gitdir)"
195 shopt -q nullglob || ngoff
=1
197 for i
in "$d/remotes"/*; do
198 echo ${i#$d/remotes/}
200 [ "$ngoff" ] && shopt -u nullglob
201 for i
in $
(git
--git-dir="$d" config
--list); do
211 __git_merge_strategies
()
213 if [ -n "$__git_merge_strategylist" ]; then
214 echo "$__git_merge_strategylist"
217 sed -n "/^all_strategies='/{
218 s/^all_strategies='//
222 }" "$(git --exec-path)/git-merge"
224 __git_merge_strategylist
=
225 __git_merge_strategylist
="$(__git_merge_strategies 2>/dev/null)"
227 __git_complete_file
()
229 local pfx
ls ref cur
="${COMP_WORDS[COMP_CWORD]}"
245 COMPREPLY
=($
(compgen
-P "$pfx" \
246 -W "$(git --git-dir="$
(__gitdir
)" ls-tree "$ls" \
247 | sed '/^100... blob /s,^.* ,,
256 __gitcomp
"$(__git_refs)"
261 __git_complete_revlist
()
263 local pfx cur
="${COMP_WORDS[COMP_CWORD]}"
268 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
273 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
279 __gitcomp
"$(__git_refs)"
286 if [ -n "$__git_commandlist" ]; then
287 echo "$__git_commandlist"
291 for i
in $
(git
help -a|
egrep '^ ')
294 add--interactive
) : plumbing
;;
295 applymbox
) : ask gittus
;;
296 applypatch
) : ask gittus
;;
297 archimport
) : import
;;
298 cat-file
) : plumbing
;;
299 check-attr
) : plumbing
;;
300 check-ref-format
) : plumbing
;;
301 commit-tree
) : plumbing
;;
302 convert-objects
) : plumbing
;;
303 cvsexportcommit
) : export;;
304 cvsimport
) : import
;;
305 cvsserver
) : daemon
;;
307 diff-files
) : plumbing
;;
308 diff-index
) : plumbing
;;
309 diff-tree
) : plumbing
;;
310 fast-import
) : import
;;
311 fsck-objects
) : plumbing
;;
312 fetch--tool
) : plumbing
;;
313 fetch-pack
) : plumbing
;;
314 fmt-merge-msg
) : plumbing
;;
315 for-each-ref
) : plumbing
;;
316 hash-object
) : plumbing
;;
317 http-
*) : transport
;;
318 index-pack
) : plumbing
;;
319 init-db
) : deprecated
;;
320 local-fetch
) : plumbing
;;
321 mailinfo
) : plumbing
;;
322 mailsplit
) : plumbing
;;
323 merge-
*) : plumbing
;;
326 pack-objects
) : plumbing
;;
327 pack-redundant
) : plumbing
;;
328 pack-refs
) : plumbing
;;
329 parse-remote
) : plumbing
;;
330 patch-id
) : plumbing
;;
331 peek-remote
) : plumbing
;;
333 prune-packed
) : plumbing
;;
334 quiltimport
) : import
;;
335 read-tree
) : plumbing
;;
336 receive-pack
) : plumbing
;;
338 repo-config
) : plumbing
;;
340 rev-list
) : plumbing
;;
341 rev-parse
) : plumbing
;;
342 runstatus
) : plumbing
;;
343 sh-setup
) : internal
;;
345 send-pack
) : plumbing
;;
346 show-index
) : plumbing
;;
348 stripspace
) : plumbing
;;
349 svn
) : import
export;;
350 svnimport
) : import
;;
351 symbolic-ref
) : plumbing
;;
352 tar-tree
) : deprecated
;;
353 unpack-file
) : plumbing
;;
354 unpack-objects
) : plumbing
;;
355 update-index
) : plumbing
;;
356 update-ref
) : plumbing
;;
357 update-server-info
) : daemon
;;
358 upload-archive
) : plumbing
;;
359 upload-pack
) : plumbing
;;
360 write-tree
) : plumbing
;;
361 verify-tag
) : plumbing
;;
367 __git_commandlist
="$(__git_commands 2>/dev/null)"
372 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
382 __git_aliased_command
()
384 local word cmdline
=$
(git
--git-dir="$(__gitdir)" \
385 config
--get "alias.$1")
386 for word
in $cmdline; do
387 if [ "${word##-*}" ]; then
394 __git_whitespacelist
="nowarn warn error error-all strip"
398 local cur
="${COMP_WORDS[COMP_CWORD]}"
399 if [ -d .dotest
]; then
400 __gitcomp
"--skip --resolved"
405 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
410 --signoff --utf8 --binary --3way --interactive
420 local cur
="${COMP_WORDS[COMP_CWORD]}"
423 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
428 --stat --numstat --summary --check --index
429 --cached --index-info --reverse --reject --unidiff-zero
430 --apply --no-add --exclude=
431 --whitespace= --inaccurate-eof --verbose
440 local cur
="${COMP_WORDS[COMP_CWORD]}"
443 __gitcomp
"--interactive --refresh"
452 while [ $c -lt $COMP_CWORD ]; do
455 start|bad|good|
reset|visualize|replay|log
)
463 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
464 __gitcomp
"start bad good reset visualize replay log"
470 __gitcomp
"$(__git_refs)"
480 __gitcomp
"$(__git_refs)"
485 local mycword
="$COMP_CWORD"
486 case "${COMP_WORDS[0]}" in
488 local cmd
="${COMP_WORDS[2]}"
489 mycword
="$((mycword-1))"
492 local cmd
="${COMP_WORDS[1]}"
497 __gitcomp
"create list-heads verify unbundle"
505 __git_complete_revlist
514 __gitcomp
"$(__git_refs)"
519 __gitcomp
"$(__git_refs)"
524 local cur
="${COMP_WORDS[COMP_CWORD]}"
527 __gitcomp
"--edit --no-commit"
530 __gitcomp
"$(__git_refs)"
537 local cur
="${COMP_WORDS[COMP_CWORD]}"
541 --all --author= --signoff --verify --no-verify
542 --edit --amend --include --only
551 __gitcomp
"$(__git_refs)"
561 __gitcomp
"$(__git_refs)"
566 local cur
="${COMP_WORDS[COMP_CWORD]}"
568 case "${COMP_WORDS[0]},$COMP_CWORD" in
570 __gitcomp
"$(__git_remotes)"
573 __gitcomp
"$(__git_remotes)"
578 __gitcomp
"$(__git_refs)" "" "${cur#*:}"
582 case "${COMP_WORDS[0]}" in
583 git-fetch
) remote
="${COMP_WORDS[1]}" ;;
584 git
) remote
="${COMP_WORDS[2]}" ;;
586 __gitcomp
"$(__git_refs2 "$remote")"
595 local cur
="${COMP_WORDS[COMP_CWORD]}"
599 --stdout --attach --thread
601 --numbered --start-number
606 --full-index --binary
612 __git_complete_revlist
617 local cur
="${COMP_WORDS[COMP_CWORD]}"
620 __gitcomp
"--prune --aggressive"
629 __gitcomp
"$(__git_remotes)"
639 local cur
="${COMP_WORDS[COMP_CWORD]}"
643 oneline short medium full fuller email raw
644 " "" "${cur##--pretty=}"
649 relative iso8601 rfc2822 short local default
650 " "" "${cur##--date=}"
655 --max-count= --max-age= --since= --after=
656 --min-age= --before= --until=
657 --root --topo-order --date-order --reverse
659 --abbrev-commit --abbrev=
660 --relative-date --date=
661 --author= --committer= --grep=
663 --pretty= --name-status --name-only --raw
665 --left-right --cherry-pick
670 __git_complete_revlist
675 local cur
="${COMP_WORDS[COMP_CWORD]}"
676 case "${COMP_WORDS[COMP_CWORD-1]}" in
678 __gitcomp
"$(__git_merge_strategies)"
683 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
688 --no-commit --no-summary --squash --strategy
692 __gitcomp
"$(__git_refs)"
697 __gitcomp
"$(__git_refs)"
702 __gitcomp
"--tags --all --stdin"
707 local cur
="${COMP_WORDS[COMP_CWORD]}"
709 case "${COMP_WORDS[0]},$COMP_CWORD" in
711 __gitcomp
"$(__git_remotes)"
714 __gitcomp
"$(__git_remotes)"
718 case "${COMP_WORDS[0]}" in
719 git-pull
) remote
="${COMP_WORDS[1]}" ;;
720 git
) remote
="${COMP_WORDS[2]}" ;;
722 __gitcomp
"$(__git_refs "$remote")"
729 local cur
="${COMP_WORDS[COMP_CWORD]}"
731 case "${COMP_WORDS[0]},$COMP_CWORD" in
733 __gitcomp
"$(__git_remotes)"
736 __gitcomp
"$(__git_remotes)"
742 case "${COMP_WORDS[0]}" in
743 git-push
) remote
="${COMP_WORDS[1]}" ;;
744 git
) remote
="${COMP_WORDS[2]}" ;;
746 __gitcomp
"$(__git_refs "$remote")" "" "${cur#*:}"
749 __gitcomp
"$(__git_refs)" + "${cur#+}"
752 __gitcomp
"$(__git_refs)"
761 local cur
="${COMP_WORDS[COMP_CWORD]}"
762 if [ -d .dotest
] ||
[ -d .git
/.dotest-merge
]; then
763 __gitcomp
"--continue --skip --abort"
766 case "${COMP_WORDS[COMP_CWORD-1]}" in
768 __gitcomp
"$(__git_merge_strategies)"
773 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
777 __gitcomp
"--onto --merge --strategy"
780 __gitcomp
"$(__git_refs)"
785 local cur
="${COMP_WORDS[COMP_CWORD]}"
786 local prv
="${COMP_WORDS[COMP_CWORD-1]}"
789 __gitcomp
"$(__git_remotes)"
793 __gitcomp
"$(__git_refs)"
797 local remote
="${prv#remote.}"
798 remote
="${remote%.fetch}"
799 __gitcomp
"$(__git_refs_remotes "$remote")"
803 local remote
="${prv#remote.}"
804 remote
="${remote%.push}"
805 __gitcomp
"$(git --git-dir="$
(__gitdir
)" \
806 for-each-ref --format='%(refname):%(refname)' \
810 pull.twohead|pull.octopus
)
811 __gitcomp
"$(__git_merge_strategies)"
814 color.branch|color.
diff|color.status
)
815 __gitcomp
"always never auto"
820 black red green yellow blue magenta cyan white
821 bold dim ul blink reverse
833 --global --system --file=
835 --get --get-all --get-regexp
836 --add --unset --unset-all
837 --remove-section --rename-section
842 local pfx
="${cur%.*}."
844 __gitcomp
"remote merge" "$pfx" "$cur"
848 local pfx
="${cur%.*}."
850 __gitcomp
"$(__git_heads)" "$pfx" "$cur" "."
854 local pfx
="${cur%.*}."
857 url fetch push skipDefaultUpdate
858 receivepack uploadpack tagopt
863 local pfx
="${cur%.*}."
865 __gitcomp
"$(__git_remotes)" "$pfx" "$cur" "."
874 core.preferSymlinkRefs
875 core.logAllRefUpdates
876 core.loosecompression
877 core.repositoryFormatVersion
878 core.sharedRepository
879 core.warnAmbiguousRefs
882 core.packedGitWindowSize
897 color.diff.whitespace
903 color.status.untracked
912 gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dvpass
915 gc.reflogexpireunreachable
928 i18n.logOutputEncoding
941 repack.useDeltaBaseOffset
947 receive.denyNonFastForwards
959 while [ $c -lt $COMP_CWORD ]; do
962 add|show|prune|update
) command="$i"; break ;;
967 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
968 __gitcomp
"add show prune update"
974 __gitcomp
"$(__git_remotes)"
977 local i c
='' IFS
=$
'\n'
978 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
996 local cur
="${COMP_WORDS[COMP_CWORD]}"
999 __gitcomp
"--mixed --hard --soft"
1003 __gitcomp
"$(__git_refs)"
1008 local cur
="${COMP_WORDS[COMP_CWORD]}"
1012 --max-count= --max-age= --since= --after=
1013 --min-age= --before= --until=
1015 --author= --committer= --grep=
1018 --numbered --summary
1023 __git_complete_revlist
1028 local cur
="${COMP_WORDS[COMP_CWORD]}"
1032 oneline short medium full fuller email raw
1033 " "" "${cur##--pretty=}"
1037 __gitcomp
"--pretty="
1046 __gitcomp
'list show apply clear'
1052 while [ $c -lt $COMP_CWORD ]; do
1053 i
="${COMP_WORDS[c]}"
1055 add|status|init|update
) command="$i"; break ;;
1060 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1061 local cur
="${COMP_WORDS[COMP_CWORD]}"
1064 __gitcomp
"--quiet --cached"
1067 __gitcomp
"add status init update"
1077 while [ $c -lt $COMP_CWORD ]; do
1078 i
="${COMP_WORDS[c]}"
1081 __gitcomp
"$(__git_tags)"
1091 case "${COMP_WORDS[COMP_CWORD-1]}" in
1097 __gitcomp
"$(__git_tags)"
1103 __gitcomp
"$(__git_refs)"
1110 local i c
=1 command __git_dir
1112 while [ $c -lt $COMP_CWORD ]; do
1113 i
="${COMP_WORDS[c]}"
1115 --git-dir=*) __git_dir
="${i#--git-dir=}" ;;
1116 --bare) __git_dir
="." ;;
1117 --version|
--help|
-p|
--paginate) ;;
1118 *) command="$i"; break ;;
1123 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1124 case "${COMP_WORDS[COMP_CWORD]}" in
1125 --*=*) COMPREPLY
=() ;;
1134 *) __gitcomp
"$(__git_commands) $(__git_aliases)" ;;
1139 local expansion
=$
(__git_aliased_command
"$command")
1140 [ "$expansion" ] && command="$expansion"
1145 apply
) _git_apply
;;
1146 bisect
) _git_bisect
;;
1147 bundle
) _git_bundle
;;
1148 branch
) _git_branch
;;
1149 checkout
) _git_checkout
;;
1150 cherry
) _git_cherry
;;
1151 cherry-pick
) _git_cherry_pick
;;
1152 commit
) _git_commit
;;
1153 config
) _git_config
;;
1154 describe
) _git_describe
;;
1156 fetch
) _git_fetch
;;
1157 format-patch
) _git_format_patch
;;
1160 ls-remote
) _git_ls_remote
;;
1161 ls-tree
) _git_ls_tree
;;
1163 merge-base
) _git_merge_base
;;
1164 name-rev
) _git_name_rev
;;
1167 rebase
) _git_rebase
;;
1168 remote
) _git_remote
;;
1169 reset) _git_reset
;;
1170 shortlog
) _git_shortlog
;;
1172 show-branch
) _git_log
;;
1173 stash
) _git_stash
;;
1174 submodule
) _git_submodule
;;
1176 whatchanged
) _git_log
;;
1183 local cur
="${COMP_WORDS[COMP_CWORD]}"
1186 __gitcomp
"--not --all"
1190 __git_complete_revlist
1193 complete
-o default
-o nospace
-F _git git
1194 complete
-o default
-o nospace
-F _gitk gitk
1195 complete
-o default
-o nospace
-F _git_am git-am
1196 complete
-o default
-o nospace
-F _git_apply git-apply
1197 complete
-o default
-o nospace
-F _git_bisect git-bisect
1198 complete
-o default
-o nospace
-F _git_branch git-branch
1199 complete
-o default
-o nospace
-F _git_bundle git-bundle
1200 complete
-o default
-o nospace
-F _git_checkout git-checkout
1201 complete
-o default
-o nospace
-F _git_cherry git-cherry
1202 complete
-o default
-o nospace
-F _git_cherry_pick git-cherry-pick
1203 complete
-o default
-o nospace
-F _git_commit git-commit
1204 complete
-o default
-o nospace
-F _git_describe git-describe
1205 complete
-o default
-o nospace
-F _git_diff git-diff
1206 complete
-o default
-o nospace
-F _git_fetch git-fetch
1207 complete
-o default
-o nospace
-F _git_format_patch git-format-patch
1208 complete
-o default
-o nospace
-F _git_gc git-gc
1209 complete
-o default
-o nospace
-F _git_log git-log
1210 complete
-o default
-o nospace
-F _git_ls_remote git-ls-remote
1211 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree
1212 complete
-o default
-o nospace
-F _git_merge git-merge
1213 complete
-o default
-o nospace
-F _git_merge_base git-merge-base
1214 complete
-o default
-o nospace
-F _git_name_rev git-name-rev
1215 complete
-o default
-o nospace
-F _git_pull git-pull
1216 complete
-o default
-o nospace
-F _git_push git-push
1217 complete
-o default
-o nospace
-F _git_rebase git-rebase
1218 complete
-o default
-o nospace
-F _git_config git-config
1219 complete
-o default
-o nospace
-F _git_remote git-remote
1220 complete
-o default
-o nospace
-F _git_reset git-reset
1221 complete
-o default
-o nospace
-F _git_shortlog git-shortlog
1222 complete
-o default
-o nospace
-F _git_show git-show
1223 complete
-o default
-o nospace
-F _git_stash git-stash
1224 complete
-o default
-o nospace
-F _git_submodule git-submodule
1225 complete
-o default
-o nospace
-F _git_log git-show-branch
1226 complete
-o default
-o nospace
-F _git_tag git-tag
1227 complete
-o default
-o nospace
-F _git_log git-whatchanged
1229 # The following are necessary only for Cygwin, and only are needed
1230 # when the user has tab-completed the executable name and consequently
1231 # included the '.exe' suffix.
1233 if [ Cygwin
= "$(uname -o 2>/dev/null)" ]; then
1234 complete
-o default
-o nospace
-F _git_add git-add.exe
1235 complete
-o default
-o nospace
-F _git_apply git-apply.exe
1236 complete
-o default
-o nospace
-F _git git.exe
1237 complete
-o default
-o nospace
-F _git_branch git-branch.exe
1238 complete
-o default
-o nospace
-F _git_bundle git-bundle.exe
1239 complete
-o default
-o nospace
-F _git_cherry git-cherry.exe
1240 complete
-o default
-o nospace
-F _git_describe git-describe.exe
1241 complete
-o default
-o nospace
-F _git_diff git-diff.exe
1242 complete
-o default
-o nospace
-F _git_format_patch git-format-patch.exe
1243 complete
-o default
-o nospace
-F _git_log git-log.exe
1244 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree.exe
1245 complete
-o default
-o nospace
-F _git_merge_base git-merge-base.exe
1246 complete
-o default
-o nospace
-F _git_name_rev git-name-rev.exe
1247 complete
-o default
-o nospace
-F _git_push git-push.exe
1248 complete
-o default
-o nospace
-F _git_config git-config
1249 complete
-o default
-o nospace
-F _git_shortlog git-shortlog.exe
1250 complete
-o default
-o nospace
-F _git_show git-show.exe
1251 complete
-o default
-o nospace
-F _git_log git-show-branch.exe
1252 complete
-o default
-o nospace
-F _git_tag git-tag.exe
1253 complete
-o default
-o nospace
-F _git_log git-whatchanged.exe