/
usr
/
share
/
bash-completion
/
completions
/
/usr/share/bash-completion/completions
mkdir
upload
Name
Size
Mode
Actions
2to3
908
0644
edit
dl
rm
7z
4220
0644
edit
dl
rm
7za
4220
0644
edit
dl
rm
a2x
895
0644
edit
dl
rm
abook
1211
0644
edit
dl
rm
aclocal
844
0644
edit
dl
rm
aclocal-1.10
844
0644
edit
dl
rm
aclocal-1.11
844
0644
edit
dl
rm
aclocal-1.12
844
0644
edit
dl
rm
aclocal-1.13
844
0644
edit
dl
rm
aclocal-1.14
844
0644
edit
dl
rm
aclocal-1.15
844
0644
edit
dl
rm
aclocal-1.16
844
0644
edit
dl
rm
acpi
452
0644
edit
dl
rm
addpart
447
0644
edit
dl
rm
add_members
761
0644
edit
dl
rm
alias
490
0644
edit
dl
rm
alpine
873
0644
edit
dl
rm
alternatives
2405
0644
edit
dl
rm
animate
8997
0644
edit
dl
rm
ant
2777
0644
edit
dl
rm
apache2ctl
380
0644
edit
dl
rm
appdata-validate
788
0644
edit
dl
rm
apropos
2865
0644
edit
dl
rm
apt
7108
0644
edit
dl
rm
apt-build
1459
0644
edit
dl
rm
apt-cache
2036
0644
edit
dl
rm
apt-get
3787
0644
edit
dl
rm
aptitude
3077
0644
edit
dl
rm
aptitude-curses
3077
0644
edit
dl
rm
arch
1078
0644
edit
dl
rm
arm-koji
6318
0644
edit
dl
rm
arp
1589
0644
edit
dl
rm
arping
599
0644
edit
dl
rm
arpspoof
564
0644
edit
dl
rm
asciidoc
1186
0644
edit
dl
rm
asciidoc.py
1186
0644
edit
dl
rm
aspell
3364
0644
edit
dl
rm
autoconf
947
0644
edit
dl
rm
autoheader
1009
0644
edit
dl
rm
automake
868
0644
edit
dl
rm
automake-1.10
868
0644
edit
dl
rm
automake-1.11
868
0644
edit
dl
rm
automake-1.12
868
0644
edit
dl
rm
automake-1.13
868
0644
edit
dl
rm
automake-1.14
868
0644
edit
dl
rm
automake-1.15
868
0644
edit
dl
rm
automake-1.16
868
0644
edit
dl
rm
autoreconf
1009
0644
edit
dl
rm
autorpm
348
0644
edit
dl
rm
autoscan
739
0644
edit
dl
rm
autossh
15911
0644
edit
dl
rm
autoupdate
739
0644
edit
dl
rm
avctrl
471
0644
edit
dl
rm
badblocks
595
0644
edit
dl
rm
bind
832
0644
edit
dl
rm
bk
429
0644
edit
dl
rm
blkdiscard
639
0644
edit
dl
rm
blkid
2116
0644
edit
dl
rm
blkzone
971
0644
edit
dl
rm
blockdev
725
0644
edit
dl
rm
bootctl
2914
0644
edit
dl
rm
brctl
1043
0644
edit
dl
rm
bsdtar
18916
0644
edit
dl
rm
btdownloadcurses.py
1058
0644
edit
dl
rm
btdownloadgui.py
1058
0644
edit
dl
rm
btdownloadheadless.py
1058
0644
edit
dl
rm
btrfs
3456
0644
edit
dl
rm
busctl
7350
0644
edit
dl
rm
bzip2
1082
0644
edit
dl
rm
c++
2646
0644
edit
dl
rm
cancel
555
0644
edit
dl
rm
cardctl
380
0644
edit
dl
rm
carton
1843
0644
edit
dl
rm
cc
2646
0644
edit
dl
rm
ccache
1014
0644
edit
dl
rm
ccze
1185
0644
edit
dl
rm
cdrecord
3572
0644
edit
dl
rm
cfagent
419
0644
edit
dl
rm
cfdisk
546
0644
edit
dl
rm
cfrun
1275
0644
edit
dl
rm
chage
651
0644
edit
dl
rm
change_pw
529
0644
edit
dl
rm
chcpu
1522
0644
edit
dl
rm
checksec
738
0644
edit
dl
rm
check_db
374
0644
edit
dl
rm
check_perms
319
0644
edit
dl
rm
chgrp
949
0644
edit
dl
rm
chkconfig
903
0644
edit
dl
rm
chmem
501
0644
edit
dl
rm
chmod
867
0644
edit
dl
rm
chown
1110
0644
edit
dl
rm
chpasswd
687
0644
edit
dl
rm
chrome
1400
0644
edit
dl
rm
chromium
1400
0644
edit
dl
rm
chromium-browser
1400
0644
edit
dl
rm
chronyc
1562
0644
edit
dl
rm
chrpath
528
0644
edit
dl
rm
chrt
920
0644
edit
dl
rm
ci
890
0644
edit
dl
rm
ciptool
9676
0644
edit
dl
rm
civclient
1040
0644
edit
dl
rm
civserver
473
0644
edit
dl
rm
cksfv
520
0644
edit
dl
rm
cleanarch
352
0644
edit
dl
rm
clisp
668
0644
edit
dl
rm
clone_member
540
0644
edit
dl
rm
cloud-init
3471
0644
edit
dl
rm
clzip
1126
0644
edit
dl
rm
co
890
0644
edit
dl
rm
colormake
6168
0644
edit
dl
rm
compare
8997
0644
edit
dl
rm
compgen
1467
0644
edit
dl
rm
complete
1467
0644
edit
dl
rm
composite
8997
0644
edit
dl
rm
configure
1184
0644
edit
dl
rm
config_list
580
0644
edit
dl
rm
conjure
8997
0644
edit
dl
rm
convert
8997
0644
edit
dl
rm
cowsay
543
0644
edit
dl
rm
cowthink
543
0644
edit
dl
rm
cpan2dist
1220
0644
edit
dl
rm
cpio
2915
0644
edit
dl
rm
cppcheck
2599
0644
edit
dl
rm
createdb
4286
0644
edit
dl
rm
createuser
4286
0644
edit
dl
rm
crontab
1185
0644
edit
dl
rm
cryptdisks
1213
0644
edit
dl
rm
cryptsetup
2975
0644
edit
dl
rm
ctrlaltdel
335
0644
edit
dl
rm
curl
3149
0644
edit
dl
rm
cvs
11989
0644
edit
dl
rm
cvsps
1482
0644
edit
dl
rm
dcop
379
0644
edit
dl
rm
dd
1287
0644
edit
dl
rm
debconf
294
0644
edit
dl
rm
debconf-show
294
0644
edit
dl
rm
declare
1284
0644
edit
dl
rm
deja-dup
681
0644
edit
dl
rm
delpart
526
0644
edit
dl
rm
desktop-file-validate
472
0644
edit
dl
rm
dfutool
9676
0644
edit
dl
rm
dhclient
696
0644
edit
dl
rm
dict
1799
0644
edit
dl
rm
display
8997
0644
edit
dl
rm
dmesg
1182
0644
edit
dl
rm
dmypy
1072
0644
edit
dl
rm
dnssec-keygen
1159
0644
edit
dl
rm
dnsspoof
500
0644
edit
dl
rm
docker
16153
0644
edit
dl
rm
dot
1281
0644
edit
dl
rm
dpkg
4064
0644
edit
dl
rm
dpkg-deb
4064
0644
edit
dl
rm
dpkg-query
4064
0644
edit
dl
rm
dpkg-reconfigure
4064
0644
edit
dl
rm
dpkg-source
3331
0644
edit
dl
rm
dropdb
4286
0644
edit
dl
rm
dropuser
4286
0644
edit
dl
rm
dselect
615
0644
edit
dl
rm
dsniff
512
0644
edit
dl
rm
dumpdb
371
0644
edit
dl
rm
dumpe2fs
518
0644
edit
dl
rm
e2freefrag
458
0644
edit
dl
rm
e2label
292
0644
edit
dl
rm
eatmydata
31
0644
edit
dl
rm
ebtables
3616
0644
edit
dl
rm
ecryptfs-migrate-home
497
0644
edit
dl
rm
edquota
3662
0644
edit
dl
rm
eog
634
0644
edit
dl
rm
ether-wake
537
0644
edit
dl
rm
etherwake
537
0644
edit
dl
rm
ethtool
24023
0644
edit
dl
rm
evince
935
0644
edit
dl
rm
explodepkg
152
0644
edit
dl
rm
export
1600
0644
edit
dl
rm
f77
2646
0644
edit
dl
rm
f95
2646
0644
edit
dl
rm
faillog
629
0644
edit
dl
rm
fallocate
721
0644
edit
dl
rm
fbgs
1558
0644
edit
dl
rm
fbi
1813
0644
edit
dl
rm
fdformat
566
0644
edit
dl
rm
fdisk
1834
0644
edit
dl
rm
feh
4142
0644
edit
dl
rm
file
743
0644
edit
dl
rm
file-roller
1091
0644
edit
dl
rm
filebucket
9743
0644
edit
dl
rm
filefrag
350
0644
edit
dl
rm
filesnarf
447
0644
edit
dl
rm
fincore
916
0644
edit
dl
rm
find
3897
0644
edit
dl
rm
findfs
695
0644
edit
dl
rm
findmnt
3195
0644
edit
dl
rm
find_member
535
0644
edit
dl
rm
fio
2369
0644
edit
dl
rm
firefox
1163
0644
edit
dl
rm
flake8
987
0644
edit
dl
rm
flock
874
0644
edit
dl
rm
freebsd-update
587
0644
edit
dl
rm
freeciv
1040
0644
edit
dl
rm
freeciv-gtk2
1040
0644
edit
dl
rm
freeciv-gtk3
1040
0644
edit
dl
rm
freeciv-sdl
1040
0644
edit
dl
rm
freeciv-server
473
0644
edit
dl
rm
freeciv-xaw
1040
0644
edit
dl
rm
fsck
787
0644
edit
dl
rm
fsck.cramfs
684
0644
edit
dl
rm
fsck.minix
383
0644
edit
dl
rm
fsfreeze
524
0644
edit
dl
rm
fstrim
715
0644
edit
dl
rm
function
1284
0644
edit
dl
rm
fusermount
640
0644
edit
dl
rm
fwupdagent
598
0644
edit
dl
rm
fwupdmgr
3501
0644
edit
dl
rm
fwupdtool
2611
0644
edit
dl
rm
g++
2646
0644
edit
dl
rm
g++-5
2646
0644
edit
dl
rm
g++-6
2646
0644
edit
dl
rm
g++-7
2646
0644
edit
dl
rm
g++-8
2646
0644
edit
dl
rm
g4
1471
0644
edit
dl
rm
g77
2646
0644
edit
dl
rm
g95
2646
0644
edit
dl
rm
gapplication
1389
0644
edit
dl
rm
gcc
2646
0644
edit
dl
rm
gcc-5
2646
0644
edit
dl
rm
gcc-6
2646
0644
edit
dl
rm
gcc-7
2646
0644
edit
dl
rm
gcc-8
2646
0644
edit
dl
rm
gccgo
2646
0644
edit
dl
rm
gccgo-5
2646
0644
edit
dl
rm
gccgo-6
2646
0644
edit
dl
rm
gccgo-7
2646
0644
edit
dl
rm
gccgo-8
2646
0644
edit
dl
rm
gcj
2646
0644
edit
dl
rm
gcl
615
0644
edit
dl
rm
gdb
1635
0644
edit
dl
rm
gdbus
935
0644
edit
dl
rm
genaliases
322
0644
edit
dl
rm
gendiff
267
0644
edit
dl
rm
genisoimage
861
0644
edit
dl
rm
geoiplookup
677
0644
edit
dl
rm
geoiplookup6
677
0644
edit
dl
rm
getconf
798
0644
edit
dl
rm
getent
1967
0644
edit
dl
rm
getopt
815
0644
edit
dl
rm
gfortran
2646
0644
edit
dl
rm
gfortran-5
2646
0644
edit
dl
rm
gfortran-6
2646
0644
edit
dl
rm
gfortran-7
2646
0644
edit
dl
rm
gfortran-8
2646
0644
edit
dl
rm
gio
3753
0644
edit
dl
rm
git
70071
0644
edit
dl
rm
gitk
70071
0644
edit
dl
rm
gkrellm
915
0644
edit
dl
rm
gkrellm2
915
0644
edit
dl
rm
gm
854
0644
edit
dl
rm
gmake
6168
0644
edit
dl
rm
gmplayer
11284
0644
edit
dl
rm
gnatmake
1015
0644
edit
dl
rm
gnokii
6924
0644
edit
dl
rm
gnome-mplayer
940
0644
edit
dl
rm
gnome-screenshot
793
0644
edit
dl
rm
gnumake
6168
0644
edit
dl
rm
google-chrome
1400
0644
edit
dl
rm
google-chrome-stable
1400
0644
edit
dl
rm
gpasswd
598
0644
edit
dl
rm
gpc
2646
0644
edit
dl
rm
gpg
1273
0644
edit
dl
rm
gpg2
1336
0644
edit
dl
rm
gpgv
1114
0644
edit
dl
rm
gpgv2
1114
0644
edit
dl
rm
gphoto2
1395
0644
edit
dl
rm
gprof
1302
0644
edit
dl
rm
gresource
1356
0644
edit
dl
rm
groupadd
610
0644
edit
dl
rm
groupdel
536
0644
edit
dl
rm
groupmems
603
0644
edit
dl
rm
groupmod
681
0644
edit
dl
rm
growisofs
888
0644
edit
dl
rm
grpck
496
0644
edit
dl
rm
grub
10636
0644
edit
dl
rm
grub-bios-setup
10636
0644
edit
dl
rm
grub-editenv
10636
0644
edit
dl
rm
grub-install
10636
0644
edit
dl
rm
grub-mkconfig
10636
0644
edit
dl
rm
grub-mkfont
10636
0644
edit
dl
rm
grub-mkimage
10636
0644
edit
dl
rm
grub-mkpasswd-pbkdf2
10636
0644
edit
dl
rm
grub-mkrescue
10636
0644
edit
dl
rm
grub-probe
10636
0644
edit
dl
rm
grub-reboot
10636
0644
edit
dl
rm
grub-script-check
10636
0644
edit
dl
rm
grub-set-default
10636
0644
edit
dl
rm
gsettings
2829
0644
edit
dl
rm
gssdp-discover
866
0644
edit
dl
rm
gtar
18916
0644
edit
dl
rm
gzip
1168
0644
edit
dl
rm
hciattach
9676
0644
edit
dl
rm
hciconfig
9676
0644
edit
dl
rm
hcitool
9676
0644
edit
dl
rm
hd
669
0644
edit
dl
rm
hddtemp
871
0644
edit
dl
rm
hid2hci
348
0644
edit
dl
rm
host
2010
0644
edit
dl
rm
hostname
485
0644
edit
dl
rm
hostnamectl
2071
0644
edit
dl
rm
hping
786
0644
edit
dl
rm
hping2
786
0644
edit
dl
rm
hping3
786
0644
edit
dl
rm
htop
802
0644
edit
dl
rm
htpasswd
912
0644
edit
dl
rm
hunspell
1027
0644
edit
dl
rm
hwclock
960
0644
edit
dl
rm
iceweasel
1163
0644
edit
dl
rm
iconv
904
0644
edit
dl
rm
id
435
0644
edit
dl
rm
identify
8997
0644
edit
dl
rm
idn
657
0644
edit
dl
rm
ifdown
898
0644
edit
dl
rm
ifquery
898
0644
edit
dl
rm
ifstat
1973
0644
edit
dl
rm
ifstatus
898
0644
edit
dl
rm
iftop
504
0644
edit
dl
rm
ifup
898
0644
edit
dl
rm
import
8997
0644
edit
dl
rm
influx
824
0644
edit
dl
rm
info
1921
0644
edit
dl
rm
inject
508
0644
edit
dl
rm
inotifywait
1258
0644
edit
dl
rm
inotifywatch
1258
0644
edit
dl
rm
insmod
517
0644
edit
dl
rm
insmod.static
517
0644
edit
dl
rm
installpkg
733
0644
edit
dl
rm
interdiff
763
0644
edit
dl
rm
invoke-rc.d
1222
0644
edit
dl
rm
ionice
1161
0644
edit
dl
rm
ip
10501
0644
edit
dl
rm
ipcmk
576
0644
edit
dl
rm
ipcrm
1423
0644
edit
dl
rm
ipcs
514
0644
edit
dl
rm
iperf
2030
0644
edit
dl
rm
iperf3
2030
0644
edit
dl
rm
ipmitool
5744
0644
edit
dl
rm
ipsec
3179
0644
edit
dl
rm
iptables
1883
0644
edit
dl
rm
ipv6calc
1029
0644
edit
dl
rm
iscsiadm
1916
0644
edit
dl
rm
isort
1268
0644
edit
dl
rm
isosize
529
0644
edit
dl
rm
isql
352
0644
edit
dl
rm
iwconfig
2798
0644
edit
dl
rm
iwlist
613
0644
edit
dl
rm
iwpriv
735
0644
edit
dl
rm
iwspy
484
0644
edit
dl
rm
jar
499
0644
edit
dl
rm
jarsigner
1653
0644
edit
dl
rm
java
8915
0644
edit
dl
rm
javac
8915
0644
edit
dl
rm
javadoc
8915
0644
edit
dl
rm
javaws
770
0644
edit
dl
rm
journalctl
6014
0644
edit
dl
rm
jpegoptim
878
0644
edit
dl
rm
jps
595
0644
edit
dl
rm
jq
1202
0644
edit
dl
rm
jshint
886
0644
edit
dl
rm
jsonschema
635
0644
edit
dl
rm
json_xs
865
0644
edit
dl
rm
k3b
1153
0644
edit
dl
rm
kcov
1763
0644
edit
dl
rm
kernel-install
1679
0644
edit
dl
rm
kill
577
0644
edit
dl
rm
killall
774
0644
edit
dl
rm
kldload
475
0644
edit
dl
rm
kldunload
372
0644
edit
dl
rm
kmod
3235
0644
edit
dl
rm
koji
6318
0644
edit
dl
rm
kplayer
11284
0644
edit
dl
rm
ktutil
3000
0644
edit
dl
rm
l2ping
9676
0644
edit
dl
rm
larch
1981
0644
edit
dl
rm
last
949
0644
edit
dl
rm
lastlog
573
0644
edit
dl
rm
lbzip2
1082
0644
edit
dl
rm
ldapadd
4468
0644
edit
dl
rm
ldapcompare
4468
0644
edit
dl
rm
ldapdelete
4468
0644
edit
dl
rm
ldapmodify
4468
0644
edit
dl
rm
ldapmodrdn
4468
0644
edit
dl
rm
ldappasswd
4468
0644
edit
dl
rm
ldapsearch
4468
0644
edit
dl
rm
ldapvi
1381
0644
edit
dl
rm
ldapwhoami
4468
0644
edit
dl
rm
ldattach
1472
0644
edit
dl
rm
lftp
683
0644
edit
dl
rm
lftpget
306
0644
edit
dl
rm
lilo
1186
0644
edit
dl
rm
links
3179
0644
edit
dl
rm
links2
3179
0644
edit
dl
rm
lintian
5375
0644
edit
dl
rm
lintian-info
5375
0644
edit
dl
rm
lisp
633
0644
edit
dl
rm
list_admins
385
0644
edit
dl
rm
list_lists
465
0644
edit
dl
rm
list_members
852
0644
edit
dl
rm
list_owners
411
0644
edit
dl
rm
locale-gen
710
0644
edit
dl
rm
localectl
3314
0644
edit
dl
rm
logger
1553
0644
edit
dl
rm
loginctl
4066
0644
edit
dl
rm
losetup
1738
0644
edit
dl
rm
lpq
594
0644
edit
dl
rm
lpr
904
0644
edit
dl
rm
lrzip
1117
0644
edit
dl
rm
lsblk
2030
0644
edit
dl
rm
lscpu
1066
0644
edit
dl
rm
lsipc
1310
0644
edit
dl
rm
lslocks
1084
0644
edit
dl
rm
lslogins
1726
0644
edit
dl
rm
lsmem
1069
0644
edit
dl
rm
lsns
1191
0644
edit
dl
rm
lsof
1385
0644
edit
dl
rm
lsscsi
583
0644
edit
dl
rm
lsusb
417
0644
edit
dl
rm
lua
430
0644
edit
dl
rm
luac
482
0644
edit
dl
rm
luseradd
1011
0644
edit
dl
rm
luserdel
475
0644
edit
dl
rm
lusermod
1011
0644
edit
dl
rm
lvchange
19356
0644
edit
dl
rm
lvcreate
19356
0644
edit
dl
rm
lvdisplay
19356
0644
edit
dl
rm
lvextend
19356
0644
edit
dl
rm
lvm
19356
0644
edit
dl
rm
lvmdiskscan
19356
0644
edit
dl
rm
lvreduce
19356
0644
edit
dl
rm
lvremove
19356
0644
edit
dl
rm
lvrename
19356
0644
edit
dl
rm
lvresize
19356
0644
edit
dl
rm
lvs
19356
0644
edit
dl
rm
lvscan
19356
0644
edit
dl
rm
lz4
1174
0644
edit
dl
rm
lz4c
1174
0644
edit
dl
rm
lzip
1126
0644
edit
dl
rm
lzma
926
0644
edit
dl
rm
lzop
1482
0644
edit
dl
rm
macof
425
0644
edit
dl
rm
mailmanctl
465
0644
edit
dl
rm
mailsnarf
447
0644
edit
dl
rm
make
6168
0644
edit
dl
rm
makepkg
1042
0644
edit
dl
rm
man
2865
0644
edit
dl
rm
mc
668
0644
edit
dl
rm
mcookie
599
0644
edit
dl
rm
mcrypt
1865
0644
edit
dl
rm
mdadm
4517
0644
edit
dl
rm
mdecrypt
1865
0644
edit
dl
rm
mdtool
2113
0644
edit
dl
rm
medusa
676
0644
edit
dl
rm
mencoder
11284
0644
edit
dl
rm
mesg
412
0644
edit
dl
rm
micropython
1762
0644
edit
dl
rm
mii-diag
651
0644
edit
dl
rm
mii-tool
849
0644
edit
dl
rm
minicom
1094
0644
edit
dl
rm
mkfs
638
0644
edit
dl
rm
mkfs.bfs
656
0644
edit
dl
rm
mkfs.cramfs
821
0644
edit
dl
rm
mkfs.minix
714
0644
edit
dl
rm
mkinitrd
1219
0644
edit
dl
rm
mkisofs
861
0644
edit
dl
rm
mkswap
841
0644
edit
dl
rm
mktemp
670
0644
edit
dl
rm
mmsitepass
328
0644
edit
dl
rm
modinfo
1231
0644
edit
dl
rm
modprobe
4061
0644
edit
dl
rm
mogrify
8997
0644
edit
dl
rm
mokutil
1189
0644
edit
dl
rm
monodevelop
442
0644
edit
dl
rm
montage
8997
0644
edit
dl
rm
more
528
0644
edit
dl
rm
mount
2100
0644
edit
dl
rm
mountpoint
487
0644
edit
dl
rm
mozilla-firefox
1163
0644
edit
dl
rm
mplayer
11284
0644
edit
dl
rm
mplayer2
11284
0644
edit
dl
rm
mr
2521
0644
edit
dl
rm
msgsnarf
447
0644
edit
dl
rm
msynctool
1337
0644
edit
dl
rm
mtr
1924
0644
edit
dl
rm
mtx
1180
0644
edit
dl
rm
munin-node-configure
752
0644
edit
dl
rm
munin-run
643
0644
edit
dl
rm
munin-update
652
0644
edit
dl
rm
munindoc
318
0644
edit
dl
rm
mussh
1179
0644
edit
dl
rm
mutt
4289
0644
edit
dl
rm
muttng
4289
0644
edit
dl
rm
mypy
1411
0644
edit
dl
rm
mysql
2613
0644
edit
dl
rm
mysqladmin
1726
0644
edit
dl
rm
namei
500
0644
edit
dl
rm
nc
1237
0644
edit
dl
rm
ncal
926
0644
edit
dl
rm
ncftp
621
0644
edit
dl
rm
nethogs
558
0644
edit
dl
rm
netplan
988
0644
edit
dl
rm
networkctl
2131
0644
edit
dl
rm
newlist
571
0644
edit
dl
rm
newusers
653
0644
edit
dl
rm
ngrep
837
0644
edit
dl
rm
nmap
1852
0644
edit
dl
rm
nproc
490
0644
edit
dl
rm
nsenter
1171
0644
edit
dl
rm
nslookup
2010
0644
edit
dl
rm
nsupdate
898
0644
edit
dl
rm
ntpdate
715
0644
edit
dl
rm
oggdec
861
0644
edit
dl
rm
op
1443
0644
edit
dl
rm
openssl
11450
0644
edit
dl
rm
opera
1384
0644
edit
dl
rm
optipng
1176
0644
edit
dl
rm
p4
1471
0644
edit
dl
rm
pack200
2209
0644
edit
dl
rm
partx
1266
0644
edit
dl
rm
passwd
539
0644
edit
dl
rm
patch
1762
0644
edit
dl
rm
pbzip2
1082
0644
edit
dl
rm
pccardctl
380
0644
edit
dl
rm
pdftotext
920
0644
edit
dl
rm
pdlzip
1126
0644
edit
dl
rm
perl
4295
0644
edit
dl
rm
perlcritic
1378
0644
edit
dl
rm
perldoc
4295
0644
edit
dl
rm
perltidy
1285
0644
edit
dl
rm
pgrep
1210
0644
edit
dl
rm
phing
2777
0644
edit
dl
rm
pidof
520
0644
edit
dl
rm
pigz
1168
0644
edit
dl
rm
pine
873
0644
edit
dl
rm
pinfo
1921
0644
edit
dl
rm
ping
2002
0644
edit
dl
rm
ping6
2002
0644
edit
dl
rm
pivot_root
387
0644
edit
dl
rm
pkcon
2737
0644
edit
dl
rm
pkg-config
1312
0644
edit
dl
rm
pkg-get
2129
0644
edit
dl
rm
pkgadd
1741
0644
edit
dl
rm
pkgrm
1070
0644
edit
dl
rm
pkgtool
846
0644
edit
dl
rm
pkgutil
4022
0644
edit
dl
rm
pkg_deinstall
460
0644
edit
dl
rm
pkg_delete
460
0644
edit
dl
rm
pkg_info
460
0644
edit
dl
rm
pkill
1210
0644
edit
dl
rm
plague-client
413
0644
edit
dl
rm
plzip
1126
0644
edit
dl
rm
pm-hibernate
319
0644
edit
dl
rm
pm-is-supported
334
0644
edit
dl
rm
pm-powersave
280
0644
edit
dl
rm
pm-suspend
319
0644
edit
dl
rm
pm-suspend-hybrid
319
0644
edit
dl
rm
pmake
6168
0644
edit
dl
rm
pngfix
809
0644
edit
dl
rm
portinstall
909
0644
edit
dl
rm
portsnap
493
0644
edit
dl
rm
portupgrade
477
0644
edit
dl
rm
postalias
962
0644
edit
dl
rm
postcat
880
0644
edit
dl
rm
postconf
809
0644
edit
dl
rm
postfix
813
0644
edit
dl
rm
postmap
962
0644
edit
dl
rm
postsuper
1567
0644
edit
dl
rm
povray
1974
0644
edit
dl
rm
ppc-koji
6318
0644
edit
dl
rm
prelink
911
0644
edit
dl
rm
prlimit
1329
0644
edit
dl
rm
protoc
1523
0644
edit
dl
rm
psql
4286
0644
edit
dl
rm
puppet
9743
0644
edit
dl
rm
puppetca
9743
0644
edit
dl
rm
puppetd
9743
0644
edit
dl
rm
puppetdoc
9743
0644
edit
dl
rm
puppetmasterd
9743
0644
edit
dl
rm
puppetqd
9743
0644
edit
dl
rm
puppetrun
9743
0644
edit
dl
rm
pv
721
0644
edit
dl
rm
pvchange
19356
0644
edit
dl
rm
pvcreate
19356
0644
edit
dl
rm
pvdisplay
19356
0644
edit
dl
rm
pvmove
19356
0644
edit
dl
rm
pvremove
19356
0644
edit
dl
rm
pvs
19356
0644
edit
dl
rm
pvscan
19356
0644
edit
dl
rm
pwck
386
0644
edit
dl
rm
pwd
445
0644
edit
dl
rm
pwdx
481
0644
edit
dl
rm
pwgen
592
0644
edit
dl
rm
pxz
1483
0644
edit
dl
rm
py.test
2353
0644
edit
dl
rm
py.test-2
2353
0644
edit
dl
rm
py.test-3
2353
0644
edit
dl
rm
pycodestyle
726
0644
edit
dl
rm
pydoc
1036
0644
edit
dl
rm
pydoc3
1036
0644
edit
dl
rm
pydocstyle
818
0644
edit
dl
rm
pyflakes
441
0644
edit
dl
rm
pylint
3133
0644
edit
dl
rm
pylint-2
3133
0644
edit
dl
rm
pylint-3
3133
0644
edit
dl
rm
pypy
1762
0644
edit
dl
rm
pypy3
1762
0644
edit
dl
rm
pytest
2353
0644
edit
dl
rm
pytest-2
2353
0644
edit
dl
rm
pytest-3
2353
0644
edit
dl
rm
python
1762
0644
edit
dl
rm
python2
1762
0644
edit
dl
rm
python3
1762
0644
edit
dl
rm
pyvenv
428
0644
edit
dl
rm
pyvenv-3.4
428
0644
edit
dl
rm
pyvenv-3.5
428
0644
edit
dl
rm
pyvenv-3.6
428
0644
edit
dl
rm
pyvenv-3.7
428
0644
edit
dl
rm
pyvenv-3.8
428
0644
edit
dl
rm
qdbus
379
0644
edit
dl
rm
qemu
3313
0644
edit
dl
rm
qemu-kvm
3313
0644
edit
dl
rm
qemu-system-i386
3313
0644
edit
dl
rm
qemu-system-x86_64
3313
0644
edit
dl
rm
qrunner
391
0644
edit
dl
rm
querybts
1251
0644
edit
dl
rm
quota
3662
0644
edit
dl
rm
quotacheck
3662
0644
edit
dl
rm
quotaoff
3662
0644
edit
dl
rm
quotaon
3662
0644
edit
dl
rm
radvdump
492
0644
edit
dl
rm
ralsh
9743
0644
edit
dl
rm
raw
482
0644
edit
dl
rm
rcs
890
0644
edit
dl
rm
rcsdiff
890
0644
edit
dl
rm
rdesktop
1671
0644
edit
dl
rm
rdict
1799
0644
edit
dl
rm
readprofile
679
0644
edit
dl
rm
removepkg
550
0644
edit
dl
rm
remove_members
569
0644
edit
dl
rm
renice
784
0644
edit
dl
rm
reportbug
3313
0644
edit
dl
rm
repquota
3662
0644
edit
dl
rm
resizepart
568
0644
edit
dl
rm
resolvconf
426
0644
edit
dl
rm
resolvectl
5695
0644
edit
dl
rm
rev
432
0644
edit
dl
rm
rfcomm
9676
0644
edit
dl
rm
ri
3744
0644
edit
dl
rm
rlog
890
0644
edit
dl
rm
rmlist
363
0644
edit
dl
rm
rmmod
519
0644
edit
dl
rm
route
790
0644
edit
dl
rm
rpcdebug
981
0644
edit
dl
rm
rpm
10320
0644
edit
dl
rm
rpm2targz
368
0644
edit
dl
rm
rpm2tgz
368
0644
edit
dl
rm
rpm2txz
368
0644
edit
dl
rm
rpmbuild
10320
0644
edit
dl
rm
rpmbuild-md5
10320
0644
edit
dl
rm
rpmcheck
512
0644
edit
dl
rm
rrdtool
438
0644
edit
dl
rm
rsync
3520
0644
edit
dl
rm
rtcwake
1081
0644
edit
dl
rm
s390-koji
6318
0644
edit
dl
rm
sbcl
675
0644
edit
dl
rm
sbcl-mt
675
0644
edit
dl
rm
sbopkg
1751
0644
edit
dl
rm
scp
15911
0644
edit
dl
rm
screen
2975
0644
edit
dl
rm
script
775
0644
edit
dl
rm
scriptreplay
625
0644
edit
dl
rm
scrub
868
0644
edit
dl
rm
sdptool
9676
0644
edit
dl
rm
setarch
790
0644
edit
dl
rm
setpriv
2838
0644
edit
dl
rm
setquota
3662
0644
edit
dl
rm
setsid
440
0644
edit
dl
rm
setterm
2591
0644
edit
dl
rm
sfdisk
2012
0644
edit
dl
rm
sftp
15911
0644
edit
dl
rm
sh
885
0644
edit
dl
rm
shellcheck
1658
0644
edit
dl
rm
sidedoor
15911
0644
edit
dl
rm
sitecopy
1326
0644
edit
dl
rm
slackpkg
3396
0644
edit
dl
rm
slapt-get
2417
0644
edit
dl
rm
slapt-src
1884
0644
edit
dl
rm
slogin
15911
0644
edit
dl
rm
smartctl
4276
0644
edit
dl
rm
smbcacls
7085
0644
edit
dl
rm
smbclient
7085
0644
edit
dl
rm
smbcquotas
7085
0644
edit
dl
rm
smbget
7085
0644
edit
dl
rm
smbpasswd
7085
0644
edit
dl
rm
smbtar
7085
0644
edit
dl
rm
smbtree
7085
0644
edit
dl
rm
snap
2535
0644
edit
dl
rm
snownews
363
0644
edit
dl
rm
sparc-koji
6318
0644
edit
dl
rm
spovray
1974
0644
edit
dl
rm
sqlite3
882
0644
edit
dl
rm
ss
1115
0644
edit
dl
rm
ssh
15911
0644
edit
dl
rm
ssh-add
677
0644
edit
dl
rm
ssh-copy-id
684
0644
edit
dl
rm
ssh-keygen
1885
0644
edit
dl
rm
sshfs
594
0644
edit
dl
rm
sshmitm
364
0644
edit
dl
rm
sshow
498
0644
edit
dl
rm
star
18916
0644
edit
dl
rm
strace
3337
0644
edit
dl
rm
stream
8997
0644
edit
dl
rm
strings
1148
0644
edit
dl
rm
su
892
0644
edit
dl
rm
sudo
1441
0644
edit
dl
rm
sudoedit
1441
0644
edit
dl
rm
svcadm
5066
0644
edit
dl
rm
svk
8770
0644
edit
dl
rm
swaplabel
635
0644
edit
dl
rm
swapoff
743
0644
edit
dl
rm
swapon
2007
0644
edit
dl
rm
synclient
588
0644
edit
dl
rm
sync_members
730
0644
edit
dl
rm
sysbench
4053
0644
edit
dl
rm
sysctl
802
0644
edit
dl
rm
systemctl
13581
0644
edit
dl
rm
systemd-analyze
5329
0644
edit
dl
rm
systemd-cat
1698
0644
edit
dl
rm
systemd-cgls
2092
0644
edit
dl
rm
systemd-cgtop
1880
0644
edit
dl
rm
systemd-delta
1744
0644
edit
dl
rm
systemd-detect-virt
1308
0644
edit
dl
rm
systemd-path
1720
0644
edit
dl
rm
systemd-resolve
2697
0644
edit
dl
rm
systemd-run
5356
0644
edit
dl
rm
tar
18916
0644
edit
dl
rm
taskset
1213
0644
edit
dl
rm
tc
27129
0644
edit
dl
rm
tcpdump
1660
0644
edit
dl
rm
tcpkill
440
0644
edit
dl
rm
tcpnice
431
0644
edit
dl
rm
tightvncviewer
3013
0644
edit
dl
rm
timedatectl
2925
0644
edit
dl
rm
timeout
993
0644
edit
dl
rm
tipc
7321
0644
edit
dl
rm
tox
1359
0644
edit
dl
rm
tracepath
559
0644
edit
dl
rm
tracepath6
559
0644
edit
dl
rm
tshark
4282
0644
edit
dl
rm
tune2fs
1764
0644
edit
dl
rm
typeset
1284
0644
edit
dl
rm
ua
984
0644
edit
dl
rm
udevadm
8146
0644
edit
dl
rm
ufw
2495
0644
edit
dl
rm
ulimit
901
0644
edit
dl
rm
umount
2255
0644
edit
dl
rm
unace
476
0644
edit
dl
rm
unpack200
1253
0644
edit
dl
rm
unrar
619
0644
edit
dl
rm
unshare
855
0644
edit
dl
rm
unshunt
347
0644
edit
dl
rm
update-alternatives
2405
0644
edit
dl
rm
update-initramfs
581
0644
edit
dl
rm
update-rc.d
1966
0644
edit
dl
rm
upgradepkg
805
0644
edit
dl
rm
urlsnarf
507
0644
edit
dl
rm
useradd
1249
0644
edit
dl
rm
userdel
543
0644
edit
dl
rm
usermod
1367
0644
edit
dl
rm
utmpdump
475
0644
edit
dl
rm
uuidd
862
0644
edit
dl
rm
uuidgen
657
0644
edit
dl
rm
uuidparse
727
0644
edit
dl
rm
valgrind
3515
0644
edit
dl
rm
vgcfgbackup
19356
0644
edit
dl
rm
vgcfgrestore
19356
0644
edit
dl
rm
vgchange
19356
0644
edit
dl
rm
vgck
19356
0644
edit
dl
rm
vgconvert
19356
0644
edit
dl
rm
vgcreate
19356
0644
edit
dl
rm
vgdisplay
19356
0644
edit
dl
rm
vgexport
19356
0644
edit
dl
rm
vgextend
19356
0644
edit
dl
rm
vgimport
19356
0644
edit
dl
rm
vgmerge
19356
0644
edit
dl
rm
vgmknodes
19356
0644
edit
dl
rm
vgreduce
19356
0644
edit
dl
rm
vgremove
19356
0644
edit
dl
rm
vgrename
19356
0644
edit
dl
rm
vgs
19356
0644
edit
dl
rm
vgscan
19356
0644
edit
dl
rm
vgsplit
19356
0644
edit
dl
rm
vigr
438
0644
edit
dl
rm
vipw
438
0644
edit
dl
rm
vmstat
696
0644
edit
dl
rm
vncviewer
3013
0644
edit
dl
rm
vpnc
2303
0644
edit
dl
rm
wall
634
0644
edit
dl
rm
watch
1175
0644
edit
dl
rm
wdctl
1371
0644
edit
dl
rm
webmitm
364
0644
edit
dl
rm
wget
6492
0644
edit
dl
rm
whatis
2865
0644
edit
dl
rm
whereis
535
0644
edit
dl
rm
whiptail
345
0644
edit
dl
rm
wine
536
0644
edit
dl
rm
wine-development
536
0644
edit
dl
rm
wine-stable
536
0644
edit
dl
rm
wipefs
1192
0644
edit
dl
rm
withlist
411
0644
edit
dl
rm
wodim
3572
0644
edit
dl
rm
wol
1142
0644
edit
dl
rm
wsimport
1113
0644
edit
dl
rm
wtf
926
0644
edit
dl
rm
wvdial
1270
0644
edit
dl
rm
xdg-mime
2260
0644
edit
dl
rm
xdg-settings
761
0644
edit
dl
rm
xfreerdp
2115
0644
edit
dl
rm
xgamma
2042
0644
edit
dl
rm
xhost
376
0644
edit
dl
rm
xmllint
1264
0644
edit
dl
rm
xmlwf
696
0644
edit
dl
rm
xmms
687
0644
edit
dl
rm
xmodmap
435
0644
edit
dl
rm
xpovray
1974
0644
edit
dl
rm
xrandr
2177
0644
edit
dl
rm
xrdb
506
0644
edit
dl
rm
xsltproc
1223
0644
edit
dl
rm
xvfb-run
871
0644
edit
dl
rm
xvnc4viewer
3013
0644
edit
dl
rm
xxd
467
0644
edit
dl
rm
xz
1483
0644
edit
dl
rm
xzdec
630
0644
edit
dl
rm
ypcat
759
0644
edit
dl
rm
ypmatch
759
0644
edit
dl
rm
yum-arch
357
0644
edit
dl
rm
zopfli
676
0644
edit
dl
rm
zopflipng
926
0644
edit
dl
rm
zramctl
1290
0644
edit
dl
rm
_adb
1782
0644
edit
dl
rm
_cal
926
0644
edit
dl
rm
_chfn
238
0644
edit
dl
rm
_chsh
690
0644
edit
dl
rm
_dmesg
909
0644
edit
dl
rm
_eject
793
0644
edit
dl
rm
_hexdump
669
0644
edit
dl
rm
_hwclock
605
0644
edit
dl
rm
_ionice
1264
0644
edit
dl
rm
_look
447
0644
edit
dl
rm
_mock
2059
0644
edit
dl
rm
_modules
2539
0644
edit
dl
rm
_mount
2067
0644
edit
dl
rm
_mount.linux
10719
0644
edit
dl
rm
_newgrp
432
0644
edit
dl
rm
_nmcli
6242
0644
edit
dl
rm
_renice
769
0644
edit
dl
rm
_repomanage
605
0644
edit
dl
rm
_reptyr
547
0644
edit
dl
rm
_rfkill
931
0644
edit
dl
rm
_rtcwake
863
0644
edit
dl
rm
_runuser
241
0644
edit
dl
rm
_su
981
0644
edit
dl
rm
_svn
8830
0644
edit
dl
rm
_svnadmin
2324
0644
edit
dl
rm
_svnlook
1990
0644
edit
dl
rm
_udevadm
2132
0644
edit
dl
rm
_umount
629
0644
edit
dl
rm
_umount.linux
4579
0644
edit
dl
rm
_write
239
0644
edit
dl
rm
_xm
7709
0644
edit
dl
rm
_yum
4471
0644
edit
dl
rm
Edit:
/usr/share/bash-completion/completions/git
(70071B)
# bash/zsh completion support for core Git. # # Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org> # Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/). # Distributed under the GNU General Public License, version 2.0. # # The contained completion routines provide support for completing: # # *) local and remote branch names # *) local and remote tag names # *) .git/remotes file names # *) git 'subcommands' # *) git email aliases for git-send-email # *) tree paths within 'ref:path/to/file' expressions # *) file paths within current working directory and index # *) common --long-options # # To use these routines: # # 1) Copy this file to somewhere (e.g. ~/.git-completion.bash). # 2) Add the following line to your .bashrc/.zshrc: # source ~/.git-completion.bash # 3) Consider changing your PS1 to also show the current branch, # see git-prompt.sh for details. # # If you use complex aliases of form '!f() { ... }; f', you can use the null # command ':' as the first command in the function body to declare the desired # completion style. For example '!f() { : git commit ; ... }; f' will # tell the completion to use commit completion. This also works with aliases # of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '". # # Compatible with bash 3.2.57. # # You can set the following environment variables to influence the behavior of # the completion routines: # # GIT_COMPLETION_CHECKOUT_NO_GUESS # # When set to "1", do not include "DWIM" suggestions in git-checkout # and git-switch completion (e.g., completing "foo" when "origin/foo" # exists). case "$COMP_WORDBREAKS" in *:*) : great ;; *) COMP_WORDBREAKS="$COMP_WORDBREAKS:" esac # Discovers the path to the git repository taking any '--git-dir=<path>' and # '-C <path>' options into account and stores it in the $__git_repo_path # variable. __git_find_repo_path () { if [ -n "$__git_repo_path" ]; then # we already know where it is return fi if [ -n "${__git_C_args-}" ]; then __git_repo_path="$(git "${__git_C_args[@]}" \ ${__git_dir:+--git-dir="$__git_dir"} \ rev-parse --absolute-git-dir 2>/dev/null)" elif [ -n "${__git_dir-}" ]; then test -d "$__git_dir" && __git_repo_path="$__git_dir" elif [ -n "${GIT_DIR-}" ]; then test -d "${GIT_DIR-}" && __git_repo_path="$GIT_DIR" elif [ -d .git ]; then __git_repo_path=.git else __git_repo_path="$(git rev-parse --git-dir 2>/dev/null)" fi } # Deprecated: use __git_find_repo_path() and $__git_repo_path instead # __gitdir accepts 0 or 1 arguments (i.e., location) # returns location of .git repo __gitdir () { if [ -z "${1-}" ]; then __git_find_repo_path || return 1 echo "$__git_repo_path" elif [ -d "$1/.git" ]; then echo "$1/.git" else echo "$1" fi } # Runs git with all the options given as argument, respecting any # '--git-dir=<path>' and '-C <path>' options present on the command line __git () { git ${__git_C_args:+"${__git_C_args[@]}"} \ ${__git_dir:+--git-dir="$__git_dir"} "$@" 2>/dev/null } # Removes backslash escaping, single quotes and double quotes from a word, # stores the result in the variable $dequoted_word. # 1: The word to dequote. __git_dequote () { local rest="$1" len ch dequoted_word="" while test -n "$rest"; do len=${#dequoted_word} dequoted_word="$dequoted_word${rest%%[\\\'\"]*}" rest="${rest:$((${#dequoted_word}-$len))}" case "${rest:0:1}" in \\) ch="${rest:1:1}" case "$ch" in $'\n') ;; *) dequoted_word="$dequoted_word$ch" ;; esac rest="${rest:2}" ;; \') rest="${rest:1}" len=${#dequoted_word} dequoted_word="$dequoted_word${rest%%\'*}" rest="${rest:$((${#dequoted_word}-$len+1))}" ;; \") rest="${rest:1}" while test -n "$rest" ; do len=${#dequoted_word} dequoted_word="$dequoted_word${rest%%[\\\"]*}" rest="${rest:$((${#dequoted_word}-$len))}" case "${rest:0:1}" in \\) ch="${rest:1:1}" case "$ch" in \"|\\|\$|\`) dequoted_word="$dequoted_word$ch" ;; $'\n') ;; *) dequoted_word="$dequoted_word\\$ch" ;; esac rest="${rest:2}" ;; \") rest="${rest:1}" break ;; esac done ;; esac done } # The following function is based on code from: # # bash_completion - programmable completion functions for bash 3.2+ # # Copyright © 2006-2008, Ian Macdonald <ian@caliban.org> # © 2009-2010, Bash Completion Maintainers # <bash-completion-devel@lists.alioth.debian.org> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see <http://www.gnu.org/licenses/>. # # The latest version of this software can be obtained here: # # http://bash-completion.alioth.debian.org/ # # RELEASE: 2.x # This function can be used to access a tokenized list of words # on the command line: # # __git_reassemble_comp_words_by_ref '=:' # if test "${words_[cword_-1]}" = -w # then # ... # fi # # The argument should be a collection of characters from the list of # word completion separators (COMP_WORDBREAKS) to treat as ordinary # characters. # # This is roughly equivalent to going back in time and setting # COMP_WORDBREAKS to exclude those characters. The intent is to # make option types like --date=<type> and <rev>:<path> easy to # recognize by treating each shell word as a single token. # # It is best not to set COMP_WORDBREAKS directly because the value is # shared with other completion scripts. By the time the completion # function gets called, COMP_WORDS has already been populated so local # changes to COMP_WORDBREAKS have no effect. # # Output: words_, cword_, cur_. __git_reassemble_comp_words_by_ref() { local exclude i j first # Which word separators to exclude? exclude="${1//[^$COMP_WORDBREAKS]}" cword_=$COMP_CWORD if [ -z "$exclude" ]; then words_=("${COMP_WORDS[@]}") return fi # List of word completion separators has shrunk; # re-assemble words to complete. for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++)); do # Append each nonempty word consisting of just # word separator characters to the current word. first=t while [ $i -gt 0 ] && [ -n "${COMP_WORDS[$i]}" ] && # word consists of excluded word separators [ "${COMP_WORDS[$i]//[^$exclude]}" = "${COMP_WORDS[$i]}" ] do # Attach to the previous token, # unless the previous token is the command name. if [ $j -ge 2 ] && [ -n "$first" ]; then ((j--)) fi first= words_[$j]=${words_[j]}${COMP_WORDS[i]} if [ $i = $COMP_CWORD ]; then cword_=$j fi if (($i < ${#COMP_WORDS[@]} - 1)); then ((i++)) else # Done. return fi done words_[$j]=${words_[j]}${COMP_WORDS[i]} if [ $i = $COMP_CWORD ]; then cword_=$j fi done } if ! type _get_comp_words_by_ref >/dev/null 2>&1; then _get_comp_words_by_ref () { local exclude cur_ words_ cword_ if [ "$1" = "-n" ]; then exclude=$2 shift 2 fi __git_reassemble_comp_words_by_ref "$exclude" cur_=${words_[cword_]} while [ $# -gt 0 ]; do case "$1" in cur) cur=$cur_ ;; prev) prev=${words_[$cword_-1]} ;; words) words=("${words_[@]}") ;; cword) cword=$cword_ ;; esac shift done } fi # Fills the COMPREPLY array with prefiltered words without any additional # processing. # Callers must take care of providing only words that match the current word # to be completed and adding any prefix and/or suffix (trailing space!), if # necessary. # 1: List of newline-separated matching completion words, complete with # prefix and suffix. __gitcomp_direct () { local IFS=$'\n' COMPREPLY=($1) } __gitcompappend () { local x i=${#COMPREPLY[@]} for x in $1; do if [[ "$x" == "$3"* ]]; then COMPREPLY[i++]="$2$x$4" fi done } __gitcompadd () { COMPREPLY=() __gitcompappend "$@" } # Generates completion reply, appending a space to possible completion words, # if necessary. # It accepts 1 to 4 arguments: # 1: List of possible completion words. # 2: A prefix to be added to each possible completion word (optional). # 3: Generate possible completion matches for this word (optional). # 4: A suffix to be appended to each possible completion word (optional). __gitcomp () { local cur_="${3-$cur}" case "$cur_" in --*=) ;; --no-*) local c i=0 IFS=$' \t\n' for c in $1; do if [[ $c == "--" ]]; then continue fi c="$c${4-}" if [[ $c == "$cur_"* ]]; then case $c in --*=|*.) ;; *) c="$c " ;; esac COMPREPLY[i++]="${2-}$c" fi done ;; *) local c i=0 IFS=$' \t\n' for c in $1; do if [[ $c == "--" ]]; then c="--no-...${4-}" if [[ $c == "$cur_"* ]]; then COMPREPLY[i++]="${2-}$c " fi break fi c="$c${4-}" if [[ $c == "$cur_"* ]]; then case $c in *=|*.) ;; *) c="$c " ;; esac COMPREPLY[i++]="${2-}$c" fi done ;; esac } # Clear the variables caching builtins' options when (re-)sourcing # the completion script. if [[ -n ${ZSH_VERSION-} ]]; then unset $(set |sed -ne 's/^\(__gitcomp_builtin_[a-zA-Z0-9_][a-zA-Z0-9_]*\)=.*/\1/p') 2>/dev/null else unset $(compgen -v __gitcomp_builtin_) fi # This function is equivalent to # # __gitcomp "$(git xxx --git-completion-helper) ..." # # except that the output is cached. Accept 1-3 arguments: # 1: the git command to execute, this is also the cache key # 2: extra options to be added on top (e.g. negative forms) # 3: options to be excluded __gitcomp_builtin () { # spaces must be replaced with underscore for multi-word # commands, e.g. "git remote add" becomes remote_add. local cmd="$1" local incl="$2" local excl="$3" local var=__gitcomp_builtin_"${cmd/-/_}" local options eval "options=\$$var" if [ -z "$options" ]; then # leading and trailing spaces are significant to make # option removal work correctly. options=" $incl $(__git ${cmd/_/ } --git-completion-helper) " || return for i in $excl; do options="${options/ $i / }" done eval "$var=\"$options\"" fi __gitcomp "$options" } # Variation of __gitcomp_nl () that appends to the existing list of # completion candidates, COMPREPLY. __gitcomp_nl_append () { local IFS=$'\n' __gitcompappend "$1" "${2-}" "${3-$cur}" "${4- }" } # Generates completion reply from newline-separated possible completion words # by appending a space to all of them. # It accepts 1 to 4 arguments: # 1: List of possible completion words, separated by a single newline. # 2: A prefix to be added to each possible completion word (optional). # 3: Generate possible completion matches for this word (optional). # 4: A suffix to be appended to each possible completion word instead of # the default space (optional). If specified but empty, nothing is # appended. __gitcomp_nl () { COMPREPLY=() __gitcomp_nl_append "$@" } # Fills the COMPREPLY array with prefiltered paths without any additional # processing. # Callers must take care of providing only paths that match the current path # to be completed and adding any prefix path components, if necessary. # 1: List of newline-separated matching paths, complete with all prefix # path components. __gitcomp_file_direct () { local IFS=$'\n' COMPREPLY=($1) # use a hack to enable file mode in bash < 4 compopt -o filenames +o nospace 2>/dev/null || compgen -f /non-existing-dir/ >/dev/null || true } # Generates completion reply with compgen from newline-separated possible # completion filenames. # It accepts 1 to 3 arguments: # 1: List of possible completion filenames, separated by a single newline. # 2: A directory prefix to be added to each possible completion filename # (optional). # 3: Generate possible completion matches for this word (optional). __gitcomp_file () { local IFS=$'\n' # XXX does not work when the directory prefix contains a tilde, # since tilde expansion is not applied. # This means that COMPREPLY will be empty and Bash default # completion will be used. __gitcompadd "$1" "${2-}" "${3-$cur}" "" # use a hack to enable file mode in bash < 4 compopt -o filenames +o nospace 2>/dev/null || compgen -f /non-existing-dir/ >/dev/null || true } # Execute 'git ls-files', unless the --committable option is specified, in # which case it runs 'git diff-index' to find out the files that can be # committed. It return paths relative to the directory specified in the first # argument, and using the options specified in the second argument. __git_ls_files_helper () { if [ "$2" == "--committable" ]; then __git -C "$1" -c core.quotePath=false diff-index \ --name-only --relative HEAD -- "${3//\\/\\\\}*" else # NOTE: $2 is not quoted in order to support multiple options __git -C "$1" -c core.quotePath=false ls-files \ --exclude-standard $2 -- "${3//\\/\\\\}*" fi } # __git_index_files accepts 1 or 2 arguments: # 1: Options to pass to ls-files (required). # 2: A directory path (optional). # If provided, only files within the specified directory are listed. # Sub directories are never recursed. Path must have a trailing # slash. # 3: List only paths matching this path component (optional). __git_index_files () { local root="$2" match="$3" __git_ls_files_helper "$root" "$1" "$match" | awk -F / -v pfx="${2//\\/\\\\}" '{ paths[$1] = 1 } END { for (p in paths) { if (substr(p, 1, 1) != "\"") { # No special characters, easy! print pfx p continue } # The path is quoted. p = dequote(p) if (p == "") continue # Even when a directory name itself does not contain # any special characters, it will still be quoted if # any of its (stripped) trailing path components do. # Because of this we may have seen the same directory # both quoted and unquoted. if (p in paths) # We have seen the same directory unquoted, # skip it. continue else print pfx p } } function dequote(p, bs_idx, out, esc, esc_idx, dec) { # Skip opening double quote. p = substr(p, 2) # Interpret backslash escape sequences. while ((bs_idx = index(p, "\\")) != 0) { out = out substr(p, 1, bs_idx - 1) esc = substr(p, bs_idx + 1, 1) p = substr(p, bs_idx + 2) if ((esc_idx = index("abtvfr\"\\", esc)) != 0) { # C-style one-character escape sequence. out = out substr("\a\b\t\v\f\r\"\\", esc_idx, 1) } else if (esc == "n") { # Uh-oh, a newline character. # We cannot reliably put a pathname # containing a newline into COMPREPLY, # and the newline would create a mess. # Skip this path. return "" } else { # Must be a \nnn octal value, then. dec = esc * 64 + \ substr(p, 1, 1) * 8 + \ substr(p, 2, 1) out = out sprintf("%c", dec) p = substr(p, 3) } } # Drop closing double quote, if there is one. # (There is not any if this is a directory, as it was # already stripped with the trailing path components.) if (substr(p, length(p), 1) == "\"") out = out substr(p, 1, length(p) - 1) else out = out p return out }' } # __git_complete_index_file requires 1 argument: # 1: the options to pass to ls-file # # The exception is --committable, which finds the files appropriate commit. __git_complete_index_file () { local dequoted_word pfx="" cur_ __git_dequote "$cur" case "$dequoted_word" in ?*/*) pfx="${dequoted_word%/*}/" cur_="${dequoted_word##*/}" ;; *) cur_="$dequoted_word" esac __gitcomp_file_direct "$(__git_index_files "$1" "$pfx" "$cur_")" } # Lists branches from the local repository. # 1: A prefix to be added to each listed branch (optional). # 2: List only branches matching this word (optional; list all branches if # unset or empty). # 3: A suffix to be appended to each listed branch (optional). __git_heads () { local pfx="${1-}" cur_="${2-}" sfx="${3-}" __git for-each-ref --format="${pfx//\%/%%}%(refname:strip=2)$sfx" \ "refs/heads/$cur_*" "refs/heads/$cur_*/**" } # Lists tags from the local repository. # Accepts the same positional parameters as __git_heads() above. __git_tags () { local pfx="${1-}" cur_="${2-}" sfx="${3-}" __git for-each-ref --format="${pfx//\%/%%}%(refname:strip=2)$sfx" \ "refs/tags/$cur_*" "refs/tags/$cur_*/**" } # Lists refs from the local (by default) or from a remote repository. # It accepts 0, 1 or 2 arguments: # 1: The remote to list refs from (optional; ignored, if set but empty). # Can be the name of a configured remote, a path, or a URL. # 2: In addition to local refs, list unique branches from refs/remotes/ for # 'git checkout's tracking DWIMery (optional; ignored, if set but empty). # 3: A prefix to be added to each listed ref (optional). # 4: List only refs matching this word (optional; list all refs if unset or # empty). # 5: A suffix to be appended to each listed ref (optional; ignored, if set # but empty). # # Use __git_complete_refs() instead. __git_refs () { local i hash dir track="${2-}" local list_refs_from=path remote="${1-}" local format refs local pfx="${3-}" cur_="${4-$cur}" sfx="${5-}" local match="${4-}" local fer_pfx="${pfx//\%/%%}" # "escape" for-each-ref format specifiers __git_find_repo_path dir="$__git_repo_path" if [ -z "$remote" ]; then if [ -z "$dir" ]; then return fi else if __git_is_configured_remote "$remote"; then # configured remote takes precedence over a # local directory with the same name list_refs_from=remote elif [ -d "$remote/.git" ]; then dir="$remote/.git" elif [ -d "$remote" ]; then dir="$remote" else list_refs_from=url fi fi if [ "$list_refs_from" = path ]; then if [[ "$cur_" == ^* ]]; then pfx="$pfx^" fer_pfx="$fer_pfx^" cur_=${cur_#^} match=${match#^} fi case "$cur_" in refs|refs/*) format="refname" refs=("$match*" "$match*/**") track="" ;; *) for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD REBASE_HEAD; do case "$i" in $match*) if [ -e "$dir/$i" ]; then echo "$pfx$i$sfx" fi ;; esac done format="refname:strip=2" refs=("refs/tags/$match*" "refs/tags/$match*/**" "refs/heads/$match*" "refs/heads/$match*/**" "refs/remotes/$match*" "refs/remotes/$match*/**") ;; esac __git_dir="$dir" __git for-each-ref --format="$fer_pfx%($format)$sfx" \ "${refs[@]}" if [ -n "$track" ]; then # employ the heuristic used by git checkout # Try to find a remote branch that matches the completion word # but only output if the branch name is unique __git for-each-ref --format="$fer_pfx%(refname:strip=3)$sfx" \ --sort="refname:strip=3" \ "refs/remotes/*/$match*" "refs/remotes/*/$match*/**" | \ uniq -u fi return fi case "$cur_" in refs|refs/*) __git ls-remote "$remote" "$match*" | \ while read -r hash i; do case "$i" in *^{}) ;; *) echo "$pfx$i$sfx" ;; esac done ;; *) if [ "$list_refs_from" = remote ]; then case "HEAD" in $match*) echo "${pfx}HEAD$sfx" ;; esac __git for-each-ref --format="$fer_pfx%(refname:strip=3)$sfx" \ "refs/remotes/$remote/$match*" \ "refs/remotes/$remote/$match*/**" else local query_symref case "HEAD" in $match*) query_symref="HEAD" ;; esac __git ls-remote "$remote" $query_symref \ "refs/tags/$match*" "refs/heads/$match*" \ "refs/remotes/$match*" | while read -r hash i; do case "$i" in *^{}) ;; refs/*) echo "$pfx${i#refs/*/}$sfx" ;; *) echo "$pfx$i$sfx" ;; # symbolic refs esac done fi ;; esac } # Completes refs, short and long, local and remote, symbolic and pseudo. # # Usage: __git_complete_refs [<option>]... # --remote=<remote>: The remote to list refs from, can be the name of a # configured remote, a path, or a URL. # --track: List unique remote branches for 'git checkout's tracking DWIMery. # --pfx=<prefix>: A prefix to be added to each ref. # --cur=<word>: The current ref to be completed. Defaults to the current # word to be completed. # --sfx=<suffix>: A suffix to be appended to each ref instead of the default # space. __git_complete_refs () { local remote track pfx cur_="$cur" sfx=" " while test $# != 0; do case "$1" in --remote=*) remote="${1##--remote=}" ;; --track) track="yes" ;; --pfx=*) pfx="${1##--pfx=}" ;; --cur=*) cur_="${1##--cur=}" ;; --sfx=*) sfx="${1##--sfx=}" ;; *) return 1 ;; esac shift done __gitcomp_direct "$(__git_refs "$remote" "$track" "$pfx" "$cur_" "$sfx")" } # __git_refs2 requires 1 argument (to pass to __git_refs) # Deprecated: use __git_complete_fetch_refspecs() instead. __git_refs2 () { local i for i in $(__git_refs "$1"); do echo "$i:$i" done } # Completes refspecs for fetching from a remote repository. # 1: The remote repository. # 2: A prefix to be added to each listed refspec (optional). # 3: The ref to be completed as a refspec instead of the current word to be # completed (optional) # 4: A suffix to be appended to each listed refspec instead of the default # space (optional). __git_complete_fetch_refspecs () { local i remote="$1" pfx="${2-}" cur_="${3-$cur}" sfx="${4- }" __gitcomp_direct "$( for i in $(__git_refs "$remote" "" "" "$cur_") ; do echo "$pfx$i:$i$sfx" done )" } # __git_refs_remotes requires 1 argument (to pass to ls-remote) __git_refs_remotes () { local i hash __git ls-remote "$1" 'refs/heads/*' | \ while read -r hash i; do echo "$i:refs/remotes/$1/${i#refs/heads/}" done } __git_remotes () { __git_find_repo_path test -d "$__git_repo_path/remotes" && ls -1 "$__git_repo_path/remotes" __git remote } # Returns true if $1 matches the name of a configured remote, false otherwise. __git_is_configured_remote () { local remote for remote in $(__git_remotes); do if [ "$remote" = "$1" ]; then return 0 fi done return 1 } __git_list_merge_strategies () { LANG=C LC_ALL=C git merge -s help 2>&1 | sed -n -e '/[Aa]vailable strategies are: /,/^$/{ s/\.$// s/.*:// s/^[ ]*// s/[ ]*$// p }' } __git_merge_strategies= # 'git merge -s help' (and thus detection of the merge strategy # list) fails, unfortunately, if run outside of any git working # tree. __git_merge_strategies is set to the empty string in # that case, and the detection will be repeated the next time it # is needed. __git_compute_merge_strategies () { test -n "$__git_merge_strategies" || __git_merge_strategies=$(__git_list_merge_strategies) } __git_merge_strategy_options="ours theirs subtree subtree= patience histogram diff-algorithm= ignore-space-change ignore-all-space ignore-space-at-eol renormalize no-renormalize no-renames find-renames find-renames= rename-threshold=" __git_complete_revlist_file () { local dequoted_word pfx ls ref cur_="$cur" case "$cur_" in *..?*:*) return ;; ?*:*) ref="${cur_%%:*}" cur_="${cur_#*:}" __git_dequote "$cur_" case "$dequoted_word" in ?*/*) pfx="${dequoted_word%/*}" cur_="${dequoted_word##*/}" ls="$ref:$pfx" pfx="$pfx/" ;; *) cur_="$dequoted_word" ls="$ref" ;; esac case "$COMP_WORDBREAKS" in *:*) : great ;; *) pfx="$ref:$pfx" ;; esac __gitcomp_file "$(__git ls-tree "$ls" \ | sed 's/^.* // s/$//')" \ "$pfx" "$cur_" ;; *...*) pfx="${cur_%...*}..." cur_="${cur_#*...}" __git_complete_refs --pfx="$pfx" --cur="$cur_" ;; *..*) pfx="${cur_%..*}.." cur_="${cur_#*..}" __git_complete_refs --pfx="$pfx" --cur="$cur_" ;; *) __git_complete_refs ;; esac } __git_complete_file () { __git_complete_revlist_file } __git_complete_revlist () { __git_complete_revlist_file } __git_complete_remote_or_refspec () { local cur_="$cur" cmd="${words[1]}" local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0 if [ "$cmd" = "remote" ]; then ((c++)) fi while [ $c -lt $cword ]; do i="${words[c]}" case "$i" in --mirror) [ "$cmd" = "push" ] && no_complete_refspec=1 ;; -d|--delete) [ "$cmd" = "push" ] && lhs=0 ;; --all) case "$cmd" in push) no_complete_refspec=1 ;; fetch) return ;; *) ;; esac ;; --multiple) no_complete_refspec=1; break ;; -*) ;; *) remote="$i"; break ;; esac ((c++)) done if [ -z "$remote" ]; then __gitcomp_nl "$(__git_remotes)" return fi if [ $no_complete_refspec = 1 ]; then return fi [ "$remote" = "." ] && remote= case "$cur_" in *:*) case "$COMP_WORDBREAKS" in *:*) : great ;; *) pfx="${cur_%%:*}:" ;; esac cur_="${cur_#*:}" lhs=0 ;; +*) pfx="+" cur_="${cur_#+}" ;; esac case "$cmd" in fetch) if [ $lhs = 1 ]; then __git_complete_fetch_refspecs "$remote" "$pfx" "$cur_" else __git_complete_refs --pfx="$pfx" --cur="$cur_" fi ;; pull|remote) if [ $lhs = 1 ]; then __git_complete_refs --remote="$remote" --pfx="$pfx" --cur="$cur_" else __git_complete_refs --pfx="$pfx" --cur="$cur_" fi ;; push) if [ $lhs = 1 ]; then __git_complete_refs --pfx="$pfx" --cur="$cur_" else __git_complete_refs --remote="$remote" --pfx="$pfx" --cur="$cur_" fi ;; esac } __git_complete_strategy () { __git_compute_merge_strategies case "$prev" in -s|--strategy) __gitcomp "$__git_merge_strategies" return 0 ;; -X) __gitcomp "$__git_merge_strategy_options" return 0 ;; esac case "$cur" in --strategy=*) __gitcomp "$__git_merge_strategies" "" "${cur##--strategy=}" return 0 ;; --strategy-option=*) __gitcomp "$__git_merge_strategy_options" "" "${cur##--strategy-option=}" return 0 ;; esac return 1 } __git_all_commands= __git_compute_all_commands () { test -n "$__git_all_commands" || __git_all_commands=$(__git --list-cmds=main,others,alias,nohelpers) } # Lists all set config variables starting with the given section prefix, # with the prefix removed. __git_get_config_variables () { local section="$1" i IFS=$'\n' for i in $(__git config --name-only --get-regexp "^$section\..*"); do echo "${i#$section.}" done } __git_pretty_aliases () { __git_get_config_variables "pretty" } # __git_aliased_command requires 1 argument __git_aliased_command () { local word cmdline=$(__git config --get "alias.$1") for word in $cmdline; do case "$word" in \!gitk|gitk) echo "gitk" return ;; \!*) : shell command alias ;; -*) : option ;; *=*) : setting env ;; git) : git itself ;; \(\)) : skip parens of shell function definition ;; {) : skip start of shell helper function ;; :) : skip null command ;; \'*) : skip opening quote after sh -c ;; *) echo "$word" return esac done } # __git_find_on_cmdline requires 1 argument __git_find_on_cmdline () { local word subcommand c=1 while [ $c -lt $cword ]; do word="${words[c]}" for subcommand in $1; do if [ "$subcommand" = "$word" ]; then echo "$subcommand" return fi done ((c++)) done } # Echo the value of an option set on the command line or config # # $1: short option name # $2: long option name including = # $3: list of possible values # $4: config string (optional) # # example: # result="$(__git_get_option_value "-d" "--do-something=" \ # "yes no" "core.doSomething")" # # result is then either empty (no option set) or "yes" or "no" # # __git_get_option_value requires 3 arguments __git_get_option_value () { local c short_opt long_opt val local result= values config_key word short_opt="$1" long_opt="$2" values="$3" config_key="$4" ((c = $cword - 1)) while [ $c -ge 0 ]; do word="${words[c]}" for val in $values; do if [ "$short_opt$val" = "$word" ] || [ "$long_opt$val" = "$word" ]; then result="$val" break 2 fi done ((c--)) done if [ -n "$config_key" ] && [ -z "$result" ]; then result="$(__git config "$config_key")" fi echo "$result" } __git_has_doubledash () { local c=1 while [ $c -lt $cword ]; do if [ "--" = "${words[c]}" ]; then return 0 fi ((c++)) done return 1 } # Try to count non option arguments passed on the command line for the # specified git command. # When options are used, it is necessary to use the special -- option to # tell the implementation were non option arguments begin. # XXX this can not be improved, since options can appear everywhere, as # an example: # git mv x -n y # # __git_count_arguments requires 1 argument: the git command executed. __git_count_arguments () { local word i c=0 # Skip "git" (first argument) for ((i=1; i < ${#words[@]}; i++)); do word="${words[i]}" case "$word" in --) # Good; we can assume that the following are only non # option arguments. ((c = 0)) ;; "$1") # Skip the specified git command and discard git # main options ((c = 0)) ;; ?*) ((c++)) ;; esac done printf "%d" $c } __git_whitespacelist="nowarn warn error error-all fix" __git_patchformat="mbox stgit stgit-series hg mboxrd" __git_am_inprogress_options="--skip --continue --resolved --abort --quit --show-current-patch" _git_am () { __git_find_repo_path if [ -d "$__git_repo_path"/rebase-apply ]; then __gitcomp "$__git_am_inprogress_options" return fi case "$cur" in --whitespace=*) __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" return ;; --patch-format=*) __gitcomp "$__git_patchformat" "" "${cur##--patch-format=}" return ;; --*) __gitcomp_builtin am "" \ "$__git_am_inprogress_options" return esac } _git_apply () { case "$cur" in --whitespace=*) __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" return ;; --*) __gitcomp_builtin apply return esac } _git_add () { case "$cur" in --chmod=*) __gitcomp "+x -x" "" "${cur##--chmod=}" return ;; --*) __gitcomp_builtin add return esac local complete_opt="--others --modified --directory --no-empty-directory" if test -n "$(__git_find_on_cmdline "-u --update")" then complete_opt="--modified" fi __git_complete_index_file "$complete_opt" } _git_archive () { case "$cur" in --format=*) __gitcomp "$(git archive --list)" "" "${cur##--format=}" return ;; --remote=*) __gitcomp_nl "$(__git_remotes)" "" "${cur##--remote=}" return ;; --*) __gitcomp_builtin archive "--format= --list --verbose --prefix= --worktree-attributes" return ;; esac __git_complete_file } _git_bisect () { __git_has_doubledash && return local subcommands="start bad good skip reset visualize replay log run" local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then __git_find_repo_path if [ -f "$__git_repo_path"/BISECT_START ]; then __gitcomp "$subcommands" else __gitcomp "replay start" fi return fi case "$subcommand" in bad|good|reset|skip|start) __git_complete_refs ;; *) ;; esac } __git_ref_fieldlist="refname objecttype objectsize objectname upstream push HEAD symref" _git_branch () { local i c=1 only_local_ref="n" has_r="n" while [ $c -lt $cword ]; do i="${words[c]}" case "$i" in -d|--delete|-m|--move) only_local_ref="y" ;; -r|--remotes) has_r="y" ;; esac ((c++)) done case "$cur" in --set-upstream-to=*) __git_complete_refs --cur="${cur##--set-upstream-to=}" ;; --*) __gitcomp_builtin branch ;; *) if [ $only_local_ref = "y" -a $has_r = "n" ]; then __gitcomp_direct "$(__git_heads "" "$cur" " ")" else __git_complete_refs fi ;; esac } _git_bundle () { local cmd="${words[2]}" case "$cword" in 2) __gitcomp "create list-heads verify unbundle" ;; 3) # looking for a file ;; *) case "$cmd" in create) __git_complete_revlist ;; esac ;; esac } _git_checkout () { __git_has_doubledash && return case "$cur" in --conflict=*) __gitcomp "diff3 merge" "" "${cur##--conflict=}" ;; --*) __gitcomp_builtin checkout ;; *) # check if --track, --no-track, or --no-guess was specified # if so, disable DWIM mode local flags="--track --no-track --no-guess" track_opt="--track" if [ "$GIT_COMPLETION_CHECKOUT_NO_GUESS" = "1" ] || [ -n "$(__git_find_on_cmdline "$flags")" ]; then track_opt='' fi __git_complete_refs $track_opt ;; esac } __git_sequencer_inprogress_options="--continue --quit --abort --skip" __git_cherry_pick_inprogress_options=$__git_sequencer_inprogress_options _git_cherry_pick () { __git_find_repo_path if [ -f "$__git_repo_path"/CHERRY_PICK_HEAD ]; then __gitcomp "$__git_cherry_pick_inprogress_options" return fi __git_complete_strategy && return case "$cur" in --*) __gitcomp_builtin cherry-pick "" \ "$__git_cherry_pick_inprogress_options" ;; *) __git_complete_refs ;; esac } _git_clean () { case "$cur" in --*) __gitcomp_builtin clean return ;; esac # XXX should we check for -x option ? __git_complete_index_file "--others --directory" } _git_clone () { case "$prev" in -c|--config) __git_complete_config_variable_name_and_value return ;; esac case "$cur" in --config=*) __git_complete_config_variable_name_and_value \ --cur="${cur##--config=}" return ;; --*) __gitcomp_builtin clone return ;; esac } __git_untracked_file_modes="all no normal" _git_commit () { case "$prev" in -c|-C) __git_complete_refs return ;; esac case "$cur" in --cleanup=*) __gitcomp "default scissors strip verbatim whitespace " "" "${cur##--cleanup=}" return ;; --reuse-message=*|--reedit-message=*|\ --fixup=*|--squash=*) __git_complete_refs --cur="${cur#*=}" return ;; --untracked-files=*) __gitcomp "$__git_untracked_file_modes" "" "${cur##--untracked-files=}" return ;; --*) __gitcomp_builtin commit return esac if __git rev-parse --verify --quiet HEAD >/dev/null; then __git_complete_index_file "--committable" else # This is the first commit __git_complete_index_file "--cached" fi } _git_describe () { case "$cur" in --*) __gitcomp_builtin describe return esac __git_complete_refs } __git_diff_algorithms="myers minimal patience histogram" __git_diff_submodule_formats="diff log short" __git_diff_common_options="--stat --numstat --shortstat --summary --patch-with-stat --name-only --name-status --color --no-color --color-words --no-renames --check --full-index --binary --abbrev --diff-filter= --find-copies-harder --ignore-cr-at-eol --text --ignore-space-at-eol --ignore-space-change --ignore-all-space --ignore-blank-lines --exit-code --quiet --ext-diff --no-ext-diff --no-prefix --src-prefix= --dst-prefix= --inter-hunk-context= --patience --histogram --minimal --raw --word-diff --word-diff-regex= --dirstat --dirstat= --dirstat-by-file --dirstat-by-file= --cumulative --diff-algorithm= --submodule --submodule= --ignore-submodules --indent-heuristic --no-indent-heuristic --textconv --no-textconv " _git_diff () { __git_has_doubledash && return case "$cur" in --diff-algorithm=*) __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}" return ;; --submodule=*) __gitcomp "$__git_diff_submodule_formats" "" "${cur##--submodule=}" return ;; --*) __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex --base --ours --theirs --no-index $__git_diff_common_options " return ;; esac __git_complete_revlist_file } __git_mergetools_common="diffuse diffmerge ecmerge emerge kdiff3 meld opendiff tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc codecompare smerge " _git_difftool () { __git_has_doubledash && return case "$cur" in --tool=*) __gitcomp "$__git_mergetools_common kompare" "" "${cur##--tool=}" return ;; --*) __gitcomp_builtin difftool "$__git_diff_common_options --base --cached --ours --theirs --pickaxe-all --pickaxe-regex --relative --staged " return ;; esac __git_complete_revlist_file } __git_fetch_recurse_submodules="yes on-demand no" _git_fetch () { case "$cur" in --recurse-submodules=*) __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}" return ;; --filter=*) __gitcomp "blob:none blob:limit= sparse:oid=" "" "${cur##--filter=}" return ;; --*) __gitcomp_builtin fetch return ;; esac __git_complete_remote_or_refspec } __git_format_patch_extra_options=" --full-index --not --all --no-prefix --src-prefix= --dst-prefix= --notes " _git_format_patch () { case "$cur" in --thread=*) __gitcomp " deep shallow " "" "${cur##--thread=}" return ;; --*) __gitcomp_builtin format-patch "$__git_format_patch_extra_options" return ;; esac __git_complete_revlist } _git_fsck () { case "$cur" in --*) __gitcomp_builtin fsck return ;; esac } _git_gitk () { _gitk } # Lists matching symbol names from a tag (as in ctags) file. # 1: List symbol names matching this word. # 2: The tag file to list symbol names from. # 3: A prefix to be added to each listed symbol name (optional). # 4: A suffix to be appended to each listed symbol name (optional). __git_match_ctag () { awk -v pfx="${3-}" -v sfx="${4-}" " /^${1//\//\\/}/ { print pfx \$1 sfx } " "$2" } # Complete symbol names from a tag file. # Usage: __git_complete_symbol [<option>]... # --tags=<file>: The tag file to list symbol names from instead of the # default "tags". # --pfx=<prefix>: A prefix to be added to each symbol name. # --cur=<word>: The current symbol name to be completed. Defaults to # the current word to be completed. # --sfx=<suffix>: A suffix to be appended to each symbol name instead # of the default space. __git_complete_symbol () { local tags=tags pfx="" cur_="${cur-}" sfx=" " while test $# != 0; do case "$1" in --tags=*) tags="${1##--tags=}" ;; --pfx=*) pfx="${1##--pfx=}" ;; --cur=*) cur_="${1##--cur=}" ;; --sfx=*) sfx="${1##--sfx=}" ;; *) return 1 ;; esac shift done if test -r "$tags"; then __gitcomp_direct "$(__git_match_ctag "$cur_" "$tags" "$pfx" "$sfx")" fi } _git_grep () { __git_has_doubledash && return case "$cur" in --*) __gitcomp_builtin grep return ;; esac case "$cword,$prev" in 2,*|*,-*) __git_complete_symbol && return ;; esac __git_complete_refs } _git_help () { case "$cur" in --*) __gitcomp_builtin help return ;; esac if test -n "$GIT_TESTING_ALL_COMMAND_LIST" then __gitcomp "$GIT_TESTING_ALL_COMMAND_LIST $(__git --list-cmds=alias,list-guide) gitk" else __gitcomp "$(__git --list-cmds=main,nohelpers,alias,list-guide) gitk" fi } _git_init () { case "$cur" in --shared=*) __gitcomp " false true umask group all world everybody " "" "${cur##--shared=}" return ;; --*) __gitcomp_builtin init return ;; esac } _git_ls_files () { case "$cur" in --*) __gitcomp_builtin ls-files return ;; esac # XXX ignore options like --modified and always suggest all cached # files. __git_complete_index_file "--cached" } _git_ls_remote () { case "$cur" in --*) __gitcomp_builtin ls-remote return ;; esac __gitcomp_nl "$(__git_remotes)" } _git_ls_tree () { case "$cur" in --*) __gitcomp_builtin ls-tree return ;; esac __git_complete_file } # Options that go well for log, shortlog and gitk __git_log_common_options=" --not --all --branches --tags --remotes --first-parent --merges --no-merges --max-count= --max-age= --since= --after= --min-age= --until= --before= --min-parents= --max-parents= --no-min-parents --no-max-parents " # Options that go well for log and gitk (not shortlog) __git_log_gitk_options=" --dense --sparse --full-history --simplify-merges --simplify-by-decoration --left-right --notes --no-notes " # Options that go well for log and shortlog (not gitk) __git_log_shortlog_options=" --author= --committer= --grep= --all-match --invert-grep " __git_log_pretty_formats="oneline short medium full fuller reference email raw format: tformat: mboxrd" __git_log_date_formats="relative iso8601 iso8601-strict rfc2822 short local default raw unix format:" _git_log () { __git_has_doubledash && return __git_find_repo_path local merge="" if [ -f "$__git_repo_path/MERGE_HEAD" ]; then merge="--merge" fi case "$prev,$cur" in -L,:*:*) return # fall back to Bash filename completion ;; -L,:*) __git_complete_symbol --cur="${cur#:}" --sfx=":" return ;; -G,*|-S,*) __git_complete_symbol return ;; esac case "$cur" in --pretty=*|--format=*) __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases) " "" "${cur#*=}" return ;; --date=*) __gitcomp "$__git_log_date_formats" "" "${cur##--date=}" return ;; --decorate=*) __gitcomp "full short no" "" "${cur##--decorate=}" return ;; --diff-algorithm=*) __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}" return ;; --submodule=*) __gitcomp "$__git_diff_submodule_formats" "" "${cur##--submodule=}" return ;; --no-walk=*) __gitcomp "sorted unsorted" "" "${cur##--no-walk=}" return ;; --*) __gitcomp " $__git_log_common_options $__git_log_shortlog_options $__git_log_gitk_options --root --topo-order --date-order --reverse --follow --full-diff --abbrev-commit --no-abbrev-commit --abbrev= --relative-date --date= --pretty= --format= --oneline --show-signature --cherry-mark --cherry-pick --graph --decorate --decorate= --no-decorate --walk-reflogs --no-walk --no-walk= --do-walk --parents --children --expand-tabs --expand-tabs= --no-expand-tabs --patch $merge $__git_diff_common_options --pickaxe-all --pickaxe-regex " return ;; -L:*:*) return # fall back to Bash filename completion ;; -L:*) __git_complete_symbol --cur="${cur#-L:}" --sfx=":" return ;; -G*) __git_complete_symbol --pfx="-G" --cur="${cur#-G}" return ;; -S*) __git_complete_symbol --pfx="-S" --cur="${cur#-S}" return ;; esac __git_complete_revlist } _git_merge () { __git_complete_strategy && return case "$cur" in --*) __gitcomp_builtin merge return esac __git_complete_refs } _git_mergetool () { case "$cur" in --tool=*) __gitcomp "$__git_mergetools_common tortoisemerge" "" "${cur##--tool=}" return ;; --*) __gitcomp "--tool= --prompt --no-prompt --gui --no-gui" return ;; esac } _git_merge_base () { case "$cur" in --*) __gitcomp_builtin merge-base return ;; esac __git_complete_refs } _git_mv () { case "$cur" in --*) __gitcomp_builtin mv return ;; esac if [ $(__git_count_arguments "mv") -gt 0 ]; then # We need to show both cached and untracked files (including # empty directories) since this may not be the last argument. __git_complete_index_file "--cached --others --directory" else __git_complete_index_file "--cached" fi } _git_notes () { local subcommands='add append copy edit get-ref list merge prune remove show' local subcommand="$(__git_find_on_cmdline "$subcommands")" case "$subcommand,$cur" in ,--*) __gitcomp_builtin notes ;; ,*) case "$prev" in --ref) __git_complete_refs ;; *) __gitcomp "$subcommands --ref" ;; esac ;; *,--reuse-message=*|*,--reedit-message=*) __git_complete_refs --cur="${cur#*=}" ;; *,--*) __gitcomp_builtin notes_$subcommand ;; prune,*|get-ref,*) # this command does not take a ref, do not complete it ;; *) case "$prev" in -m|-F) ;; *) __git_complete_refs ;; esac ;; esac } _git_pull () { __git_complete_strategy && return case "$cur" in --recurse-submodules=*) __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}" return ;; --*) __gitcomp_builtin pull return ;; esac __git_complete_remote_or_refspec } __git_push_recurse_submodules="check on-demand only" __git_complete_force_with_lease () { local cur_=$1 case "$cur_" in --*=) ;; *:*) __git_complete_refs --cur="${cur_#*:}" ;; *) __git_complete_refs --cur="$cur_" ;; esac } _git_push () { case "$prev" in --repo) __gitcomp_nl "$(__git_remotes)" return ;; --recurse-submodules) __gitcomp "$__git_push_recurse_submodules" return ;; esac case "$cur" in --repo=*) __gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}" return ;; --recurse-submodules=*) __gitcomp "$__git_push_recurse_submodules" "" "${cur##--recurse-submodules=}" return ;; --force-with-lease=*) __git_complete_force_with_lease "${cur##--force-with-lease=}" return ;; --*) __gitcomp_builtin push return ;; esac __git_complete_remote_or_refspec } _git_range_diff () { case "$cur" in --*) __gitcomp " --creation-factor= --no-dual-color $__git_diff_common_options " return ;; esac __git_complete_revlist } __git_rebase_inprogress_options="--continue --skip --abort --quit --show-current-patch" __git_rebase_interactive_inprogress_options="$__git_rebase_inprogress_options --edit-todo" _git_rebase () { __git_find_repo_path if [ -f "$__git_repo_path"/rebase-merge/interactive ]; then __gitcomp "$__git_rebase_interactive_inprogress_options" return elif [ -d "$__git_repo_path"/rebase-apply ] || \ [ -d "$__git_repo_path"/rebase-merge ]; then __gitcomp "$__git_rebase_inprogress_options" return fi __git_complete_strategy && return case "$cur" in --whitespace=*) __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" return ;; --onto=*) __git_complete_refs --cur="${cur##--onto=}" return ;; --*) __gitcomp_builtin rebase "" \ "$__git_rebase_interactive_inprogress_options" return esac __git_complete_refs } _git_reflog () { local subcommands="show delete expire" local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then __gitcomp "$subcommands" else __git_complete_refs fi } __git_send_email_confirm_options="always never auto cc compose" __git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all" _git_send_email () { case "$prev" in --to|--cc|--bcc|--from) __gitcomp "$(__git send-email --dump-aliases)" return ;; esac case "$cur" in --confirm=*) __gitcomp " $__git_send_email_confirm_options " "" "${cur##--confirm=}" return ;; --suppress-cc=*) __gitcomp " $__git_send_email_suppresscc_options " "" "${cur##--suppress-cc=}" return ;; --smtp-encryption=*) __gitcomp "ssl tls" "" "${cur##--smtp-encryption=}" return ;; --thread=*) __gitcomp " deep shallow " "" "${cur##--thread=}" return ;; --to=*|--cc=*|--bcc=*|--from=*) __gitcomp "$(__git send-email --dump-aliases)" "" "${cur#--*=}" return ;; --*) __gitcomp_builtin send-email "--annotate --bcc --cc --cc-cmd --chain-reply-to --compose --confirm= --dry-run --envelope-sender --from --identity --in-reply-to --no-chain-reply-to --no-signed-off-by-cc --no-suppress-from --no-thread --quiet --reply-to --signed-off-by-cc --smtp-pass --smtp-server --smtp-server-port --smtp-encryption= --smtp-user --subject --suppress-cc= --suppress-from --thread --to --validate --no-validate $__git_format_patch_extra_options" return ;; esac __git_complete_revlist } _git_stage () { _git_add } _git_status () { local complete_opt local untracked_state case "$cur" in --ignore-submodules=*) __gitcomp "none untracked dirty all" "" "${cur##--ignore-submodules=}" return ;; --untracked-files=*) __gitcomp "$__git_untracked_file_modes" "" "${cur##--untracked-files=}" return ;; --column=*) __gitcomp " always never auto column row plain dense nodense " "" "${cur##--column=}" return ;; --*) __gitcomp_builtin status return ;; esac untracked_state="$(__git_get_option_value "-u" "--untracked-files=" \ "$__git_untracked_file_modes" "status.showUntrackedFiles")" case "$untracked_state" in no) # --ignored option does not matter complete_opt= ;; all|normal|*) complete_opt="--cached --directory --no-empty-directory --others" if [ -n "$(__git_find_on_cmdline "--ignored")" ]; then complete_opt="$complete_opt --ignored --exclude=*" fi ;; esac __git_complete_index_file "$complete_opt" } _git_switch () { case "$cur" in --conflict=*) __gitcomp "diff3 merge" "" "${cur##--conflict=}" ;; --*) __gitcomp_builtin switch ;; *) # check if --track, --no-track, or --no-guess was specified # if so, disable DWIM mode local track_opt="--track" only_local_ref=n if [ "$GIT_COMPLETION_CHECKOUT_NO_GUESS" = "1" ] || [ -n "$(__git_find_on_cmdline "--track --no-track --no-guess")" ]; then track_opt='' fi # explicit --guess enables DWIM mode regardless of # $GIT_COMPLETION_CHECKOUT_NO_GUESS if [ -n "$(__git_find_on_cmdline "--guess")" ]; then track_opt='--track' fi if [ -z "$(__git_find_on_cmdline "-d --detach")" ]; then only_local_ref=y else # --guess --detach is invalid combination, no # dwim will be done when --detach is specified track_opt= fi if [ $only_local_ref = y -a -z "$track_opt" ]; then __gitcomp_direct "$(__git_heads "" "$cur" " ")" else __git_complete_refs $track_opt fi ;; esac } __git_config_get_set_variables () { local prevword word config_file= c=$cword while [ $c -gt 1 ]; do word="${words[c]}" case "$word" in --system|--global|--local|--file=*) config_file="$word" break ;; -f|--file) config_file="$word $prevword" break ;; esac prevword=$word c=$((--c)) done __git config $config_file --name-only --list } __git_config_vars= __git_compute_config_vars () { test -n "$__git_config_vars" || __git_config_vars="$(git help --config-for-completion | sort -u)" } # Completes possible values of various configuration variables. # # Usage: __git_complete_config_variable_value [<option>]... # --varname=<word>: The name of the configuration variable whose value is # to be completed. Defaults to the previous word on the # command line. # --cur=<word>: The current value to be completed. Defaults to the current # word to be completed. __git_complete_config_variable_value () { local varname="$prev" cur_="$cur" while test $# != 0; do case "$1" in --varname=*) varname="${1##--varname=}" ;; --cur=*) cur_="${1##--cur=}" ;; *) return 1 ;; esac shift done if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then varname="${varname,,}" else varname="$(echo "$varname" |tr A-Z a-z)" fi case "$varname" in branch.*.remote|branch.*.pushremote) __gitcomp_nl "$(__git_remotes)" "" "$cur_" return ;; branch.*.merge) __git_complete_refs --cur="$cur_" return ;; branch.*.rebase) __gitcomp "false true merges preserve interactive" "" "$cur_" return ;; remote.pushdefault) __gitcomp_nl "$(__git_remotes)" "" "$cur_" return ;; remote.*.fetch) local remote="${varname#remote.}" remote="${remote%.fetch}" if [ -z "$cur_" ]; then __gitcomp_nl "refs/heads/" "" "" "" return fi __gitcomp_nl "$(__git_refs_remotes "$remote")" "" "$cur_" return ;; remote.*.push) local remote="${varname#remote.}" remote="${remote%.push}" __gitcomp_nl "$(__git for-each-ref \ --format='%(refname):%(refname)' refs/heads)" "" "$cur_" return ;; pull.twohead|pull.octopus) __git_compute_merge_strategies __gitcomp "$__git_merge_strategies" "" "$cur_" return ;; color.pager) __gitcomp "false true" "" "$cur_" return ;; color.*.*) __gitcomp " normal black red green yellow blue magenta cyan white bold dim ul blink reverse " "" "$cur_" return ;; color.*) __gitcomp "false true always never auto" "" "$cur_" return ;; diff.submodule) __gitcomp "$__git_diff_submodule_formats" "" "$cur_" return ;; help.format) __gitcomp "man info web html" "" "$cur_" return ;; log.date) __gitcomp "$__git_log_date_formats" "" "$cur_" return ;; sendemail.aliasfiletype) __gitcomp "mutt mailrc pine elm gnus" "" "$cur_" return ;; sendemail.confirm) __gitcomp "$__git_send_email_confirm_options" "" "$cur_" return ;; sendemail.suppresscc) __gitcomp "$__git_send_email_suppresscc_options" "" "$cur_" return ;; sendemail.transferencoding) __gitcomp "7bit 8bit quoted-printable base64" "" "$cur_" return ;; *.*) return ;; esac } # Completes configuration sections, subsections, variable names. # # Usage: __git_complete_config_variable_name [<option>]... # --cur=<word>: The current configuration section/variable name to be # completed. Defaults to the current word to be completed. # --sfx=<suffix>: A suffix to be appended to each fully completed # configuration variable name (but not to sections or # subsections) instead of the default space. __git_complete_config_variable_name () { local cur_="$cur" sfx while test $# != 0; do case "$1" in --cur=*) cur_="${1##--cur=}" ;; --sfx=*) sfx="${1##--sfx=}" ;; *) return 1 ;; esac shift done case "$cur_" in branch.*.*) local pfx="${cur_%.*}." cur_="${cur_##*.}" __gitcomp "remote pushRemote merge mergeOptions rebase" "$pfx" "$cur_" "$sfx" return ;; branch.*) local pfx="${cur%.*}." cur_="${cur#*.}" __gitcomp_direct "$(__git_heads "$pfx" "$cur_" ".")" __gitcomp_nl_append $'autoSetupMerge\nautoSetupRebase\n' "$pfx" "$cur_" "$sfx" return ;; guitool.*.*) local pfx="${cur_%.*}." cur_="${cur_##*.}" __gitcomp " argPrompt cmd confirm needsFile noConsole noRescan prompt revPrompt revUnmerged title " "$pfx" "$cur_" "$sfx" return ;; difftool.*.*) local pfx="${cur_%.*}." cur_="${cur_##*.}" __gitcomp "cmd path" "$pfx" "$cur_" "$sfx" return ;; man.*.*) local pfx="${cur_%.*}." cur_="${cur_##*.}" __gitcomp "cmd path" "$pfx" "$cur_" "$sfx" return ;; mergetool.*.*) local pfx="${cur_%.*}." cur_="${cur_##*.}" __gitcomp "cmd path trustExitCode" "$pfx" "$cur_" "$sfx" return ;; pager.*) local pfx="${cur_%.*}." cur_="${cur_#*.}" __git_compute_all_commands __gitcomp_nl "$__git_all_commands" "$pfx" "$cur_" "$sfx" return ;; remote.*.*) local pfx="${cur_%.*}." cur_="${cur_##*.}" __gitcomp " url proxy fetch push mirror skipDefaultUpdate receivepack uploadpack tagOpt pushurl " "$pfx" "$cur_" "$sfx" return ;; remote.*) local pfx="${cur_%.*}." cur_="${cur_#*.}" __gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "." __gitcomp_nl_append "pushDefault" "$pfx" "$cur_" "$sfx" return ;; url.*.*) local pfx="${cur_%.*}." cur_="${cur_##*.}" __gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur_" "$sfx" return ;; *.*) __git_compute_config_vars __gitcomp "$__git_config_vars" "" "$cur_" "$sfx" ;; *) __git_compute_config_vars __gitcomp "$(echo "$__git_config_vars" | awk -F . '{ sections[$1] = 1 } END { for (s in sections) print s "." } ')" "" "$cur_" ;; esac } # Completes '='-separated configuration sections/variable names and values # for 'git -c section.name=value'. # # Usage: __git_complete_config_variable_name_and_value [<option>]... # --cur=<word>: The current configuration section/variable name/value to be # completed. Defaults to the current word to be completed. __git_complete_config_variable_name_and_value () { local cur_="$cur" while test $# != 0; do case "$1" in --cur=*) cur_="${1##--cur=}" ;; *) return 1 ;; esac shift done case "$cur_" in *=*) __git_complete_config_variable_value \ --varname="${cur_%%=*}" --cur="${cur_#*=}" ;; *) __git_complete_config_variable_name --cur="$cur_" --sfx='=' ;; esac } _git_config () { case "$prev" in --get|--get-all|--unset|--unset-all) __gitcomp_nl "$(__git_config_get_set_variables)" return ;; *.*) __git_complete_config_variable_value return ;; esac case "$cur" in --*) __gitcomp_builtin config ;; *) __git_complete_config_variable_name ;; esac } _git_remote () { local subcommands=" add rename remove set-head set-branches get-url set-url show prune update " local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then case "$cur" in --*) __gitcomp_builtin remote ;; *) __gitcomp "$subcommands" ;; esac return fi case "$subcommand,$cur" in add,--*) __gitcomp_builtin remote_add ;; add,*) ;; set-head,--*) __gitcomp_builtin remote_set-head ;; set-branches,--*) __gitcomp_builtin remote_set-branches ;; set-head,*|set-branches,*) __git_complete_remote_or_refspec ;; update,--*) __gitcomp_builtin remote_update ;; update,*) __gitcomp "$(__git_remotes) $(__git_get_config_variables "remotes")" ;; set-url,--*) __gitcomp_builtin remote_set-url ;; get-url,--*) __gitcomp_builtin remote_get-url ;; prune,--*) __gitcomp_builtin remote_prune ;; *) __gitcomp_nl "$(__git_remotes)" ;; esac } _git_replace () { case "$cur" in --format=*) __gitcomp "short medium long" "" "${cur##--format=}" return ;; --*) __gitcomp_builtin replace return ;; esac __git_complete_refs } _git_rerere () { local subcommands="clear forget diff remaining status gc" local subcommand="$(__git_find_on_cmdline "$subcommands")" if test -z "$subcommand" then __gitcomp "$subcommands" return fi } _git_reset () { __git_has_doubledash && return case "$cur" in --*) __gitcomp_builtin reset return ;; esac __git_complete_refs } _git_restore () { case "$cur" in --conflict=*) __gitcomp "diff3 merge" "" "${cur##--conflict=}" ;; --source=*) __git_complete_refs --cur="${cur##--source=}" ;; --*) __gitcomp_builtin restore ;; esac } __git_revert_inprogress_options=$__git_sequencer_inprogress_options _git_revert () { __git_find_repo_path if [ -f "$__git_repo_path"/REVERT_HEAD ]; then __gitcomp "$__git_revert_inprogress_options" return fi __git_complete_strategy && return case "$cur" in --*) __gitcomp_builtin revert "" \ "$__git_revert_inprogress_options" return ;; esac __git_complete_refs } _git_rm () { case "$cur" in --*) __gitcomp_builtin rm return ;; esac __git_complete_index_file "--cached" } _git_shortlog () { __git_has_doubledash && return case "$cur" in --*) __gitcomp " $__git_log_common_options $__git_log_shortlog_options --numbered --summary --email " return ;; esac __git_complete_revlist } _git_show () { __git_has_doubledash && return case "$cur" in --pretty=*|--format=*) __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases) " "" "${cur#*=}" return ;; --diff-algorithm=*) __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}" return ;; --submodule=*) __gitcomp "$__git_diff_submodule_formats" "" "${cur##--submodule=}" return ;; --*) __gitcomp "--pretty= --format= --abbrev-commit --no-abbrev-commit --oneline --show-signature --patch --expand-tabs --expand-tabs= --no-expand-tabs $__git_diff_common_options " return ;; esac __git_complete_revlist_file } _git_show_branch () { case "$cur" in --*) __gitcomp_builtin show-branch return ;; esac __git_complete_revlist } _git_stash () { local save_opts='--all --keep-index --no-keep-index --quiet --patch --include-untracked' local subcommands='push list show apply clear drop pop create branch' local subcommand="$(__git_find_on_cmdline "$subcommands save")" if [ -n "$(__git_find_on_cmdline "-p")" ]; then subcommand="push" fi if [ -z "$subcommand" ]; then case "$cur" in --*) __gitcomp "$save_opts" ;; sa*) if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then __gitcomp "save" fi ;; *) if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then __gitcomp "$subcommands" fi ;; esac else case "$subcommand,$cur" in push,--*) __gitcomp "$save_opts --message" ;; save,--*) __gitcomp "$save_opts" ;; apply,--*|pop,--*) __gitcomp "--index --quiet" ;; drop,--*) __gitcomp "--quiet" ;; list,--*) __gitcomp "--name-status --oneline --patch-with-stat" ;; show,--*|branch,--*) ;; branch,*) if [ $cword -eq 3 ]; then __git_complete_refs else __gitcomp_nl "$(__git stash list \ | sed -n -e 's/:.*//p')" fi ;; show,*|apply,*|drop,*|pop,*) __gitcomp_nl "$(__git stash list \ | sed -n -e 's/:.*//p')" ;; *) ;; esac fi } _git_submodule () { __git_has_doubledash && return local subcommands="add status init deinit update set-branch set-url summary foreach sync absorbgitdirs" local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then case "$cur" in --*) __gitcomp "--quiet" ;; *) __gitcomp "$subcommands" ;; esac return fi case "$subcommand,$cur" in add,--*) __gitcomp "--branch --force --name --reference --depth" ;; status,--*) __gitcomp "--cached --recursive" ;; deinit,--*) __gitcomp "--force --all" ;; update,--*) __gitcomp " --init --remote --no-fetch --recommend-shallow --no-recommend-shallow --force --rebase --merge --reference --depth --recursive --jobs " ;; set-branch,--*) __gitcomp "--default --branch" ;; summary,--*) __gitcomp "--cached --files --summary-limit" ;; foreach,--*|sync,--*) __gitcomp "--recursive" ;; *) ;; esac } _git_svn () { local subcommands=" init fetch clone rebase dcommit log find-rev set-tree commit-diff info create-ignore propget proplist show-ignore show-externals branch tag blame migrate mkdirs reset gc " local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then __gitcomp "$subcommands" else local remote_opts="--username= --config-dir= --no-auth-cache" local fc_opts=" --follow-parent --authors-file= --repack= --no-metadata --use-svm-props --use-svnsync-props --log-window-size= --no-checkout --quiet --repack-flags --use-log-author --localtime --add-author-from --recursive --ignore-paths= --include-paths= $remote_opts " local init_opts=" --template= --shared= --trunk= --tags= --branches= --stdlayout --minimize-url --no-metadata --use-svm-props --use-svnsync-props --rewrite-root= --prefix= $remote_opts " local cmt_opts=" --edit --rmdir --find-copies-harder --copy-similarity= " case "$subcommand,$cur" in fetch,--*) __gitcomp "--revision= --fetch-all $fc_opts" ;; clone,--*) __gitcomp "--revision= $fc_opts $init_opts" ;; init,--*) __gitcomp "$init_opts" ;; dcommit,--*) __gitcomp " --merge --strategy= --verbose --dry-run --fetch-all --no-rebase --commit-url --revision --interactive $cmt_opts $fc_opts " ;; set-tree,--*) __gitcomp "--stdin $cmt_opts $fc_opts" ;; create-ignore,--*|propget,--*|proplist,--*|show-ignore,--*|\ show-externals,--*|mkdirs,--*) __gitcomp "--revision=" ;; log,--*) __gitcomp " --limit= --revision= --verbose --incremental --oneline --show-commit --non-recursive --authors-file= --color " ;; rebase,--*) __gitcomp " --merge --verbose --strategy= --local --fetch-all --dry-run $fc_opts " ;; commit-diff,--*) __gitcomp "--message= --file= --revision= $cmt_opts" ;; info,--*) __gitcomp "--url" ;; branch,--*) __gitcomp "--dry-run --message --tag" ;; tag,--*) __gitcomp "--dry-run --message" ;; blame,--*) __gitcomp "--git-format" ;; migrate,--*) __gitcomp " --config-dir= --ignore-paths= --minimize --no-auth-cache --username= " ;; reset,--*) __gitcomp "--revision= --parent" ;; *) ;; esac fi } _git_tag () { local i c=1 f=0 while [ $c -lt $cword ]; do i="${words[c]}" case "$i" in -d|--delete|-v|--verify) __gitcomp_direct "$(__git_tags "" "$cur" " ")" return ;; -f) f=1 ;; esac ((c++)) done case "$prev" in -m|-F) ;; -*|tag) if [ $f = 1 ]; then __gitcomp_direct "$(__git_tags "" "$cur" " ")" fi ;; *) __git_complete_refs ;; esac case "$cur" in --*) __gitcomp_builtin tag ;; esac } _git_whatchanged () { _git_log } _git_worktree () { local subcommands="add list lock move prune remove unlock" local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then __gitcomp "$subcommands" else case "$subcommand,$cur" in add,--*) __gitcomp_builtin worktree_add ;; list,--*) __gitcomp_builtin worktree_list ;; lock,--*) __gitcomp_builtin worktree_lock ;; prune,--*) __gitcomp_builtin worktree_prune ;; remove,--*) __gitcomp "--force" ;; *) ;; esac fi } __git_complete_common () { local command="$1" case "$cur" in --*) __gitcomp_builtin "$command" ;; esac } __git_cmds_with_parseopt_helper= __git_support_parseopt_helper () { test -n "$__git_cmds_with_parseopt_helper" || __git_cmds_with_parseopt_helper="$(__git --list-cmds=parseopt)" case " $__git_cmds_with_parseopt_helper " in *" $1 "*) return 0 ;; *) return 1 ;; esac } __git_complete_command () { local command="$1" local completion_func="_git_${command//-/_}" if ! declare -f $completion_func >/dev/null 2>/dev/null && declare -f _completion_loader >/dev/null 2>/dev/null then _completion_loader "git-$command" fi if declare -f $completion_func >/dev/null 2>/dev/null then $completion_func return 0 elif __git_support_parseopt_helper "$command" then __git_complete_common "$command" return 0 else return 1 fi } __git_main () { local i c=1 command __git_dir __git_repo_path local __git_C_args C_args_count=0 while [ $c -lt $cword ]; do i="${words[c]}" case "$i" in --git-dir=*) __git_dir="${i#--git-dir=}" ;; --git-dir) ((c++)) ; __git_dir="${words[c]}" ;; --bare) __git_dir="." ;; --help) command="help"; break ;; -c|--work-tree|--namespace) ((c++)) ;; -C) __git_C_args[C_args_count++]=-C ((c++)) __git_C_args[C_args_count++]="${words[c]}" ;; -*) ;; *) command="$i"; break ;; esac ((c++)) done if [ -z "$command" ]; then case "$prev" in --git-dir|-C|--work-tree) # these need a path argument, let's fall back to # Bash filename completion return ;; -c) __git_complete_config_variable_name_and_value return ;; --namespace) # we don't support completing these options' arguments return ;; esac case "$cur" in --*) __gitcomp " --paginate --no-pager --git-dir= --bare --version --exec-path --exec-path= --html-path --man-path --info-path --work-tree= --namespace= --no-replace-objects --help " ;; *) if test -n "$GIT_TESTING_PORCELAIN_COMMAND_LIST" then __gitcomp "$GIT_TESTING_PORCELAIN_COMMAND_LIST" else __gitcomp "$(__git --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config)" fi ;; esac return fi __git_complete_command "$command" && return local expansion=$(__git_aliased_command "$command") if [ -n "$expansion" ]; then words[1]=$expansion __git_complete_command "$expansion" fi } __gitk_main () { __git_has_doubledash && return local __git_repo_path __git_find_repo_path local merge="" if [ -f "$__git_repo_path/MERGE_HEAD" ]; then merge="--merge" fi case "$cur" in --*) __gitcomp " $__git_log_common_options $__git_log_gitk_options $merge " return ;; esac __git_complete_revlist } if [[ -n ${ZSH_VERSION-} ]] && # Don't define these functions when sourced from 'git-completion.zsh', # it has its own implementations. [[ -z ${GIT_SOURCING_ZSH_COMPLETION-} ]]; then echo "WARNING: this script is deprecated, please see git-completion.zsh" 1>&2 autoload -U +X compinit && compinit __gitcomp () { emulate -L zsh local cur_="${3-$cur}" case "$cur_" in --*=) ;; *) local c IFS=$' \t\n' local -a array for c in ${=1}; do c="$c${4-}" case $c in --*=*|*.) ;; *) c="$c " ;; esac array[${#array[@]}+1]="$c" done compset -P '*[=:]' compadd -Q -S '' -p "${2-}" -a -- array && _ret=0 ;; esac } __gitcomp_direct () { emulate -L zsh local IFS=$'\n' compset -P '*[=:]' compadd -Q -- ${=1} && _ret=0 } __gitcomp_nl () { emulate -L zsh local IFS=$'\n' compset -P '*[=:]' compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0 } __gitcomp_file_direct () { emulate -L zsh local IFS=$'\n' compset -P '*[=:]' compadd -f -- ${=1} && _ret=0 } __gitcomp_file () { emulate -L zsh local IFS=$'\n' compset -P '*[=:]' compadd -p "${2-}" -f -- ${=1} && _ret=0 } _git () { local _ret=1 cur cword prev cur=${words[CURRENT]} prev=${words[CURRENT-1]} let cword=CURRENT-1 emulate ksh -c __${service}_main let _ret && _default && _ret=0 return _ret } compdef _git git gitk return fi __git_func_wrap () { local cur words cword prev _get_comp_words_by_ref -n =: cur words cword prev $1 } # Setup completion for certain functions defined above by setting common # variables and workarounds. # This is NOT a public function; use at your own risk. __git_complete () { local wrapper="__git_wrap${2}" eval "$wrapper () { __git_func_wrap $2 ; }" complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \ || complete -o default -o nospace -F $wrapper $1 } # wrapper for backwards compatibility _git () { __git_wrap__git_main } # wrapper for backwards compatibility _gitk () { __git_wrap__gitk_main } __git_complete git __git_main __git_complete gitk __gitk_main # The following are necessary only for Cygwin, and only are needed # when the user has tab-completed the executable name and consequently # included the '.exe' suffix. # if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then __git_complete git.exe __git_main fi
Save
cmd:
run