annotate contrib/bash_completion @ 1241:3b4f05ff3130

Add support for cloning with hardlinks on windows. In order to use hardlinks, the win32file module is needed, and this is present in ActivePython. If it isn't present, or hardlinks are not supported on the underlying filesystem, a regular copy is used. When using hardlinks the biggest benefit is probably the saving in space, but cloning can be much quicker. For example cloning the Xen tree (non trivial) without an update goes from about 95s to 15s. Unix-like platforms should be unaffected, although should be more tolerant on filesystems that don't support hard links. (tweaked by mpm to deal with new copyfiles function) --- hg.orig/mercurial/commands.py 2005-09-13 19:32:53.000000000 -0500 +++ hg/mercurial/commands.py 2005-09-14 12:11:34.000000000 -0500 @@ -620,10 +620,6 @@ def clone(ui, source, dest=None, **opts) if other.dev() != -1: abspath = os.path.abspath(source) - copyfile = (os.stat(dest).st_dev == other.dev() - and getattr(os, 'link', None) or shutil.copy2) - if copyfile is not shutil.copy2: - ui.note("cloning by hardlink\n") # we use a lock here because if we race with commit, we can # end up with extra data in the cloned revlogs that's not @@ -638,7 +634,7 @@ def clone(ui, source, dest=None, **opts) for f in files.split(): src = os.path.join(source, ".hg", f) dst = os.path.join(dest, ".hg", f) - util.copyfiles(src, dst, copyfile) + util.copyfiles(src, dst) repo = hg.repository(ui, dest) Index: hg/mercurial/util.py =================================================================== --- hg.orig/mercurial/util.py 2005-09-08 00:15:25.000000000 -0500 +++ hg/mercurial/util.py 2005-09-14 12:16:49.000000000 -0500 @@ -12,7 +12,7 @@ platform-specific details from the core. import os, errno from demandload import * -demandload(globals(), "re cStringIO") +demandload(globals(), "re cStringIO shutil") def binary(s): """return true if a string is binary data using diff's heuristic""" @@ -217,17 +217,28 @@ def rename(src, dst): os.unlink(dst) os.rename(src, dst) -def copyfiles(src, dst, copyfile): - """Copy a directory tree, files are copied using 'copyfile'.""" +def copyfiles(src, dst, hardlink=None): + """Copy a directory tree using hardlinks if possible""" + + if hardlink is None: + hardlink = (os.stat(src).st_dev == + os.stat(os.path.dirname(dst)).st_dev) if os.path.isdir(src): os.mkdir(dst) for name in os.listdir(src): srcname = os.path.join(src, name) dstname = os.path.join(dst, name) - copyfiles(srcname, dstname, copyfile) + copyfiles(srcname, dstname, hardlink) else: - copyfile(src, dst) + if hardlink: + try: + os_link(src, dst) + except: + hardlink = False + shutil.copy2(src, dst) + else: + shutil.copy2(src, dst) def opener(base): """ @@ -244,13 +255,13 @@ def opener(base): if mode[0] != "r": try: - s = os.stat(f) + nlink = nlinks(f) except OSError: d = os.path.dirname(f) if not os.path.isdir(d): os.makedirs(d) else: - if s.st_nlink > 1: + if nlink > 1: file(f + ".tmp", "wb").write(file(f, "rb").read()) rename(f+".tmp", f) @@ -266,10 +277,41 @@ def _makelock_file(info, pathname): def _readlock_file(pathname): return file(pathname).read() +def nlinks(pathname): + """Return number of hardlinks for the given file.""" + return os.stat(pathname).st_nlink + +if hasattr(os, 'link'): + os_link = os.link +else: + def os_link(src, dst): + raise OSError(0, "Hardlinks not supported") + # Platform specific variants if os.name == 'nt': nulldev = 'NUL:' + try: # ActivePython can create hard links using win32file module + import win32file + + def os_link(src, dst): # NB will only succeed on NTFS + win32file.CreateHardLink(dst, src) + + def nlinks(pathname): + """Return number of hardlinks for the given file.""" + try: + fh = win32file.CreateFile(pathname, + win32file.GENERIC_READ, win32file.FILE_SHARE_READ, + None, win32file.OPEN_EXISTING, 0, None) + res = win32file.GetFileInformationByHandle(fh) + fh.Close() + return res[7] + except: + return os.stat(pathname).st_nlink + + except ImportError: + pass + def is_exec(f, last): return last
author Stephen Darnell
date Wed, 14 Sep 2005 12:22:20 -0500
parents fa9ae7df88a9
children bc1815cf89a7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1115
89f54e72581d bash_completion: add debugindex and debugdata support
mpm@selenic.com
parents: 1018
diff changeset
1 #!/bin/bash
89f54e72581d bash_completion: add debugindex and debugdata support
mpm@selenic.com
parents: 1018
diff changeset
2
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
3 _hg_commands()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
4 {
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
5 local commands="$(hg -v help | sed -e '1,/^list of commands:/d' \
952
dbfabfcb485e bash_completion: support GNU sed 3 and non-GNU sed
TK Soh <teekaysoh@yahoo.com>
parents: 935
diff changeset
6 -e '/^global options:/,$d' \
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
7 -e '/^ [^ ]/!d; s/[,:]//g;')"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
8
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
9 # hide debug commands from users, but complete them if
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
10 # specifically asked for
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
11 if [[ "$cur" == de* ]]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
12 commands="$commands debugcheckstate debugstate debugindex"
1115
89f54e72581d bash_completion: add debugindex and debugdata support
mpm@selenic.com
parents: 1018
diff changeset
13 commands="$commands debugindexdot debugwalk debugdata"
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
14 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
15 COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$commands" -- "$cur") )
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
16 }
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
17
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
18 _hg_paths()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
19 {
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
20 local paths="$(hg paths | sed -e 's/ = .*$//')"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
21 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W "$paths" -- "$cur" ))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
22 }
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
23
935
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
24 _hg_status()
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
25 {
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
26 local files="$( hg status -$1 | cut -b 3- )"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
27 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W "$files" -- "$cur" ))
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
28 }
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
29
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
30 _hg_tags()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
31 {
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
32 local tags="$(hg tags | sed -e 's/[0-9]*:[a-f0-9]\{40\}$//; s/ *$//')"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
33 COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$tags" -- "$cur") )
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
34 }
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
35
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
36 # this is "kind of" ugly...
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
37 _hg_count_non_option()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
38 {
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
39 local i count=0
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
40 local filters="$1"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
41
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
42 for (( i=1; $i<=$COMP_CWORD; i++ )); do
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
43 if [[ "${COMP_WORDS[i]}" != -* ]]; then
1152
ff560ce0c635 bash_completion: small cleanup and bugfix
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1151
diff changeset
44 if [[ ${COMP_WORDS[i-1]} == @($filters|$global_args) ]]; then
ff560ce0c635 bash_completion: small cleanup and bugfix
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1151
diff changeset
45 continue
ff560ce0c635 bash_completion: small cleanup and bugfix
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1151
diff changeset
46 fi
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
47 count=$(($count + 1))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
48 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
49 done
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
50
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
51 echo $(($count - 1))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
52 }
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
53
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
54 _hg()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
55 {
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
56 local cur prev cmd opts i
1151
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
57 # global options that receive an argument
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
58 local global_args='--cwd|-R|--repository'
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
59
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
60 COMPREPLY=()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
61 cur="$2"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
62 prev="$3"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
63
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
64 # searching for the command
1151
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
65 # (first non-option argument that doesn't follow a global option that
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
66 # receives an argument)
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
67 for (( i=1; $i<=$COMP_CWORD; i++ )); do
1151
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
68 if [[ ${COMP_WORDS[i]} != -* ]]; then
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
69 if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
70 cmd="${COMP_WORDS[i]}"
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
71 break
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
72 fi
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
73 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
74 done
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
75
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
76 if [[ "$cur" == -* ]]; then
1149
f82b084bd904 bash_completion: update for new help output format
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1115
diff changeset
77 # this assumes that there are no commands with spaces in the name
f82b084bd904 bash_completion: update for new help output format
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1115
diff changeset
78 opts=$(hg -v help $cmd | sed -e '/^ *-/!d; s/ [^- ].*//')
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
79
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
80 COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$opts" -- "$cur") )
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
81 return
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
82 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
83
1151
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
84 # global options
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
85 case "$prev" in
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
86 -R|--repository)
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
87 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -d -- "$cur" ))
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
88 return
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
89 ;;
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
90 --cwd)
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
91 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -d -- "$cur" ))
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
92 return
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
93 ;;
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
94 esac
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
95
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
96 if [ -z "$cmd" ] || [ $COMP_CWORD -eq $i ]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
97 _hg_commands
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
98 return
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
99 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
100
1150
4ee09418c8e5 bash_completion: better handling of aliases
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1149
diff changeset
101 # canonicalize command name
4ee09418c8e5 bash_completion: better handling of aliases
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1149
diff changeset
102 cmd=$(hg -q help "$cmd" | sed -e 's/^hg //; s/ .*//; 1q')
4ee09418c8e5 bash_completion: better handling of aliases
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1149
diff changeset
103
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
104 if [ "$cmd" != status ] && [ "$prev" = -r ] || [ "$prev" = --rev ]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
105 _hg_tags
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
106 return
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
107 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
108
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
109 case "$cmd" in
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
110 help)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
111 _hg_commands
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
112 ;;
1150
4ee09418c8e5 bash_completion: better handling of aliases
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1149
diff changeset
113 export|manifest|update)
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
114 _hg_tags
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
115 ;;
1150
4ee09418c8e5 bash_completion: better handling of aliases
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1149
diff changeset
116 pull|push|outgoing|incoming)
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
117 _hg_paths
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
118 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -d -- "$cur" ))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
119 ;;
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
120 paths)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
121 _hg_paths
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
122 ;;
935
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
123 add)
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
124 _hg_status "u"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
125 ;;
1150
4ee09418c8e5 bash_completion: better handling of aliases
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1149
diff changeset
126 commit)
935
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
127 _hg_status "mra"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
128 ;;
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
129 remove)
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
130 _hg_status "r"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
131 ;;
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
132 forget)
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
133 _hg_status "a"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
134 ;;
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
135 diff)
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
136 _hg_status "mra"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
137 ;;
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
138 revert)
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
139 _hg_status "mra"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
140 ;;
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
141 clone)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
142 local count=$(_hg_count_non_option)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
143 if [ $count = 1 ]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
144 _hg_paths
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
145 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
146 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -d -- "$cur" ))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
147 ;;
1115
89f54e72581d bash_completion: add debugindex and debugdata support
mpm@selenic.com
parents: 1018
diff changeset
148 debugindex|debugindexdot)
89f54e72581d bash_completion: add debugindex and debugdata support
mpm@selenic.com
parents: 1018
diff changeset
149 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -f -X "!*.i" -- "$cur" ))
89f54e72581d bash_completion: add debugindex and debugdata support
mpm@selenic.com
parents: 1018
diff changeset
150 ;;
89f54e72581d bash_completion: add debugindex and debugdata support
mpm@selenic.com
parents: 1018
diff changeset
151 debugdata)
89f54e72581d bash_completion: add debugindex and debugdata support
mpm@selenic.com
parents: 1018
diff changeset
152 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -f -X "!*.d" -- "$cur" ))
89f54e72581d bash_completion: add debugindex and debugdata support
mpm@selenic.com
parents: 1018
diff changeset
153 ;;
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
154 cat)
1152
ff560ce0c635 bash_completion: small cleanup and bugfix
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1151
diff changeset
155 local count=$(_hg_count_non_option '-o|--output')
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
156 if [ $count = 2 ]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
157 _hg_tags
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
158 else
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
159 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -f -- "$cur" ))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
160 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
161 ;;
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
162 *)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
163 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -f -- "$cur" ))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
164 ;;
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
165 esac
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
166
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
167 }
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
168
1153
fa9ae7df88a9 bash_completion: try to use bash3 features if they're available
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1152
diff changeset
169 complete -o bashdefault -o default -F _hg hg 2> /dev/null \
fa9ae7df88a9 bash_completion: try to use bash3 features if they're available
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1152
diff changeset
170 || complete -o default -F _hg hg