annotate mercurial/commands.py @ 742:092937de2ad7

Refactor matchpats and walk Move core match function code to util Add some comments and whitespace Simplify options Use lambdas instead of always and never
author mpm@selenic.com
date Thu, 21 Jul 2005 12:21:33 -0500
parents d2422f10c136
children b0ba1866d6b5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
249
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
1 # commands.py - command processing for mercurial
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
2 #
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
3 # Copyright 2005 Matt Mackall <mpm@selenic.com>
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
4 #
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
5 # This software may be used and distributed according to the terms
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
6 # of the GNU General Public License, incorporated herein by reference.
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
7
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
8 from demandload import demandload
698
df78d8ccac4c Use python function instead of external 'cp' command when cloning repos.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 697
diff changeset
9 demandload(globals(), "os re sys signal shutil")
613
5374955ec5b1 Demand-load most modules in the commands and ui modules.
Bryan O'Sullivan <bos@serpentine.com>
parents: 612
diff changeset
10 demandload(globals(), "fancyopts ui hg util")
627
b6c42714d900 Add locate command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 625
diff changeset
11 demandload(globals(), "fnmatch hgweb mdiff random signal time traceback")
624
876333a295ff Add an sshrepository class and hg serve --stdio
Matt Mackall <mpm@selenic.com>
parents: 618
diff changeset
12 demandload(globals(), "errno socket version struct")
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
13
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
14 class UnknownCommand(Exception):
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
15 """Exception raised if command is not in the command table."""
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
16
727
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
17 class Abort(Exception):
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
18 """Raised if a command needs to print an error and exit."""
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
19
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
20 def filterfiles(filters, files):
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
21 l = [x for x in files if x in filters]
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
22
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
23 for t in filters:
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
24 if t and t[-1] != "/":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
25 t += "/"
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
26 l += [x for x in files if x.startswith(t)]
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
27 return l
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
28
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
29 def relfilter(repo, files):
628
8d7f6e68828a Use repo.getcwd() in a few obvious places.
Bryan O'Sullivan <bos@serpentine.com>
parents: 627
diff changeset
30 cwd = repo.getcwd()
8d7f6e68828a Use repo.getcwd() in a few obvious places.
Bryan O'Sullivan <bos@serpentine.com>
parents: 627
diff changeset
31 if cwd:
8d7f6e68828a Use repo.getcwd() in a few obvious places.
Bryan O'Sullivan <bos@serpentine.com>
parents: 627
diff changeset
32 return filterfiles([util.pconvert(cwd)], files)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
33 return files
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
34
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
35 def relpath(repo, args):
628
8d7f6e68828a Use repo.getcwd() in a few obvious places.
Bryan O'Sullivan <bos@serpentine.com>
parents: 627
diff changeset
36 cwd = repo.getcwd()
8d7f6e68828a Use repo.getcwd() in a few obvious places.
Bryan O'Sullivan <bos@serpentine.com>
parents: 627
diff changeset
37 if cwd:
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
38 return [util.pconvert(os.path.normpath(os.path.join(cwd, x)))
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
39 for x in args]
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
40 return args
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
41
742
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
42 def matchpats(cwd, pats = [], opts = {}, head = ''):
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
43 return util.matcher(cwd, pats, opts.get('include'),
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
44 opts.get('exclude'), head)
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
45
742
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
46 def walk(repo, pats, opts, head = ''):
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
47 cwd = repo.getcwd()
742
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
48 c = 0
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
49 if cwd: c = len(cwd) + 1
742
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
50 for src, fn in repo.walk(match = matchpats(cwd, pats, opts, head)):
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
51 yield src, fn, fn[c:]
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
52
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
53 revrangesep = ':'
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
54
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
55 def revrange(ui, repo, revs, revlog=None):
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
56 if revlog is None:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
57 revlog = repo.changelog
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
58 revcount = revlog.count()
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
59 def fix(val, defval):
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
60 if not val:
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
61 return defval
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
62 try:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
63 num = int(val)
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
64 if str(num) != val:
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
65 raise ValueError
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
66 if num < 0:
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
67 num += revcount
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
68 if not (0 <= num < revcount):
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
69 raise ValueError
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
70 except ValueError:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
71 try:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
72 num = repo.changelog.rev(repo.lookup(val))
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
73 except KeyError:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
74 try:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
75 num = revlog.rev(revlog.lookup(val))
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
76 except KeyError:
727
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
77 raise Abort('invalid revision identifier %s', val)
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
78 return num
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
79 for spec in revs:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
80 if spec.find(revrangesep) >= 0:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
81 start, end = spec.split(revrangesep, 1)
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
82 start = fix(start, 0)
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
83 end = fix(end, revcount - 1)
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
84 if end > start:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
85 end += 1
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
86 step = 1
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
87 else:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
88 end -= 1
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
89 step = -1
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
90 for rev in xrange(start, end, step):
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
91 yield str(rev)
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
92 else:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
93 yield spec
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
94
739
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
95 def make_filename(repo, r, pat, node=None,
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
96 total=None, seqno=None, revwidth=None):
632
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
97 node_expander = {
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
98 'H': lambda: hg.hex(node),
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
99 'R': lambda: str(r.rev(node)),
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
100 'h': lambda: hg.short(node),
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
101 }
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
102 expander = {
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
103 '%': lambda: '%',
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
104 'b': lambda: os.path.basename(repo.root),
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
105 }
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
106
727
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
107 try:
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
108 if node:
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
109 expander.update(node_expander)
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
110 if node and revwidth is not None:
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
111 expander['r'] = lambda: str(r.rev(node)).zfill(revwidth)
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
112 if total is not None:
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
113 expander['N'] = lambda: str(total)
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
114 if seqno is not None:
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
115 expander['n'] = lambda: str(seqno)
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
116 if total is not None and seqno is not None:
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
117 expander['n'] = lambda:str(seqno).zfill(len(str(total)))
632
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
118
727
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
119 newname = []
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
120 patlen = len(pat)
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
121 i = 0
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
122 while i < patlen:
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
123 c = pat[i]
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
124 if c == '%':
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
125 i += 1
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
126 c = pat[i]
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
127 c = expander[c]()
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
128 newname.append(c)
632
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
129 i += 1
739
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
130 return ''.join(newname)
727
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
131 except KeyError, inst:
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
132 raise Abort("invalid format spec '%%%s' in output file name",
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
133 inst.args[0])
632
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
134
739
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
135 def make_file(repo, r, pat, node=None,
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
136 total=None, seqno=None, revwidth=None, mode='wb'):
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
137 if not pat or pat == '-':
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
138 if 'w' in mode: return sys.stdout
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
139 else: return sys.stdin
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
140 if hasattr(pat, 'write') and 'w' in mode:
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
141 return pat
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
142 if hasattr(pat, 'read') and 'r' in mode:
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
143 return pat
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
144 return open(make_filename(repo, r, pat, node, total, seqno, revwidth),
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
145 mode)
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
146
700
d01b93efecd6 Removed extra spaces for default parameters according to PEP8.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 699
diff changeset
147 def dodiff(fp, ui, repo, files=None, node1=None, node2=None):
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
148 def date(c):
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
149 return time.asctime(time.gmtime(float(c[2].split(' ')[0])))
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
150
561
cdddf4652aec Fix dodiff/changes
mpm@selenic.com
parents: 559
diff changeset
151 (c, a, d, u) = repo.changes(node1, node2, files)
537
411e05b04ffa Propagate file list through dodiff
mpm@selenic.com
parents: 536
diff changeset
152 if files:
411e05b04ffa Propagate file list through dodiff
mpm@selenic.com
parents: 536
diff changeset
153 c, a, d = map(lambda x: filterfiles(files, x), (c, a, d))
411e05b04ffa Propagate file list through dodiff
mpm@selenic.com
parents: 536
diff changeset
154
411e05b04ffa Propagate file list through dodiff
mpm@selenic.com
parents: 536
diff changeset
155 if not c and not a and not d:
411e05b04ffa Propagate file list through dodiff
mpm@selenic.com
parents: 536
diff changeset
156 return
411e05b04ffa Propagate file list through dodiff
mpm@selenic.com
parents: 536
diff changeset
157
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
158 if node2:
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
159 change = repo.changelog.read(node2)
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
160 mmap2 = repo.manifest.read(change[0])
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
161 date2 = date(change)
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
162 def read(f):
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
163 return repo.file(f).read(mmap2[f])
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
164 else:
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
165 date2 = time.asctime()
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
166 if not node1:
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
167 node1 = repo.dirstate.parents()[0]
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
168 def read(f):
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
169 return repo.wfile(f).read()
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
170
396
8f8bb77d560e Show revisions in diffs like CVS, based on a patch from Goffredo Baroncelli.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 395
diff changeset
171 if ui.quiet:
8f8bb77d560e Show revisions in diffs like CVS, based on a patch from Goffredo Baroncelli.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 395
diff changeset
172 r = None
8f8bb77d560e Show revisions in diffs like CVS, based on a patch from Goffredo Baroncelli.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 395
diff changeset
173 else:
8f8bb77d560e Show revisions in diffs like CVS, based on a patch from Goffredo Baroncelli.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 395
diff changeset
174 hexfunc = ui.verbose and hg.hex or hg.short
8f8bb77d560e Show revisions in diffs like CVS, based on a patch from Goffredo Baroncelli.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 395
diff changeset
175 r = [hexfunc(node) for node in [node1, node2] if node]
8f8bb77d560e Show revisions in diffs like CVS, based on a patch from Goffredo Baroncelli.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 395
diff changeset
176
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
177 change = repo.changelog.read(node1)
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
178 mmap = repo.manifest.read(change[0])
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
179 date1 = date(change)
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
180
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
181 for f in c:
275
61d45b0ba8fb various merge improvements
mpm@selenic.com
parents: 270
diff changeset
182 to = None
61d45b0ba8fb various merge improvements
mpm@selenic.com
parents: 270
diff changeset
183 if f in mmap:
61d45b0ba8fb various merge improvements
mpm@selenic.com
parents: 270
diff changeset
184 to = repo.file(f).read(mmap[f])
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
185 tn = read(f)
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
186 fp.write(mdiff.unidiff(to, date1, tn, date2, f, r))
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
187 for f in a:
264
4c1d7072d5cd Attempt to make diff deal with null sources properly
mpm@selenic.com
parents: 262
diff changeset
188 to = None
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
189 tn = read(f)
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
190 fp.write(mdiff.unidiff(to, date1, tn, date2, f, r))
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
191 for f in d:
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
192 to = repo.file(f).read(mmap[f])
264
4c1d7072d5cd Attempt to make diff deal with null sources properly
mpm@selenic.com
parents: 262
diff changeset
193 tn = None
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
194 fp.write(mdiff.unidiff(to, date1, tn, date2, f, r))
329
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
195
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
196 def show_changeset(ui, repo, rev=0, changenode=None, filelog=None):
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
197 """show a single changeset or file revision"""
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
198 changelog = repo.changelog
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
199 if filelog:
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
200 log = filelog
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
201 filerev = rev
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
202 node = filenode = filelog.node(filerev)
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
203 changerev = filelog.linkrev(filenode)
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
204 changenode = changenode or changelog.node(changerev)
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
205 else:
347
a0b2758edee7 Cleaned up show_changeset()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 330
diff changeset
206 log = changelog
329
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
207 changerev = rev
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
208 if changenode is None:
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
209 changenode = changelog.node(changerev)
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
210 elif not changerev:
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
211 rev = changerev = changelog.rev(changenode)
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
212 node = changenode
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
213
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
214 if ui.quiet:
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
215 ui.write("%d:%s\n" % (rev, hg.hex(node)))
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
216 return
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
217
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
218 changes = changelog.read(changenode)
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
219
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
220 parents = [(log.rev(parent), hg.hex(parent))
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
221 for parent in log.parents(node)
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
222 if ui.debugflag or parent != hg.nullid]
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
223 if not ui.debugflag and len(parents) == 1 and parents[0][0] == rev-1:
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
224 parents = []
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
225
687
44b30755d07c Hide file hashes in log
Matt Mackall <mpm@selenic.com>
parents: 678
diff changeset
226 ui.write("changeset: %d:%s\n" % (changerev, hg.hex(changenode)))
44b30755d07c Hide file hashes in log
Matt Mackall <mpm@selenic.com>
parents: 678
diff changeset
227 for tag in repo.nodetags(changenode):
44b30755d07c Hide file hashes in log
Matt Mackall <mpm@selenic.com>
parents: 678
diff changeset
228 ui.status("tag: %s\n" % tag)
44b30755d07c Hide file hashes in log
Matt Mackall <mpm@selenic.com>
parents: 678
diff changeset
229 for parent in parents:
44b30755d07c Hide file hashes in log
Matt Mackall <mpm@selenic.com>
parents: 678
diff changeset
230 ui.write("parent: %d:%s\n" % parent)
329
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
231 if filelog:
687
44b30755d07c Hide file hashes in log
Matt Mackall <mpm@selenic.com>
parents: 678
diff changeset
232 ui.debug("file rev: %d:%s\n" % (filerev, hg.hex(filenode)))
44b30755d07c Hide file hashes in log
Matt Mackall <mpm@selenic.com>
parents: 678
diff changeset
233 ui.note("manifest: %d:%s\n" % (repo.manifest.rev(changes[0]),
44b30755d07c Hide file hashes in log
Matt Mackall <mpm@selenic.com>
parents: 678
diff changeset
234 hg.hex(changes[0])))
329
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
235 ui.status("user: %s\n" % changes[1])
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
236 ui.status("date: %s\n" % time.asctime(
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
237 time.localtime(float(changes[2].split(' ')[0]))))
493
30752b14f759 Make show_changeset show added/deleted files only in debug mode.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 490
diff changeset
238 if ui.debugflag:
536
c15b4bc0a11c Refactor diffrevs/diffdir into changes
mpm@selenic.com
parents: 535
diff changeset
239 files = repo.changes(changelog.parents(changenode)[0], changenode)
490
df9b77f67998 Make show_changeset show added and deleted files in verbose mode.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 485
diff changeset
240 for key, value in zip(["files:", "files+:", "files-:"], files):
df9b77f67998 Make show_changeset show added and deleted files in verbose mode.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 485
diff changeset
241 if value:
df9b77f67998 Make show_changeset show added and deleted files in verbose mode.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 485
diff changeset
242 ui.note("%-12s %s\n" % (key, " ".join(value)))
493
30752b14f759 Make show_changeset show added/deleted files only in debug mode.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 490
diff changeset
243 else:
30752b14f759 Make show_changeset show added/deleted files only in debug mode.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 490
diff changeset
244 ui.note("files: %s\n" % " ".join(changes[3]))
347
a0b2758edee7 Cleaned up show_changeset()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 330
diff changeset
245 description = changes[4].strip()
329
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
246 if description:
330
27d08c0c2a7e Merge with TAH
mpm@selenic.com
parents: 320 329
diff changeset
247 if ui.verbose:
27d08c0c2a7e Merge with TAH
mpm@selenic.com
parents: 320 329
diff changeset
248 ui.status("description:\n")
347
a0b2758edee7 Cleaned up show_changeset()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 330
diff changeset
249 ui.status(description)
546
c8ae964109c1 Add an empty line after description in verbose mode of show_changeset.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 542
diff changeset
250 ui.status("\n\n")
330
27d08c0c2a7e Merge with TAH
mpm@selenic.com
parents: 320 329
diff changeset
251 else:
347
a0b2758edee7 Cleaned up show_changeset()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 330
diff changeset
252 ui.status("summary: %s\n" % description.splitlines()[0])
329
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
253 ui.status("\n")
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
254
470
0ab093b473c5 Fix up version module name and command conflict
mpm@selenic.com
parents: 468
diff changeset
255 def show_version(ui):
423
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
256 """output version and copyright information"""
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
257 ui.write("Mercurial version %s\n" % version.get_version())
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
258 ui.status(
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
259 "\nCopyright (C) 2005 Matt Mackall <mpm@selenic.com>\n"
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
260 "This is free software; see the source for copying conditions. "
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
261 "There is NO\nwarranty; "
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
262 "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
263 )
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
264
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
265 def help_(ui, cmd=None):
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
266 """show help for a given command or all commands"""
212
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
267 if cmd:
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
268 try:
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
269 i = find(cmd)
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
270 ui.write("%s\n\n" % i[2])
293
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
271
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
272 if i[1]:
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
273 for s, l, d, c in i[1]:
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
274 opt = ' '
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
275 if s:
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
276 opt = opt + '-' + s + ' '
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
277 if l:
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
278 opt = opt + '--' + l + ' '
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
279 if d:
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
280 opt = opt + '(' + str(d) + ')'
293
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
281 ui.write(opt, "\n")
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
282 if c:
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
283 ui.write(' %s\n' % c)
293
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
284 ui.write("\n")
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
285
212
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
286 ui.write(i[0].__doc__, "\n")
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
287 except UnknownCommand:
268
1634a7ea6748 unknown command fixups
mpm@selenic.com
parents: 266
diff changeset
288 ui.warn("hg: unknown command %s\n" % cmd)
212
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
289 sys.exit(0)
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
290 else:
593
ca3c499e94c6 Shorten help
mpm@selenic.com
parents: 592
diff changeset
291 if ui.verbose:
470
0ab093b473c5 Fix up version module name and command conflict
mpm@selenic.com
parents: 468
diff changeset
292 show_version(ui)
423
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
293 ui.write('\n')
593
ca3c499e94c6 Shorten help
mpm@selenic.com
parents: 592
diff changeset
294 if ui.verbose:
ca3c499e94c6 Shorten help
mpm@selenic.com
parents: 592
diff changeset
295 ui.write('hg commands:\n\n')
ca3c499e94c6 Shorten help
mpm@selenic.com
parents: 592
diff changeset
296 else:
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
297 ui.write('basic hg commands (use "hg help -v" for more):\n\n')
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
298
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
299 h = {}
479
7293cb91bf2a Cleaned up command alias handling in help.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 477
diff changeset
300 for c, e in table.items():
7293cb91bf2a Cleaned up command alias handling in help.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 477
diff changeset
301 f = c.split("|")[0]
593
ca3c499e94c6 Shorten help
mpm@selenic.com
parents: 592
diff changeset
302 if not ui.verbose and not f.startswith("^"):
479
7293cb91bf2a Cleaned up command alias handling in help.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 477
diff changeset
303 continue
593
ca3c499e94c6 Shorten help
mpm@selenic.com
parents: 592
diff changeset
304 if not ui.debugflag and f.startswith("debug"):
ca3c499e94c6 Shorten help
mpm@selenic.com
parents: 592
diff changeset
305 continue
ca3c499e94c6 Shorten help
mpm@selenic.com
parents: 592
diff changeset
306 f = f.lstrip("^")
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
307 d = ""
470
0ab093b473c5 Fix up version module name and command conflict
mpm@selenic.com
parents: 468
diff changeset
308 if e[0].__doc__:
0ab093b473c5 Fix up version module name and command conflict
mpm@selenic.com
parents: 468
diff changeset
309 d = e[0].__doc__.splitlines(0)[0].rstrip()
0ab093b473c5 Fix up version module name and command conflict
mpm@selenic.com
parents: 468
diff changeset
310 h[f] = d
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
311
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
312 fns = h.keys()
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
313 fns.sort()
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
314 m = max(map(len, fns))
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
315 for f in fns:
423
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
316 ui.write(' %-*s %s\n' % (m, f, h[f]))
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
317
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
318 # Commands start here, listed alphabetically
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
319
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
320 def add(ui, repo, *pats, **opts):
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
321 '''add the specified files on the next commit'''
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
322 names = []
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
323 q = dict(zip(pats, pats))
726
809a870a0e73 Add a source designator to the walk methods.
Bryan O'Sullivan <bos@serpentine.com>
parents: 725
diff changeset
324 for src, abs, rel in walk(repo, pats, opts):
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
325 if rel in q or abs in q:
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
326 names.append(abs)
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
327 elif repo.dirstate.state(abs) == '?':
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
328 ui.status('adding %s\n' % rel)
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
329 names.append(abs)
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
330 repo.add(names)
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
331
353
dda243bb34b3 hg addremove: take optional files list
mpm@selenic.com
parents: 350
diff changeset
332 def addremove(ui, repo, *files):