Linux web-conference.aiou.edu.pk 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64
Apache/2.4.41 (Ubuntu)
: 172.16.50.247 | : 18.118.161.96
Cant Read [ /etc/named.conf ]
7.4.3-4ubuntu2.28
appadmin
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
usr /
share /
bash-completion /
completions /
[ HOME SHELL ]
Name
Size
Permission
Action
2to3
908
B
-rw-r--r--
7z
4.12
KB
-rw-r--r--
7za
4.12
KB
-rw-r--r--
_adb
1.74
KB
-rw-r--r--
_cal
926
B
-rw-r--r--
_chfn
238
B
-rw-r--r--
_chsh
690
B
-rw-r--r--
_dmesg
909
B
-rw-r--r--
_eject
793
B
-rw-r--r--
_hexdump
669
B
-rw-r--r--
_hwclock
605
B
-rw-r--r--
_ionice
1.23
KB
-rw-r--r--
_look
447
B
-rw-r--r--
_mock
2.01
KB
-rw-r--r--
_modules
2.48
KB
-rw-r--r--
_mount
2.02
KB
-rw-r--r--
_mount.linux
10.47
KB
-rw-r--r--
_newgrp
432
B
-rw-r--r--
_nmcli
6.1
KB
-rw-r--r--
_renice
769
B
-rw-r--r--
_repomanage
605
B
-rw-r--r--
_reptyr
547
B
-rw-r--r--
_rfkill
931
B
-rw-r--r--
_rtcwake
863
B
-rw-r--r--
_runuser
241
B
-rw-r--r--
_su
981
B
-rw-r--r--
_svn
8.62
KB
-rw-r--r--
_svnadmin
2.27
KB
-rw-r--r--
_svnlook
1.94
KB
-rw-r--r--
_udevadm
2.08
KB
-rw-r--r--
_umount
629
B
-rw-r--r--
_umount.linux
4.47
KB
-rw-r--r--
_write
239
B
-rw-r--r--
_xm
7.53
KB
-rw-r--r--
_yum
4.37
KB
-rw-r--r--
a2disconf
1.44
KB
-rw-r--r--
a2dismod
1.44
KB
-rw-r--r--
a2dissite
1.44
KB
-rw-r--r--
a2enconf
1.44
KB
-rw-r--r--
a2enmod
1.44
KB
-rw-r--r--
a2ensite
1.44
KB
-rw-r--r--
a2x
895
B
-rw-r--r--
abook
1.18
KB
-rw-r--r--
aclocal
844
B
-rw-r--r--
aclocal-1.10
844
B
-rw-r--r--
aclocal-1.11
844
B
-rw-r--r--
aclocal-1.12
844
B
-rw-r--r--
aclocal-1.13
844
B
-rw-r--r--
aclocal-1.14
844
B
-rw-r--r--
aclocal-1.15
844
B
-rw-r--r--
aclocal-1.16
844
B
-rw-r--r--
acpi
452
B
-rw-r--r--
add_members
761
B
-rw-r--r--
addpart
447
B
-rw-r--r--
alias
490
B
-rw-r--r--
alpine
873
B
-rw-r--r--
alternatives
2.35
KB
-rw-r--r--
animate
8.79
KB
-rw-r--r--
ant
2.71
KB
-rw-r--r--
apache2ctl
380
B
-rw-r--r--
appdata-validate
788
B
-rw-r--r--
apropos
2.8
KB
-rw-r--r--
apt
6.94
KB
-rw-r--r--
apt-build
1.42
KB
-rw-r--r--
apt-cache
1.99
KB
-rw-r--r--
apt-get
3.7
KB
-rw-r--r--
aptitude
3
KB
-rw-r--r--
aptitude-curses
3
KB
-rw-r--r--
arch
1.05
KB
-rw-r--r--
arm-koji
6.17
KB
-rw-r--r--
arp
1.55
KB
-rw-r--r--
arping
599
B
-rw-r--r--
arpspoof
564
B
-rw-r--r--
asciidoc
1.16
KB
-rw-r--r--
asciidoc.py
1.16
KB
-rw-r--r--
aspell
3.29
KB
-rw-r--r--
autoconf
947
B
-rw-r--r--
autoheader
1009
B
-rw-r--r--
automake
868
B
-rw-r--r--
automake-1.10
868
B
-rw-r--r--
automake-1.11
868
B
-rw-r--r--
automake-1.12
868
B
-rw-r--r--
automake-1.13
868
B
-rw-r--r--
automake-1.14
868
B
-rw-r--r--
automake-1.15
868
B
-rw-r--r--
automake-1.16
868
B
-rw-r--r--
autoreconf
1009
B
-rw-r--r--
autorpm
348
B
-rw-r--r--
autoscan
739
B
-rw-r--r--
autossh
15.54
KB
-rw-r--r--
autoupdate
739
B
-rw-r--r--
avctrl
471
B
-rw-r--r--
badblocks
595
B
-rw-r--r--
bind
832
B
-rw-r--r--
bk
429
B
-rw-r--r--
blkdiscard
639
B
-rw-r--r--
blkid
2.07
KB
-rw-r--r--
blkzone
971
B
-rw-r--r--
blockdev
725
B
-rw-r--r--
bootctl
2.85
KB
-rw-r--r--
brctl
1.02
KB
-rw-r--r--
bsdtar
18.47
KB
-rw-r--r--
btdownloadcurses.py
1.03
KB
-rw-r--r--
btdownloadgui.py
1.03
KB
-rw-r--r--
btdownloadheadless.py
1.03
KB
-rw-r--r--
btrfs
3.38
KB
-rw-r--r--
busctl
7.18
KB
-rw-r--r--
bzip2
1.06
KB
-rw-r--r--
c++
2.58
KB
-rw-r--r--
cancel
555
B
-rw-r--r--
cardctl
380
B
-rw-r--r--
carton
1.8
KB
-rw-r--r--
cc
2.58
KB
-rw-r--r--
ccache
1014
B
-rw-r--r--
ccze
1.16
KB
-rw-r--r--
cdrecord
3.49
KB
-rw-r--r--
cfagent
419
B
-rw-r--r--
cfdisk
546
B
-rw-r--r--
cfrun
1.25
KB
-rw-r--r--
chage
651
B
-rw-r--r--
change_pw
529
B
-rw-r--r--
chcpu
1.49
KB
-rw-r--r--
check_db
374
B
-rw-r--r--
check_perms
319
B
-rw-r--r--
checksec
738
B
-rw-r--r--
chgrp
949
B
-rw-r--r--
chkconfig
903
B
-rw-r--r--
chmem
501
B
-rw-r--r--
chmod
867
B
-rw-r--r--
chown
1.08
KB
-rw-r--r--
chpasswd
687
B
-rw-r--r--
chrome
1.37
KB
-rw-r--r--
chromium
1.37
KB
-rw-r--r--
chromium-browser
1.37
KB
-rw-r--r--
chronyc
1.53
KB
-rw-r--r--
chrpath
528
B
-rw-r--r--
chrt
920
B
-rw-r--r--
ci
890
B
-rw-r--r--
ciptool
9.45
KB
-rw-r--r--
civclient
1.02
KB
-rw-r--r--
civserver
473
B
-rw-r--r--
cksfv
520
B
-rw-r--r--
cleanarch
352
B
-rw-r--r--
clisp
668
B
-rw-r--r--
clone_member
540
B
-rw-r--r--
cloud-init
3.24
KB
-rw-r--r--
clzip
1.1
KB
-rw-r--r--
co
890
B
-rw-r--r--
colormake
6.02
KB
-rw-r--r--
compare
8.79
KB
-rw-r--r--
compgen
1.43
KB
-rw-r--r--
complete
1.43
KB
-rw-r--r--
composite
8.79
KB
-rw-r--r--
config_list
580
B
-rw-r--r--
configure
1.16
KB
-rw-r--r--
conjure
8.79
KB
-rw-r--r--
convert
8.79
KB
-rw-r--r--
cowsay
543
B
-rw-r--r--
cowthink
543
B
-rw-r--r--
cpan2dist
1.19
KB
-rw-r--r--
cpio
2.85
KB
-rw-r--r--
cppcheck
2.54
KB
-rw-r--r--
createdb
4.19
KB
-rw-r--r--
createuser
4.19
KB
-rw-r--r--
crontab
1.16
KB
-rw-r--r--
cryptdisks
1.18
KB
-rw-r--r--
cryptsetup
2.91
KB
-rw-r--r--
ctrlaltdel
335
B
-rw-r--r--
curl
3.08
KB
-rw-r--r--
cvs
11.71
KB
-rw-r--r--
cvsps
1.45
KB
-rw-r--r--
dcop
379
B
-rw-r--r--
dd
1.26
KB
-rw-r--r--
debconf
294
B
-rw-r--r--
debconf-show
294
B
-rw-r--r--
declare
1.25
KB
-rw-r--r--
deja-dup
681
B
-rw-r--r--
delpart
526
B
-rw-r--r--
desktop-file-validate
472
B
-rw-r--r--
dfutool
9.45
KB
-rw-r--r--
dhclient
696
B
-rw-r--r--
dict
1.76
KB
-rw-r--r--
display
8.79
KB
-rw-r--r--
dmesg
1.15
KB
-rw-r--r--
dmypy
1.05
KB
-rw-r--r--
dnssec-keygen
1.13
KB
-rw-r--r--
dnsspoof
500
B
-rw-r--r--
docker
111.88
KB
-rw-r--r--
dot
1.25
KB
-rw-r--r--
dpkg
3.97
KB
-rw-r--r--
dpkg-deb
3.97
KB
-rw-r--r--
dpkg-query
3.97
KB
-rw-r--r--
dpkg-reconfigure
3.97
KB
-rw-r--r--
dpkg-source
3.25
KB
-rw-r--r--
dropdb
4.19
KB
-rw-r--r--
dropuser
4.19
KB
-rw-r--r--
dselect
615
B
-rw-r--r--
dsniff
512
B
-rw-r--r--
dumpdb
371
B
-rw-r--r--
dumpe2fs
518
B
-rw-r--r--
e2freefrag
458
B
-rw-r--r--
e2label
292
B
-rw-r--r--
eatmydata
31
B
-rw-r--r--
ebtables
3.53
KB
-rw-r--r--
ecryptfs-migrate-home
497
B
-rw-r--r--
edquota
3.58
KB
-rw-r--r--
eog
634
B
-rw-r--r--
ether-wake
537
B
-rw-r--r--
etherwake
537
B
-rw-r--r--
ethtool
23.46
KB
-rw-r--r--
evince
935
B
-rw-r--r--
explodepkg
152
B
-rw-r--r--
export
1.56
KB
-rw-r--r--
f77
2.58
KB
-rw-r--r--
f95
2.58
KB
-rw-r--r--
faillog
629
B
-rw-r--r--
fallocate
721
B
-rw-r--r--
fbgs
1.52
KB
-rw-r--r--
fbi
1.77
KB
-rw-r--r--
fdformat
566
B
-rw-r--r--
fdisk
1.79
KB
-rw-r--r--
feh
4.04
KB
-rw-r--r--
file
743
B
-rw-r--r--
file-roller
1.07
KB
-rw-r--r--
filebucket
9.51
KB
-rw-r--r--
filefrag
350
B
-rw-r--r--
filesnarf
447
B
-rw-r--r--
fincore
916
B
-rw-r--r--
find
3.81
KB
-rw-r--r--
find_member
535
B
-rw-r--r--
findfs
695
B
-rw-r--r--
findmnt
3.12
KB
-rw-r--r--
fio
2.31
KB
-rw-r--r--
firefox
1.14
KB
-rw-r--r--
flake8
987
B
-rw-r--r--
flock
874
B
-rw-r--r--
freebsd-update
587
B
-rw-r--r--
freeciv
1.02
KB
-rw-r--r--
freeciv-gtk2
1.02
KB
-rw-r--r--
freeciv-gtk3
1.02
KB
-rw-r--r--
freeciv-sdl
1.02
KB
-rw-r--r--
freeciv-server
473
B
-rw-r--r--
freeciv-xaw
1.02
KB
-rw-r--r--
fsck
787
B
-rw-r--r--
fsck.cramfs
684
B
-rw-r--r--
fsck.minix
383
B
-rw-r--r--
fsfreeze
524
B
-rw-r--r--
fstrim
715
B
-rw-r--r--
function
1.25
KB
-rw-r--r--
fusermount
640
B
-rw-r--r--
fwupdagent
610
B
-rw-r--r--
fwupdmgr
3.65
KB
-rw-r--r--
fwupdtool
3.26
KB
-rw-r--r--
g++
2.58
KB
-rw-r--r--
g++-5
2.58
KB
-rw-r--r--
g++-6
2.58
KB
-rw-r--r--
g++-7
2.58
KB
-rw-r--r--
g++-8
2.58
KB
-rw-r--r--
g4
1.44
KB
-rw-r--r--
g77
2.58
KB
-rw-r--r--
g95
2.58
KB
-rw-r--r--
gapplication
1.36
KB
-rw-r--r--
gcc
2.58
KB
-rw-r--r--
gcc-5
2.58
KB
-rw-r--r--
gcc-6
2.58
KB
-rw-r--r--
gcc-7
2.58
KB
-rw-r--r--
gcc-8
2.58
KB
-rw-r--r--
gccgo
2.58
KB
-rw-r--r--
gccgo-5
2.58
KB
-rw-r--r--
gccgo-6
2.58
KB
-rw-r--r--
gccgo-7
2.58
KB
-rw-r--r--
gccgo-8
2.58
KB
-rw-r--r--
gcj
2.58
KB
-rw-r--r--
gcl
615
B
-rw-r--r--
gdb
1.6
KB
-rw-r--r--
gdbus
935
B
-rw-r--r--
genaliases
322
B
-rw-r--r--
gendiff
267
B
-rw-r--r--
genisoimage
861
B
-rw-r--r--
geoiplookup
677
B
-rw-r--r--
geoiplookup6
677
B
-rw-r--r--
getconf
798
B
-rw-r--r--
getent
1.92
KB
-rw-r--r--
getopt
815
B
-rw-r--r--
gfortran
2.58
KB
-rw-r--r--
gfortran-5
2.58
KB
-rw-r--r--
gfortran-6
2.58
KB
-rw-r--r--
gfortran-7
2.58
KB
-rw-r--r--
gfortran-8
2.58
KB
-rw-r--r--
gio
3.67
KB
-rw-r--r--
git
68.43
KB
-rw-r--r--
gitk
68.43
KB
-rw-r--r--
gkrellm
915
B
-rw-r--r--
gkrellm2
915
B
-rw-r--r--
gm
854
B
-rw-r--r--
gmake
6.02
KB
-rw-r--r--
gmplayer
11.02
KB
-rw-r--r--
gnatmake
1015
B
-rw-r--r--
gnokii
6.76
KB
-rw-r--r--
gnome-mplayer
940
B
-rw-r--r--
gnome-screenshot
793
B
-rw-r--r--
gnumake
6.02
KB
-rw-r--r--
google-chrome
1.37
KB
-rw-r--r--
google-chrome-stable
1.37
KB
-rw-r--r--
gpasswd
598
B
-rw-r--r--
gpc
2.58
KB
-rw-r--r--
gpg
1.24
KB
-rw-r--r--
gpg2
1.3
KB
-rw-r--r--
gpgv
1.09
KB
-rw-r--r--
gpgv2
1.09
KB
-rw-r--r--
gphoto2
1.36
KB
-rw-r--r--
gprof
1.27
KB
-rw-r--r--
gresource
1.32
KB
-rw-r--r--
groupadd
610
B
-rw-r--r--
groupdel
536
B
-rw-r--r--
groupmems
603
B
-rw-r--r--
groupmod
681
B
-rw-r--r--
growisofs
888
B
-rw-r--r--
grpck
496
B
-rw-r--r--
grub
10.39
KB
-rw-r--r--
grub-bios-setup
10.39
KB
-rw-r--r--
grub-editenv
10.39
KB
-rw-r--r--
grub-install
10.39
KB
-rw-r--r--
grub-mkconfig
10.39
KB
-rw-r--r--
grub-mkfont
10.39
KB
-rw-r--r--
grub-mkimage
10.39
KB
-rw-r--r--
grub-mkpasswd-pbkdf2
10.39
KB
-rw-r--r--
grub-mkrescue
10.39
KB
-rw-r--r--
grub-probe
10.39
KB
-rw-r--r--
grub-reboot
10.39
KB
-rw-r--r--
grub-script-check
10.39
KB
-rw-r--r--
grub-set-default
10.39
KB
-rw-r--r--
gsettings
2.76
KB
-rw-r--r--
gssdp-discover
866
B
-rw-r--r--
gtar
18.47
KB
-rw-r--r--
gzip
1.14
KB
-rw-r--r--
hciattach
9.45
KB
-rw-r--r--
hciconfig
9.45
KB
-rw-r--r--
hcitool
9.45
KB
-rw-r--r--
hd
669
B
-rw-r--r--
hddtemp
871
B
-rw-r--r--
hid2hci
348
B
-rw-r--r--
host
1.96
KB
-rw-r--r--
hostname
485
B
-rw-r--r--
hostnamectl
2.02
KB
-rw-r--r--
hping
786
B
-rw-r--r--
hping2
786
B
-rw-r--r--
hping3
786
B
-rw-r--r--
htop
802
B
-rw-r--r--
htpasswd
912
B
-rw-r--r--
hunspell
1
KB
-rw-r--r--
hwclock
960
B
-rw-r--r--
iceweasel
1.14
KB
-rw-r--r--
iconv
904
B
-rw-r--r--
id
435
B
-rw-r--r--
identify
8.79
KB
-rw-r--r--
idn
657
B
-rw-r--r--
ifdown
898
B
-rw-r--r--
ifquery
898
B
-rw-r--r--
ifstat
1.93
KB
-rw-r--r--
ifstatus
898
B
-rw-r--r--
iftop
504
B
-rw-r--r--
ifup
898
B
-rw-r--r--
import
8.79
KB
-rw-r--r--
influx
824
B
-rw-r--r--
info
1.88
KB
-rw-r--r--
inject
508
B
-rw-r--r--
inotifywait
1.23
KB
-rw-r--r--
inotifywatch
1.23
KB
-rw-r--r--
insmod
517
B
-rw-r--r--
insmod.static
517
B
-rw-r--r--
installpkg
733
B
-rw-r--r--
interdiff
763
B
-rw-r--r--
invoke-rc.d
1.19
KB
-rw-r--r--
ionice
1.13
KB
-rw-r--r--
ip
10.25
KB
-rw-r--r--
ipcmk
576
B
-rw-r--r--
ipcrm
1.39
KB
-rw-r--r--
ipcs
514
B
-rw-r--r--
iperf
1.98
KB
-rw-r--r--
iperf3
1.98
KB
-rw-r--r--
ipmitool
5.61
KB
-rw-r--r--
ipsec
3.1
KB
-rw-r--r--
iptables
1.84
KB
-rw-r--r--
ipv6calc
1
KB
-rw-r--r--
iscsiadm
1.87
KB
-rw-r--r--
isort
1.24
KB
-rw-r--r--
isosize
529
B
-rw-r--r--
isql
352
B
-rw-r--r--
iwconfig
2.73
KB
-rw-r--r--
iwlist
613
B
-rw-r--r--
iwpriv
735
B
-rw-r--r--
iwspy
484
B
-rw-r--r--
jar
499
B
-rw-r--r--
jarsigner
1.61
KB
-rw-r--r--
java
8.71
KB
-rw-r--r--
javac
8.71
KB
-rw-r--r--
javadoc
8.71
KB
-rw-r--r--
javaws
770
B
-rw-r--r--
journalctl
5.87
KB
-rw-r--r--
jpegoptim
878
B
-rw-r--r--
jps
595
B
-rw-r--r--
jq
1.17
KB
-rw-r--r--
jshint
886
B
-rw-r--r--
json_xs
865
B
-rw-r--r--
jsonschema
635
B
-rw-r--r--
k3b
1.13
KB
-rw-r--r--
kcov
1.72
KB
-rw-r--r--
kernel-install
1.64
KB
-rw-r--r--
kill
577
B
-rw-r--r--
killall
774
B
-rw-r--r--
kldload
475
B
-rw-r--r--
kldunload
372
B
-rw-r--r--
kmod
3.16
KB
-rw-r--r--
koji
6.17
KB
-rw-r--r--
kplayer
11.02
KB
-rw-r--r--
ktutil
2.93
KB
-rw-r--r--
l2ping
9.45
KB
-rw-r--r--
larch
1.93
KB
-rw-r--r--
last
949
B
-rw-r--r--
lastlog
573
B
-rw-r--r--
lbzip2
1.06
KB
-rw-r--r--
ldapadd
4.36
KB
-rw-r--r--
ldapcompare
4.36
KB
-rw-r--r--
ldapdelete
4.36
KB
-rw-r--r--
ldapmodify
4.36
KB
-rw-r--r--
ldapmodrdn
4.36
KB
-rw-r--r--
ldappasswd
4.36
KB
-rw-r--r--
ldapsearch
4.36
KB
-rw-r--r--
ldapvi
1.35
KB
-rw-r--r--
ldapwhoami
4.36
KB
-rw-r--r--
ldattach
1.44
KB
-rw-r--r--
lftp
683
B
-rw-r--r--
lftpget
306
B
-rw-r--r--
lilo
1.16
KB
-rw-r--r--
links
3.1
KB
-rw-r--r--
links2
3.1
KB
-rw-r--r--
lintian
5.25
KB
-rw-r--r--
lintian-info
5.25
KB
-rw-r--r--
lisp
633
B
-rw-r--r--
list_admins
385
B
-rw-r--r--
list_lists
465
B
-rw-r--r--
list_members
852
B
-rw-r--r--
list_owners
411
B
-rw-r--r--
locale-gen
710
B
-rw-r--r--
localectl
3.24
KB
-rw-r--r--
logger
1.52
KB
-rw-r--r--
loginctl
3.97
KB
-rw-r--r--
losetup
1.7
KB
-rw-r--r--
lpq
594
B
-rw-r--r--
lpr
904
B
-rw-r--r--
lrzip
1.09
KB
-rw-r--r--
lsblk
1.98
KB
-rw-r--r--
lscpu
1.04
KB
-rw-r--r--
lsipc
1.28
KB
-rw-r--r--
lslocks
1.06
KB
-rw-r--r--
lslogins
1.69
KB
-rw-r--r--
lsmem
1.04
KB
-rw-r--r--
lsns
1.16
KB
-rw-r--r--
lsof
1.35
KB
-rw-r--r--
lsscsi
583
B
-rw-r--r--
lsusb
417
B
-rw-r--r--
lua
430
B
-rw-r--r--
luac
482
B
-rw-r--r--
luseradd
1011
B
-rw-r--r--
luserdel
475
B
-rw-r--r--
lusermod
1011
B
-rw-r--r--
lvchange
18.9
KB
-rw-r--r--
lvcreate
18.9
KB
-rw-r--r--
lvdisplay
18.9
KB
-rw-r--r--
lvextend
18.9
KB
-rw-r--r--
lvm
18.9
KB
-rw-r--r--
lvmdiskscan
18.9
KB
-rw-r--r--
lvreduce
18.9
KB
-rw-r--r--
lvremove
18.9
KB
-rw-r--r--
lvrename
18.9
KB
-rw-r--r--
lvresize
18.9
KB
-rw-r--r--
lvs
18.9
KB
-rw-r--r--
lvscan
18.9
KB
-rw-r--r--
lz4
1.15
KB
-rw-r--r--
lz4c
1.15
KB
-rw-r--r--
lzip
1.1
KB
-rw-r--r--
lzma
926
B
-rw-r--r--
lzop
1.45
KB
-rw-r--r--
macof
425
B
-rw-r--r--
mailmanctl
465
B
-rw-r--r--
mailsnarf
447
B
-rw-r--r--
make
6.02
KB
-rw-r--r--
makepkg
1.02
KB
-rw-r--r--
man
2.8
KB
-rw-r--r--
mc
668
B
-rw-r--r--
mcookie
599
B
-rw-r--r--
mcrypt
1.82
KB
-rw-r--r--
mdadm
4.41
KB
-rw-r--r--
mdecrypt
1.82
KB
-rw-r--r--
mdtool
2.06
KB
-rw-r--r--
medusa
676
B
-rw-r--r--
mencoder
11.02
KB
-rw-r--r--
mesg
412
B
-rw-r--r--
micropython
1.72
KB
-rw-r--r--
mii-diag
651
B
-rw-r--r--
mii-tool
849
B
-rw-r--r--
minicom
1.07
KB
-rw-r--r--
mkfs
638
B
-rw-r--r--
mkfs.bfs
656
B
-rw-r--r--
mkfs.cramfs
821
B
-rw-r--r--
mkfs.minix
714
B
-rw-r--r--
mkinitrd
1.19
KB
-rw-r--r--
mkisofs
861
B
-rw-r--r--
mkswap
841
B
-rw-r--r--
mktemp
670
B
-rw-r--r--
mmcli
5.41
KB
-rw-r--r--
mmsitepass
328
B
-rw-r--r--
modinfo
1.2
KB
-rw-r--r--
modprobe
3.97
KB
-rw-r--r--
mogrify
8.79
KB
-rw-r--r--
monodevelop
442
B
-rw-r--r--
montage
8.79
KB
-rw-r--r--
more
528
B
-rw-r--r--
mount
2.05
KB
-rw-r--r--
mountpoint
487
B
-rw-r--r--
mozilla-firefox
1.14
KB
-rw-r--r--
mplayer
11.02
KB
-rw-r--r--
mplayer2
11.02
KB
-rw-r--r--
mr
2.46
KB
-rw-r--r--
msgsnarf
447
B
-rw-r--r--
msynctool
1.31
KB
-rw-r--r--
mtr
1.88
KB
-rw-r--r--
mtx
1.15
KB
-rw-r--r--
munin-node-configure
752
B
-rw-r--r--
munin-run
643
B
-rw-r--r--
munin-update
652
B
-rw-r--r--
munindoc
318
B
-rw-r--r--
mussh
1.15
KB
-rw-r--r--
mutt
4.19
KB
-rw-r--r--
muttng
4.19
KB
-rw-r--r--
mypy
1.38
KB
-rw-r--r--
mysql
2.55
KB
-rw-r--r--
mysqladmin
1.69
KB
-rw-r--r--
namei
500
B
-rw-r--r--
nc
1.21
KB
-rw-r--r--
ncal
926
B
-rw-r--r--
ncftp
621
B
-rw-r--r--
nethogs
558
B
-rw-r--r--
netplan
988
B
-rw-r--r--
networkctl
2.08
KB
-rw-r--r--
newlist
571
B
-rw-r--r--
newusers
653
B
-rw-r--r--
ngrep
837
B
-rw-r--r--
nmap
1.81
KB
-rw-r--r--
npm
1.73
KB
-rw-r--r--
nproc
490
B
-rw-r--r--
nsenter
1.14
KB
-rw-r--r--
nslookup
1.96
KB
-rw-r--r--
nsupdate
898
B
-rw-r--r--
ntpdate
715
B
-rw-r--r--
oggdec
861
B
-rw-r--r--
op
1.41
KB
-rw-r--r--
openssl
11.18
KB
-rw-r--r--
opera
1.35
KB
-rw-r--r--
optipng
1.15
KB
-rw-r--r--
p4
1.44
KB
-rw-r--r--
pack200
2.16
KB
-rw-r--r--
partx
1.24
KB
-rw-r--r--
passwd
539
B
-rw-r--r--
patch
1.72
KB
-rw-r--r--
pbzip2
1.06
KB
-rw-r--r--
pccardctl
380
B
-rw-r--r--
pdftotext
920
B
-rw-r--r--
pdlzip
1.1
KB
-rw-r--r--
perl
4.19
KB
-rw-r--r--
perlcritic
1.35
KB
-rw-r--r--
perldoc
4.19
KB
-rw-r--r--
perltidy
1.25
KB
-rw-r--r--
pgrep
1.18
KB
-rw-r--r--
phing
2.71
KB
-rw-r--r--
pidof
520
B
-rw-r--r--
pigz
1.14
KB
-rw-r--r--
pine
873
B
-rw-r--r--
pinfo
1.88
KB
-rw-r--r--
ping
1.96
KB
-rw-r--r--
ping6
1.96
KB
-rw-r--r--
pivot_root
387
B
-rw-r--r--
pkcon
2.67
KB
-rw-r--r--
pkg-config
1.28
KB
-rw-r--r--
pkg-get
2.08
KB
-rw-r--r--
pkg_deinstall
460
B
-rw-r--r--
pkg_delete
460
B
-rw-r--r--
pkg_info
460
B
-rw-r--r--
pkgadd
1.7
KB
-rw-r--r--
pkgrm
1.04
KB
-rw-r--r--
pkgtool
846
B
-rw-r--r--
pkgutil
3.93
KB
-rw-r--r--
pkill
1.18
KB
-rw-r--r--
plague-client
413
B
-rw-r--r--
plzip
1.1
KB
-rw-r--r--
pm-hibernate
319
B
-rw-r--r--
pm-is-supported
334
B
-rw-r--r--
pm-powersave
280
B
-rw-r--r--
pm-suspend
319
B
-rw-r--r--
pm-suspend-hybrid
319
B
-rw-r--r--
pmake
6.02
KB
-rw-r--r--
pngfix
809
B
-rw-r--r--
portinstall
909
B
-rw-r--r--
portsnap
493
B
-rw-r--r--
portupgrade
477
B
-rw-r--r--
postalias
962
B
-rw-r--r--
postcat
880
B
-rw-r--r--
postconf
809
B
-rw-r--r--
postfix
813
B
-rw-r--r--
postmap
962
B
-rw-r--r--
postsuper
1.53
KB
-rw-r--r--
povray
1.93
KB
-rw-r--r--
ppc-koji
6.17
KB
-rw-r--r--
prelink
911
B
-rw-r--r--
prlimit
1.3
KB
-rw-r--r--
pro
1.94
KB
-rw-r--r--
protoc
1.49
KB
-rw-r--r--
psql
4.19
KB
-rw-r--r--
puppet
9.51
KB
-rw-r--r--
puppetca
9.51
KB
-rw-r--r--
puppetd
9.51
KB
-rw-r--r--
puppetdoc
9.51
KB
-rw-r--r--
puppetmasterd
9.51
KB
-rw-r--r--
puppetqd
9.51
KB
-rw-r--r--
puppetrun
9.51
KB
-rw-r--r--
pv
721
B
-rw-r--r--
pvchange
18.9
KB
-rw-r--r--
pvcreate
18.9
KB
-rw-r--r--
pvdisplay
18.9
KB
-rw-r--r--
pvmove
18.9
KB
-rw-r--r--
pvremove
18.9
KB
-rw-r--r--
pvs
18.9
KB
-rw-r--r--
pvscan
18.9
KB
-rw-r--r--
pwck
386
B
-rw-r--r--
pwd
445
B
-rw-r--r--
pwdx
481
B
-rw-r--r--
pwgen
592
B
-rw-r--r--
pxz
1.45
KB
-rw-r--r--
py.test
2.3
KB
-rw-r--r--
py.test-2
2.3
KB
-rw-r--r--
py.test-3
2.3
KB
-rw-r--r--
pycodestyle
726
B
-rw-r--r--
pydoc
1.01
KB
-rw-r--r--
pydoc3
1.01
KB
-rw-r--r--
pydocstyle
818
B
-rw-r--r--
pyflakes
441
B
-rw-r--r--
pylint
3.06
KB
-rw-r--r--
pylint-2
3.06
KB
-rw-r--r--
pylint-3
3.06
KB
-rw-r--r--
pypy
1.72
KB
-rw-r--r--
pypy3
1.72
KB
-rw-r--r--
pytest
2.3
KB
-rw-r--r--
pytest-2
2.3
KB
-rw-r--r--
pytest-3
2.3
KB
-rw-r--r--
python
1.72
KB
-rw-r--r--
python2
1.72
KB
-rw-r--r--
python3
1.72
KB
-rw-r--r--
pyvenv
428
B
-rw-r--r--
pyvenv-3.4
428
B
-rw-r--r--
pyvenv-3.5
428
B
-rw-r--r--
pyvenv-3.6
428
B
-rw-r--r--
pyvenv-3.7
428
B
-rw-r--r--
pyvenv-3.8
428
B
-rw-r--r--
qdbus
379
B
-rw-r--r--
qemu
3.24
KB
-rw-r--r--
qemu-kvm
3.24
KB
-rw-r--r--
qemu-system-i386
3.24
KB
-rw-r--r--
qemu-system-x86_64
3.24
KB
-rw-r--r--
qrunner
391
B
-rw-r--r--
querybts
1.22
KB
-rw-r--r--
quota
3.58
KB
-rw-r--r--
quotacheck
3.58
KB
-rw-r--r--
quotaoff
3.58
KB
-rw-r--r--
quotaon
3.58
KB
-rw-r--r--
radvdump
492
B
-rw-r--r--
ralsh
9.51
KB
-rw-r--r--
raw
482
B
-rw-r--r--
rcs
890
B
-rw-r--r--
rcsdiff
890
B
-rw-r--r--
rdesktop
1.63
KB
-rw-r--r--
rdict
1.76
KB
-rw-r--r--
readprofile
679
B
-rw-r--r--
remove_members
569
B
-rw-r--r--
removepkg
550
B
-rw-r--r--
renice
784
B
-rw-r--r--
reportbug
3.24
KB
-rw-r--r--
repquota
3.58
KB
-rw-r--r--
resizepart
568
B
-rw-r--r--
resolvconf
426
B
-rw-r--r--
resolvectl
5.56
KB
-rw-r--r--
rev
432
B
-rw-r--r--
rfcomm
9.45
KB
-rw-r--r--
ri
3.66
KB
-rw-r--r--
rlog
890
B
-rw-r--r--
rmlist
363
B
-rw-r--r--
rmmod
519
B
-rw-r--r--
route
790
B
-rw-r--r--
rpcdebug
981
B
-rw-r--r--
rpm
10.08
KB
-rw-r--r--
rpm2targz
368
B
-rw-r--r--
rpm2tgz
368
B
-rw-r--r--
rpm2txz
368
B
-rw-r--r--
rpmbuild
10.08
KB
-rw-r--r--
rpmbuild-md5
10.08
KB
-rw-r--r--
rpmcheck
512
B
-rw-r--r--
rrdtool
438
B
-rw-r--r--
rsync
3.44
KB
-rw-r--r--
rtcwake
1.06
KB
-rw-r--r--
s390-koji
6.17
KB
-rw-r--r--
sbcl
675
B
-rw-r--r--
sbcl-mt
675
B
-rw-r--r--
sbopkg
1.71
KB
-rw-r--r--
scp
15.54
KB
-rw-r--r--
screen
2.91
KB
-rw-r--r--
script
775
B
-rw-r--r--
scriptreplay
625
B
-rw-r--r--
scrub
868
B
-rw-r--r--
sdptool
9.45
KB
-rw-r--r--
setarch
790
B
-rw-r--r--
setpriv
2.77
KB
-rw-r--r--
setquota
3.58
KB
-rw-r--r--
setsid
440
B
-rw-r--r--
setterm
2.53
KB
-rw-r--r--
sfdisk
1.96
KB
-rw-r--r--
sftp
15.54
KB
-rw-r--r--
sh
885
B
-rw-r--r--
shellcheck
1.62
KB
-rw-r--r--
sidedoor
15.54
KB
-rw-r--r--
sitecopy
1.29
KB
-rw-r--r--
slackpkg
3.32
KB
-rw-r--r--
slapt-get
2.36
KB
-rw-r--r--
slapt-src
1.84
KB
-rw-r--r--
slogin
15.54
KB
-rw-r--r--
smartctl
4.18
KB
-rw-r--r--
smbcacls
6.92
KB
-rw-r--r--
smbclient
6.92
KB
-rw-r--r--
smbcquotas
6.92
KB
-rw-r--r--
smbget
6.92
KB
-rw-r--r--
smbpasswd
6.92
KB
-rw-r--r--
smbtar
6.92
KB
-rw-r--r--
smbtree
6.92
KB
-rw-r--r--
snap
2.48
KB
-rw-r--r--
snownews
363
B
-rw-r--r--
sparc-koji
6.17
KB
-rw-r--r--
spovray
1.93
KB
-rw-r--r--
sqlite3
882
B
-rw-r--r--
ss
1.09
KB
-rw-r--r--
ssh
15.54
KB
-rw-r--r--
ssh-add
677
B
-rw-r--r--
ssh-copy-id
684
B
-rw-r--r--
ssh-keygen
1.84
KB
-rw-r--r--
sshfs
594
B
-rw-r--r--
sshmitm
364
B
-rw-r--r--
sshow
498
B
-rw-r--r--
star
18.47
KB
-rw-r--r--
strace
3.26
KB
-rw-r--r--
stream
8.79
KB
-rw-r--r--
strings
1.12
KB
-rw-r--r--
su
892
B
-rw-r--r--
sudo
1.41
KB
-rw-r--r--
sudoedit
1.41
KB
-rw-r--r--
svcadm
4.95
KB
-rw-r--r--
svk
8.56
KB
-rw-r--r--
swaplabel
635
B
-rw-r--r--
swapoff
743
B
-rw-r--r--
swapon
1.96
KB
-rw-r--r--
sync_members
730
B
-rw-r--r--
synclient
588
B
-rw-r--r--
sysbench
3.96
KB
-rw-r--r--
sysctl
802
B
-rw-r--r--
systemctl
13.26
KB
-rw-r--r--
systemd-analyze
5.2
KB
-rw-r--r--
systemd-cat
1.66
KB
-rw-r--r--
systemd-cgls
2.04
KB
-rw-r--r--
systemd-cgtop
1.84
KB
-rw-r--r--
systemd-delta
1.7
KB
-rw-r--r--
systemd-detect-virt
1.28
KB
-rw-r--r--
systemd-path
1.68
KB
-rw-r--r--
systemd-resolve
2.63
KB
-rw-r--r--
systemd-run
5.23
KB
-rw-r--r--
tar
18.47
KB
-rw-r--r--
taskset
1.18
KB
-rw-r--r--
tc
26.49
KB
-rw-r--r--
tcpdump
1.62
KB
-rw-r--r--
tcpkill
440
B
-rw-r--r--
tcpnice
431
B
-rw-r--r--
tightvncviewer
2.94
KB
-rw-r--r--
timedatectl
2.86
KB
-rw-r--r--
timeout
993
B
-rw-r--r--
tipc
7.15
KB
-rw-r--r--
tox
1.33
KB
-rw-r--r--
tracepath
559
B
-rw-r--r--
tracepath6
559
B
-rw-r--r--
tshark
4.18
KB
-rw-r--r--
tune2fs
1.72
KB
-rw-r--r--
typeset
1.25
KB
-rw-r--r--
ua
1.94
KB
-rw-r--r--
udevadm
7.96
KB
-rw-r--r--
udisksctl
857
B
-rw-r--r--
ufw
2.44
KB
-rw-r--r--
ulimit
901
B
-rw-r--r--
umount
2.2
KB
-rw-r--r--
unace
476
B
-rw-r--r--
unpack200
1.22
KB
-rw-r--r--
unrar
619
B
-rw-r--r--
unshare
855
B
-rw-r--r--
unshunt
347
B
-rw-r--r--
update-alternatives
2.35
KB
-rw-r--r--
update-initramfs
581
B
-rw-r--r--
update-rc.d
1.92
KB
-rw-r--r--
upgradepkg
805
B
-rw-r--r--
urlsnarf
507
B
-rw-r--r--
useradd
1.22
KB
-rw-r--r--
userdel
543
B
-rw-r--r--
usermod
1.33
KB
-rw-r--r--
utmpdump
475
B
-rw-r--r--
uuidd
862
B
-rw-r--r--
uuidgen
657
B
-rw-r--r--
uuidparse
727
B
-rw-r--r--
valgrind
3.43
KB
-rw-r--r--
vgcfgbackup
18.9
KB
-rw-r--r--
vgcfgrestore
18.9
KB
-rw-r--r--
vgchange
18.9
KB
-rw-r--r--
vgck
18.9
KB
-rw-r--r--
vgconvert
18.9
KB
-rw-r--r--
vgcreate
18.9
KB
-rw-r--r--
vgdisplay
18.9
KB
-rw-r--r--
vgexport
18.9
KB
-rw-r--r--
vgextend
18.9
KB
-rw-r--r--
vgimport
18.9
KB
-rw-r--r--
vgmerge
18.9
KB
-rw-r--r--
vgmknodes
18.9
KB
-rw-r--r--
vgreduce
18.9
KB
-rw-r--r--
vgremove
18.9
KB
-rw-r--r--
vgrename
18.9
KB
-rw-r--r--
vgs
18.9
KB
-rw-r--r--
vgscan
18.9
KB
-rw-r--r--
vgsplit
18.9
KB
-rw-r--r--
vigr
438
B
-rw-r--r--
vipw
438
B
-rw-r--r--
vmstat
696
B
-rw-r--r--
vncviewer
2.94
KB
-rw-r--r--
vpnc
2.25
KB
-rw-r--r--
wall
634
B
-rw-r--r--
watch
1.15
KB
-rw-r--r--
wdctl
1.34
KB
-rw-r--r--
webmitm
364
B
-rw-r--r--
wget
6.34
KB
-rw-r--r--
whatis
2.8
KB
-rw-r--r--
whereis
535
B
-rw-r--r--
whiptail
345
B
-rw-r--r--
wine
536
B
-rw-r--r--
wine-development
536
B
-rw-r--r--
wine-stable
536
B
-rw-r--r--
wipefs
1.16
KB
-rw-r--r--
withlist
411
B
-rw-r--r--
wodim
3.49
KB
-rw-r--r--
wol
1.12
KB
-rw-r--r--
wsimport
1.09
KB
-rw-r--r--
wtf
926
B
-rw-r--r--
wvdial
1.24
KB
-rw-r--r--
xdg-mime
2.21
KB
-rw-r--r--
xdg-settings
761
B
-rw-r--r--
xfreerdp
2.07
KB
-rw-r--r--
xgamma
1.99
KB
-rw-r--r--
xhost
376
B
-rw-r--r--
xmllint
1.23
KB
-rw-r--r--
xmlwf
696
B
-rw-r--r--
xmms
687
B
-rw-r--r--
xmodmap
435
B
-rw-r--r--
xpovray
1.93
KB
-rw-r--r--
xrandr
2.13
KB
-rw-r--r--
xrdb
506
B
-rw-r--r--
xsltproc
1.19
KB
-rw-r--r--
xvfb-run
871
B
-rw-r--r--
xvnc4viewer
2.94
KB
-rw-r--r--
xxd
467
B
-rw-r--r--
xz
1.45
KB
-rw-r--r--
xzdec
630
B
-rw-r--r--
ypcat
759
B
-rw-r--r--
ypmatch
759
B
-rw-r--r--
yum-arch
357
B
-rw-r--r--
zopfli
676
B
-rw-r--r--
zopflipng
926
B
-rw-r--r--
zramctl
1.26
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : gitk
# 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
Close