annotate mercurial/commands.py @ 2515:a6700c222314

import: make help clearer. suggested by asak.
author Vadim Gelfer <vadim.gelfer@gmail.com>
date Tue, 27 Jun 2006 09:41:05 -0700
parents f22e3e8fd457
children 9cceb439048b
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
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
9 from node import *
1400
cf9a1233738a i18n first part: make '_' available for files who need it
Benoit Boissinot <benoit.boissinot@ens-lyon.org
parents: 1395
diff changeset
10 from i18n import gettext as _
2461
ff9ee834e3b6 tidy up mtime patch of andrea, get back half of performance loss.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2460
diff changeset
11 demandload(globals(), "os re sys signal shutil imp urllib pdb")
1944
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
12 demandload(globals(), "fancyopts ui hg util lock revlog templater bundlerepo")
2356
2db831b33e8f Final stage of the hgweb split up.
Eric Hopper <hopper@omnifarious.org>
parents: 2355
diff changeset
13 demandload(globals(), "fnmatch mdiff random signal tempfile time")
1944
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
14 demandload(globals(), "traceback errno socket version struct atexit sets bz2")
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
15 demandload(globals(), "archival cStringIO changegroup email.Parser")
2396
8d44649df03b refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2392
diff changeset
16 demandload(globals(), "hgweb.server sshserver")
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
17
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
18 class UnknownCommand(Exception):
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
19 """Exception raised if command is not in the command table."""
1518
ac4ca6bf2383 Improved error message for ambiguous command shortcuts.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1517
diff changeset
20 class AmbiguousCommand(Exception):
ac4ca6bf2383 Improved error message for ambiguous command shortcuts.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1517
diff changeset
21 """Exception raised if command shortcut matches more than one command."""
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
22
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
23 def bail_if_changed(repo):
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
24 modified, added, removed, deleted, unknown = repo.changes()
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
25 if modified or added or removed or deleted:
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
26 raise util.Abort(_("outstanding uncommitted changes"))
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
27
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
28 def filterfiles(filters, files):
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
29 l = [x for x in files if x in filters]
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
30
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
31 for t in filters:
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
32 if t and t[-1] != "/":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
33 t += "/"
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
34 l += [x for x in files if x.startswith(t)]
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
35 return l
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
36
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
37 def relpath(repo, args):
628
8d7f6e68828a Use repo.getcwd() in a few obvious places.
Bryan O'Sullivan <bos@serpentine.com>
parents: 627
diff changeset
38 cwd = repo.getcwd()
8d7f6e68828a Use repo.getcwd() in a few obvious places.
Bryan O'Sullivan <bos@serpentine.com>
parents: 627
diff changeset
39 if cwd:
886
509de8ab6f31 Fix walk path handling on Windows
Bryan O'Sullivan <bos@serpentine.com>
parents: 884
diff changeset
40 return [util.normpath(os.path.join(cwd, x)) for x in args]
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
41 return args
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
42
1568
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
43 def matchpats(repo, pats=[], opts={}, head=''):
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
44 cwd = repo.getcwd()
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
45 if not pats and cwd:
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
46 opts['include'] = [os.path.join(cwd, i) for i in opts['include']]
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
47 opts['exclude'] = [os.path.join(cwd, x) for x in opts['exclude']]
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
48 cwd = ''
1413
1c64c628d15f Do not use 'glob' expansion by default on OS != 'nt'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1405
diff changeset
49 return util.cmdmatcher(repo.root, cwd, pats or ['.'], opts.get('include'),
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
50 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
51
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
52 def makewalk(repo, pats, opts, node=None, head='', badmatch=None):
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
53 files, matchfn, anypats = matchpats(repo, pats, opts, head)
942
7eb8cbcca7c4 Modify commands.walk to yield a 4-tuple.
Bryan O'Sullivan <bos@serpentine.com>
parents: 940
diff changeset
54 exact = dict(zip(files, files))
837
a95c9b3fc3bf Fix performance of hg diff.
Bryan O'Sullivan <bos@serpentine.com>
parents: 823
diff changeset
55 def walk():
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
56 for src, fn in repo.walk(node=node, files=files, match=matchfn,
2042
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
57 badmatch=badmatch):
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
58 yield src, fn, util.pathto(repo.getcwd(), fn), fn in exact
837
a95c9b3fc3bf Fix performance of hg diff.
Bryan O'Sullivan <bos@serpentine.com>
parents: 823
diff changeset
59 return files, matchfn, walk()
a95c9b3fc3bf Fix performance of hg diff.
Bryan O'Sullivan <bos@serpentine.com>
parents: 823
diff changeset
60
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
61 def walk(repo, pats, opts, node=None, head='', badmatch=None):
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
62 files, matchfn, results = makewalk(repo, pats, opts, node, head, badmatch)
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
63 for r in results:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
64 yield r
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
65
1568
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
66 def walkchangerevs(ui, repo, pats, opts):
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
67 '''Iterate over files and the revs they changed in.
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
68
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
69 Callers most commonly need to iterate backwards over the history
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
70 it is interested in. Doing so has awful (quadratic-looking)
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
71 performance, so we use iterators in a "windowed" way.
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
72
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
73 We walk a window of revisions in the desired order. Within the
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
74 window, we first walk forwards to gather data, then in the desired
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
75 order (usually backwards) to display it.
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
76
1570
6a104941d56a hg log -p should show file deletions
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
77 This function returns an (iterator, getchange, matchfn) tuple. The
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
78 getchange function returns the changelog entry for a numeric
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
79 revision. The iterator yields 3-tuples. They will be of one of
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
80 the following forms:
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
81
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
82 "window", incrementing, lastrev: stepping through a window,
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
83 positive if walking forwards through revs, last rev in the
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
84 sequence iterated over - use to reset state for the current window
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
85
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
86 "add", rev, fns: out-of-order traversal of the given file names
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
87 fns, which changed during revision rev - use to gather data for
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
88 possible display
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
89
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
90 "iter", rev, None: in-order traversal of the revs earlier iterated
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
91 over with "add" - use to display data'''
1337
d4b25df77a9e Fix up some bugs for log and grep with empty repo
mpm@selenic.com
parents: 1331
diff changeset
92
1799
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
93 def increasing_windows(start, end, windowsize=8, sizelimit=512):
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
94 if start < end:
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
95 while start < end:
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
96 yield start, min(windowsize, end-start)
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
97 start += windowsize
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
98 if windowsize < sizelimit:
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
99 windowsize *= 2
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
100 else:
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
101 while start > end:
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
102 yield start, min(windowsize, start-end-1)
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
103 start -= windowsize
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
104 if windowsize < sizelimit:
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
105 windowsize *= 2
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
106
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
107
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
108 files, matchfn, anypats = matchpats(repo, pats, opts)
1570
6a104941d56a hg log -p should show file deletions
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
109
1337
d4b25df77a9e Fix up some bugs for log and grep with empty repo
mpm@selenic.com
parents: 1331
diff changeset
110 if repo.changelog.count() == 0:
1570
6a104941d56a hg log -p should show file deletions
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
111 return [], False, matchfn
1337
d4b25df77a9e Fix up some bugs for log and grep with empty repo
mpm@selenic.com
parents: 1331
diff changeset
112
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
113 revs = map(int, revrange(ui, repo, opts['rev'] or ['tip:0']))
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
114 wanted = {}
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
115 slowpath = anypats
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
116 fncache = {}
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
117
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
118 chcache = {}
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
119 def getchange(rev):
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
120 ch = chcache.get(rev)
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
121 if ch is None:
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
122 chcache[rev] = ch = repo.changelog.read(repo.lookup(str(rev)))
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
123 return ch
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
124
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
125 if not slowpath and not files:
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
126 # No files, no patterns. Display all revs.
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
127 wanted = dict(zip(revs, revs))
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
128 if not slowpath:
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
129 # Only files, no patterns. Check the history of each file.
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
130 def filerevgen(filelog):
1799
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
131 for i, window in increasing_windows(filelog.count()-1, -1):
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
132 revs = []
1800
414e81ae971f Removed now obsolete min/max check in walkchangerevs().
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1799
diff changeset
133 for j in xrange(i - window, i + 1):
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
134 revs.append(filelog.linkrev(filelog.node(j)))
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
135 revs.reverse()
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
136 for rev in revs:
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
137 yield rev
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
138
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
139 minrev, maxrev = min(revs), max(revs)
1749
d457fec76ab0 fix warnings from pychecker (unused variables and shadowing)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1747
diff changeset
140 for file_ in files:
d457fec76ab0 fix warnings from pychecker (unused variables and shadowing)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1747
diff changeset
141 filelog = repo.file(file_)
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
142 # A zero count may be a directory or deleted file, so
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
143 # try to find matching entries on the slow path.
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
144 if filelog.count() == 0:
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
145 slowpath = True
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
146 break
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
147 for rev in filerevgen(filelog):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
148 if rev <= maxrev:
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
149 if rev < minrev:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
150 break
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
151 fncache.setdefault(rev, [])
1749
d457fec76ab0 fix warnings from pychecker (unused variables and shadowing)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1747
diff changeset
152 fncache[rev].append(file_)
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
153 wanted[rev] = 1
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
154 if slowpath:
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
155 # The slow path checks files modified in every changeset.
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
156 def changerevgen():
1799
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
157 for i, window in increasing_windows(repo.changelog.count()-1, -1):
1800
414e81ae971f Removed now obsolete min/max check in walkchangerevs().
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1799
diff changeset
158 for j in xrange(i - window, i + 1):
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
159 yield j, getchange(j)[3]
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
160
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
161 for rev, changefiles in changerevgen():
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
162 matches = filter(matchfn, changefiles)
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
163 if matches:
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
164 fncache[rev] = matches
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
165 wanted[rev] = 1
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
166
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
167 def iterate():
1799
b942f5cfd326 Replaced fixed window size for walkchangerevs with an increasing one. Window
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1782
diff changeset
168 for i, window in increasing_windows(0, len(revs)):
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
169 yield 'window', revs[0] < revs[-1], revs[-1]
1800
414e81ae971f Removed now obsolete min/max check in walkchangerevs().
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1799
diff changeset
170 nrevs = [rev for rev in revs[i:i+window]
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
171 if rev in wanted]
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
172 srevs = list(nrevs)
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
173 srevs.sort()
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
174 for rev in srevs:
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
175 fns = fncache.get(rev) or filter(matchfn, getchange(rev)[3])
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
176 yield 'add', rev, fns
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
177 for rev in nrevs:
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
178 yield 'iter', rev, None
1570
6a104941d56a hg log -p should show file deletions
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
179 return iterate(), getchange, matchfn
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
180
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
181 revrangesep = ':'
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
182
2331
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
183 def revfix(repo, val, defval):
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
184 '''turn user-level id of changeset into rev number.
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
185 user-level id can be tag, changeset, rev number, or negative rev
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
186 number relative to number of revs (-1 is tip, etc).'''
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
187 if not val:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
188 return defval
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
189 try:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
190 num = int(val)
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
191 if str(num) != val:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
192 raise ValueError
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
193 if num < 0:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
194 num += repo.changelog.count()
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
195 if num < 0:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
196 num = 0
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
197 elif num >= repo.changelog.count():
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
198 raise ValueError
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
199 except ValueError:
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
200 try:
2331
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
201 num = repo.changelog.rev(repo.lookup(val))
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
202 except KeyError:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
203 raise util.Abort(_('invalid revision identifier %s'), val)
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
204 return num
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
205
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
206 def revpair(ui, repo, revs):
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
207 '''return pair of nodes, given list of revisions. second item can
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
208 be None, meaning use working dir.'''
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
209 if not revs:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
210 return repo.dirstate.parents()[0], None
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
211 end = None
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
212 if len(revs) == 1:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
213 start = revs[0]
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
214 if revrangesep in start:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
215 start, end = start.split(revrangesep, 1)
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
216 start = revfix(repo, start, 0)
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
217 end = revfix(repo, end, repo.changelog.count() - 1)
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
218 else:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
219 start = revfix(repo, start, None)
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
220 elif len(revs) == 2:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
221 if revrangesep in revs[0] or revrangesep in revs[1]:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
222 raise util.Abort(_('too many revisions specified'))
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
223 start = revfix(repo, revs[0], None)
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
224 end = revfix(repo, revs[1], None)
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
225 else:
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
226 raise util.Abort(_('too many revisions specified'))
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
227 if end is not None: end = repo.lookup(str(end))
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
228 return repo.lookup(str(start)), end
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
229
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
230 def revrange(ui, repo, revs):
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
231 """Yield revision as strings from a list of revision specifications."""
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
232 seen = {}
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
233 for spec in revs:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
234 if spec.find(revrangesep) >= 0:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
235 start, end = spec.split(revrangesep, 1)
2331
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
236 start = revfix(repo, start, 0)
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
237 end = revfix(repo, end, repo.changelog.count() - 1)
1066
ea878688221e Shortened commands.revrange() a little bit, added docstring.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1065
diff changeset
238 step = start > end and -1 or 1
ea878688221e Shortened commands.revrange() a little bit, added docstring.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1065
diff changeset
239 for rev in xrange(start, end+step, step):
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
240 if rev in seen:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
241 continue
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
242 seen[rev] = 1
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
243 yield str(rev)
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
244 else:
2331
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
245 rev = revfix(repo, spec, None)
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
246 if rev in seen:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
247 continue
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
248 seen[rev] = 1
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
249 yield str(rev)
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
250
739
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
251 def make_filename(repo, r, pat, node=None,
1254
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
252 total=None, seqno=None, revwidth=None, pathname=None):
632
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
253 node_expander = {
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
254 'H': lambda: hex(node),
632
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
255 'R': lambda: str(r.rev(node)),
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
256 'h': lambda: short(node),
632
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
257 }
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
258 expander = {
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
259 '%': lambda: '%',
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
260 'b': lambda: os.path.basename(repo.root),
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
261 }
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
262
727
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
263 try:
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
264 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
265 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
266 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
267 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
268 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
269 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
270 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
271 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
272 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
273 expander['n'] = lambda:str(seqno).zfill(len(str(total)))
1254
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
274 if pathname is not None:
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
275 expander['s'] = lambda: os.path.basename(pathname)
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
276 expander['d'] = lambda: os.path.dirname(pathname) or '.'
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
277 expander['p'] = lambda: pathname
632
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
278
727
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
279 newname = []
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
280 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
281 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
282 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
283 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
284 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
285 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
286 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
287 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
288 newname.append(c)
632
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
289 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
290 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
291 except KeyError, inst:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
292 raise util.Abort(_("invalid format spec '%%%s' in output file name"),
727
acee766fcb79 Get commands to raise Abort instead of ui.warn(...),sys.exit(1).
Bryan O'Sullivan <bos@serpentine.com>
parents: 726
diff changeset
293 inst.args[0])
632
8b8f710bb658 Provides output option to cat command
thananck@yahoo.com
parents: 630
diff changeset
294
739
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
295 def make_file(repo, r, pat, node=None,
1254
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
296 total=None, seqno=None, revwidth=None, mode='wb', pathname=None):
739
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
297 if not pat or pat == '-':
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
298 return 'w' in mode and sys.stdout or sys.stdin
739
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
299 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
300 return pat
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
301 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
302 return pat
1254
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
303 return open(make_filename(repo, r, pat, node, total, seqno, revwidth,
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
304 pathname),
739
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
305 mode)
36edb39e8e8c Split make_file back out into make_filename and make_file.
Bryan O'Sullivan <bos@serpentine.com>
parents: 738
diff changeset
306
1974
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
307 def write_bundle(cg, filename=None, compress=True):
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
308 """Write a bundle file and return its filename.
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
309
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
310 Existing files will not be overwritten.
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
311 If no filename is specified, a temporary file is created.
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
312 bz2 compression can be turned off.
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
313 The bundle file will be deleted in case of errors.
1972
ce127cb4ee6e Documented behaviour of write_bundle regarding file handles.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1971
diff changeset
314 """
1943
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
315 class nocompress(object):
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
316 def compress(self, x):
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
317 return x
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
318 def flush(self):
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
319 return ""
1974
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
320
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
321 fh = None
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
322 cleanup = None
1943
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
323 try:
1974
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
324 if filename:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
325 if os.path.exists(filename):
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
326 raise util.Abort(_("file '%s' already exists"), filename)
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
327 fh = open(filename, "wb")
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
328 else:
2165
d821918e3bee Use better names (hg-{usage}-{random}.{suffix}) for temporary files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2160
diff changeset
329 fd, filename = tempfile.mkstemp(prefix="hg-bundle-", suffix=".hg")
1974
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
330 fh = os.fdopen(fd, "wb")
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
331 cleanup = filename
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
332
1943
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
333 if compress:
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
334 fh.write("HG10")
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
335 z = bz2.BZ2Compressor(9)
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
336 else:
1980
dfb796786337 use HG10UN header for uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1979
diff changeset
337 fh.write("HG10UN")
1943
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
338 z = nocompress()
1981
736b6c96bbbc make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1980
diff changeset
339 # parse the changegroup data, otherwise we will block
736b6c96bbbc make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1980
diff changeset
340 # in case of sshrepo because we don't know the end of the stream
736b6c96bbbc make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1980
diff changeset
341
736b6c96bbbc make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1980
diff changeset
342 # an empty chunkiter is the end of the changegroup
736b6c96bbbc make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1980
diff changeset
343 empty = False
736b6c96bbbc make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1980
diff changeset
344 while not empty:
736b6c96bbbc make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1980
diff changeset
345 empty = True
736b6c96bbbc make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1980
diff changeset
346 for chunk in changegroup.chunkiter(cg):
736b6c96bbbc make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1980
diff changeset
347 empty = False
736b6c96bbbc make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1980
diff changeset
348 fh.write(z.compress(changegroup.genchunk(chunk)))
736b6c96bbbc make incoming work via ssh (issue139); move chunk code into separate module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1980
diff changeset
349 fh.write(z.compress(changegroup.closechunk()))
1943
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
350 fh.write(z.flush())
1974
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
351 cleanup = None
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
352 return filename
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
353 finally:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
354 if fh is not None:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
355 fh.close()
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
356 if cleanup is not None:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
357 os.unlink(cleanup)
1943
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
358
1014
e37cd99fa909 Clean up argument passing for dodiff
mpm@selenic.com
parents: 989
diff changeset
359 def dodiff(fp, ui, repo, node1, node2, files=None, match=util.always,
1728
9b92b71d5dd7 add -w and -p options to diff. this is for issue 126.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1720
diff changeset
360 changes=None, text=False, opts={}):
1804
c3f959c1c3ff refactor the dodiff optimization
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1803
diff changeset
361 if not node1:
c3f959c1c3ff refactor the dodiff optimization
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1803
diff changeset
362 node1 = repo.dirstate.parents()[0]
c3f959c1c3ff refactor the dodiff optimization
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1803
diff changeset
363 # reading the data for node1 early allows it to play nicely
c3f959c1c3ff refactor the dodiff optimization
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1803
diff changeset
364 # with repo.changes and the revlog cache.
c3f959c1c3ff refactor the dodiff optimization
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1803
diff changeset
365 change = repo.changelog.read(node1)
c3f959c1c3ff refactor the dodiff optimization
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1803
diff changeset
366 mmap = repo.manifest.read(change[0])
c3f959c1c3ff refactor the dodiff optimization
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1803
diff changeset
367 date1 = util.datestr(change[2])
1803
06e7447c7302 speed up hg log --patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1801
diff changeset
368
904
969647d5100a Add optional parameter for changed/added/del/unknown files to commands.dodiff
mason@suse.com
parents: 899
diff changeset
369 if not changes:
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1615
diff changeset
370 changes = repo.changes(node1, node2, files, match=match)
1619
1ba0d7041ac4 Distinguish removed and deleted files. Tests are not fixed yet.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1618
diff changeset
371 modified, added, removed, deleted, unknown = changes
537
411e05b04ffa Propagate file list through dodiff
mpm@selenic.com
parents: 536
diff changeset
372 if files:
1626
f2b1df3dbcbb make the order of the arguments for filterfiles consistent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1625
diff changeset
373 modified, added, removed = map(lambda x: filterfiles(files, x),
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1615
diff changeset
374 (modified, added, removed))
537
411e05b04ffa Propagate file list through dodiff
mpm@selenic.com
parents: 536
diff changeset
375
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1615
diff changeset
376 if not modified and not added and not removed:
537
411e05b04ffa Propagate file list through dodiff
mpm@selenic.com
parents: 536
diff changeset
377 return
411e05b04ffa Propagate file list through dodiff
mpm@selenic.com
parents: 536
diff changeset
378
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
379 if node2:
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
380 change = repo.changelog.read(node2)
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
381 mmap2 = repo.manifest.read(change[0])
2460
605e26a2e96e report correct mtime in the hg diff output
andrea@suse.de
parents: 2458
diff changeset
382 _date2 = util.datestr(change[2])
605e26a2e96e report correct mtime in the hg diff output
andrea@suse.de
parents: 2458
diff changeset
383 def date2(f):
605e26a2e96e report correct mtime in the hg diff output
andrea@suse.de
parents: 2458
diff changeset
384 return _date2
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
385 def read(f):
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
386 return repo.file(f).read(mmap2[f])
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
387 else:
2461
ff9ee834e3b6 tidy up mtime patch of andrea, get back half of performance loss.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2460
diff changeset
388 tz = util.makedate()[1]
2460
605e26a2e96e report correct mtime in the hg diff output
andrea@suse.de
parents: 2458
diff changeset
389 _date2 = util.datestr()
605e26a2e96e report correct mtime in the hg diff output
andrea@suse.de
parents: 2458
diff changeset
390 def date2(f):
605e26a2e96e report correct mtime in the hg diff output
andrea@suse.de
parents: 2458
diff changeset
391 try:
2461
ff9ee834e3b6 tidy up mtime patch of andrea, get back half of performance loss.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2460
diff changeset
392 return util.datestr((os.lstat(repo.wjoin(f)).st_mtime, tz))
2482
818ebebc4554 Fix hg diff regression
andrea@suse.de
parents: 2476
diff changeset
393 except OSError, err:
2461
ff9ee834e3b6 tidy up mtime patch of andrea, get back half of performance loss.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2460
diff changeset
394 if err.errno != errno.ENOENT: raise
2460
605e26a2e96e report correct mtime in the hg diff output
andrea@suse.de
parents: 2458
diff changeset
395 return _date2
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
396 def read(f):
1648
80640ef93aec Process working files through encode filters in dodiff()
Petr Mazanec <petr.mazanec@tiscali.cz>
parents: 1637
diff changeset
397 return repo.wread(f)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
398
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
399 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
400 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
401 else:
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
402 hexfunc = ui.verbose and hex or short
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
403 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
404
1637
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1634
diff changeset
405 diffopts = ui.diffopts()
1728
9b92b71d5dd7 add -w and -p options to diff. this is for issue 126.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1720
diff changeset
406 showfunc = opts.get('show_function') or diffopts['showfunc']
9b92b71d5dd7 add -w and -p options to diff. this is for issue 126.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1720
diff changeset
407 ignorews = opts.get('ignore_all_space') or diffopts['ignorews']
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1615
diff changeset
408 for f in modified:
275
61d45b0ba8fb various merge improvements
mpm@selenic.com
parents: 270
diff changeset
409 to = None
61d45b0ba8fb various merge improvements
mpm@selenic.com
parents: 270
diff changeset
410 if f in mmap:
61d45b0ba8fb various merge improvements
mpm@selenic.com
parents: 270
diff changeset
411 to = repo.file(f).read(mmap[f])
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
412 tn = read(f)
2460
605e26a2e96e report correct mtime in the hg diff output
andrea@suse.de
parents: 2458
diff changeset
413 fp.write(mdiff.unidiff(to, date1, tn, date2(f), f, r, text=text,
1637
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1634
diff changeset
414 showfunc=showfunc, ignorews=ignorews))
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1615
diff changeset
415 for f in added:
264
4c1d7072d5cd Attempt to make diff deal with null sources properly
mpm@selenic.com
parents: 262
diff changeset
416 to = None
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
417 tn = read(f)
2460
605e26a2e96e report correct mtime in the hg diff output
andrea@suse.de
parents: 2458
diff changeset
418 fp.write(mdiff.unidiff(to, date1, tn, date2(f), f, r, text=text,
1637
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1634
diff changeset
419 showfunc=showfunc, ignorews=ignorews))
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1615
diff changeset
420 for f in removed:
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
421 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
422 tn = None
2460
605e26a2e96e report correct mtime in the hg diff output
andrea@suse.de
parents: 2458
diff changeset
423 fp.write(mdiff.unidiff(to, date1, tn, date2(f), f, r, text=text,
1637
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1634
diff changeset
424 showfunc=showfunc, ignorews=ignorews))
329
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
425
1147
d32b91ebad5d Merge with TAH.
bos@serpentine.internal.keyresearch.com
parents: 1146 1133
diff changeset
426 def trimuser(ui, name, rev, revcache):
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
427 """trim the name of the user who committed a change"""
1147
d32b91ebad5d Merge with TAH.
bos@serpentine.internal.keyresearch.com
parents: 1146 1133
diff changeset
428 user = revcache.get(rev)
d32b91ebad5d Merge with TAH.
bos@serpentine.internal.keyresearch.com
parents: 1146 1133
diff changeset
429 if user is None:
d32b91ebad5d Merge with TAH.
bos@serpentine.internal.keyresearch.com
parents: 1146 1133
diff changeset
430 user = revcache[rev] = ui.shortuser(name)
d32b91ebad5d Merge with TAH.
bos@serpentine.internal.keyresearch.com
parents: 1146 1133
diff changeset
431 return user
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
432
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
433 class changeset_printer(object):
1909
37b9f80a5fbb add doc comments to template code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1908
diff changeset
434 '''show changeset information when templating not requested.'''
37b9f80a5fbb add doc comments to template code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1908
diff changeset
435
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
436 def __init__(self, ui, repo):
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
437 self.ui = ui
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
438 self.repo = repo
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
439
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
440 def show(self, rev=0, changenode=None, brinfo=None):
1909
37b9f80a5fbb add doc comments to template code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1908
diff changeset
441 '''show a single changeset or file revision'''
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
442 log = self.repo.changelog
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
443 if changenode is None:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
444 changenode = log.node(rev)
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
445 elif not rev:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
446 rev = log.rev(changenode)
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
447
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
448 if self.ui.quiet:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
449 self.ui.write("%d:%s\n" % (rev, short(changenode)))
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
450 return
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
451
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
452 changes = log.read(changenode)
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
453 date = util.datestr(changes[2])
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
454
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
455 parents = [(log.rev(p), self.ui.verbose and hex(p) or short(p))
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
456 for p in log.parents(changenode)
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
457 if self.ui.debugflag or p != nullid]
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
458 if (not self.ui.debugflag and len(parents) == 1 and
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
459 parents[0][0] == rev-1):
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
460 parents = []
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
461
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
462 if self.ui.verbose:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
463 self.ui.write(_("changeset: %d:%s\n") % (rev, hex(changenode)))
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
464 else:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
465 self.ui.write(_("changeset: %d:%s\n") % (rev, short(changenode)))
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
466
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
467 for tag in self.repo.nodetags(changenode):
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
468 self.ui.status(_("tag: %s\n") % tag)
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
469 for parent in parents:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
470 self.ui.write(_("parent: %d:%s\n") % parent)
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
471
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
472 if brinfo and changenode in brinfo:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
473 br = brinfo[changenode]
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
474 self.ui.write(_("branch: %s\n") % " ".join(br))
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
475
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
476 self.ui.debug(_("manifest: %d:%s\n") %
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
477 (self.repo.manifest.rev(changes[0]), hex(changes[0])))
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
478 self.ui.status(_("user: %s\n") % changes[1])
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
479 self.ui.status(_("date: %s\n") % date)
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
480
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
481 if self.ui.debugflag:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
482 files = self.repo.changes(log.parents(changenode)[0], changenode)
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
483 for key, value in zip([_("files:"), _("files+:"), _("files-:")],
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
484 files):
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
485 if value:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
486 self.ui.note("%-12s %s\n" % (key, " ".join(value)))
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
487 else:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
488 self.ui.note(_("files: %s\n") % " ".join(changes[3]))
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
489
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
490 description = changes[4].strip()
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
491 if description:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
492 if self.ui.verbose:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
493 self.ui.status(_("description:\n"))
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
494 self.ui.status(description)
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
495 self.ui.status("\n\n")
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
496 else:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
497 self.ui.status(_("summary: %s\n") %
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
498 description.splitlines()[0])
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
499 self.ui.status("\n")
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
500
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
501 def show_changeset(ui, repo, opts):
1909
37b9f80a5fbb add doc comments to template code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1908
diff changeset
502 '''show one changeset. uses template or regular display. caller
1913
74cf2b2f43d4 fix some things people wanted to be cleaner.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1910
diff changeset
503 can pass in 'style' and 'template' options in opts.'''
1909
37b9f80a5fbb add doc comments to template code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1908
diff changeset
504
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
505 tmpl = opts.get('template')
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
506 if tmpl:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
507 tmpl = templater.parsestring(tmpl, quoted=False)
778
d09975474928 Shorten hashes displayed in log
mpm@selenic.com
parents: 773
diff changeset
508 else:
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
509 tmpl = ui.config('ui', 'logtemplate')
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
510 if tmpl: tmpl = templater.parsestring(tmpl)
1914
a5bf0030df5f make --style=compact look for map-cmdline.compact.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1913
diff changeset
511 mapfile = opts.get('style') or ui.config('ui', 'style')
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
512 if tmpl or mapfile:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
513 if mapfile:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
514 if not os.path.isfile(mapfile):
1914
a5bf0030df5f make --style=compact look for map-cmdline.compact.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1913
diff changeset
515 mapname = templater.templatepath('map-cmdline.' + mapfile)
a5bf0030df5f make --style=compact look for map-cmdline.compact.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1913
diff changeset
516 if not mapname: mapname = templater.templatepath(mapfile)
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
517 if mapname: mapfile = mapname
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
518 try:
2189
e3eba577a0ae move changeset_templater into templater module.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2184
diff changeset
519 t = templater.changeset_templater(ui, repo, mapfile)
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
520 except SyntaxError, inst:
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
521 raise util.Abort(inst.args[0])
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
522 if tmpl: t.use_template(tmpl)
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
523 return t
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
524 return changeset_printer(ui, repo)
329
67c19ad374a9 Use common output function show_changeset() for hg heads|history|log|tip.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 320
diff changeset
525
470
0ab093b473c5 Fix up version module name and command conflict
mpm@selenic.com
parents: 468
diff changeset
526 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
527 """output version and copyright information"""
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
528 ui.write(_("Mercurial Distributed SCM (version %s)\n")
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
529 % version.get_version())
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
530 ui.status(_(
423
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
531 "\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
532 "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
533 "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
534 "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
535 ))
423
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 396
diff changeset
536
1049
160a68cd393f Allow --help and --version being used together.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1048
diff changeset
537 def help_(ui, cmd=None, with_version=False):
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
538 """show help for a given command or all commands"""
1052
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
539 option_lists = []
846
a30f7ee30914 When hg is invoked without parameters, the short list help is displayed.
kreijack@inwind.REMOVEME.it
parents: 845
diff changeset
540 if cmd and cmd != 'shortlist':
1049
160a68cd393f Allow --help and --version being used together.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1048
diff changeset
541 if with_version:
160a68cd393f Allow --help and --version being used together.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1048
diff changeset
542 show_version(ui)
160a68cd393f Allow --help and --version being used together.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1048
diff changeset
543 ui.write('\n')
1517
b582dbc16165 Canonicalize command when using aliases or prefix matching.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1507
diff changeset
544 aliases, i = find(cmd)
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
545 # synopsis
848
221628fe9b62 Always show short help when an unknown command is given.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 846
diff changeset
546 ui.write("%s\n\n" % i[2])
293
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
547
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
548 # description
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
549 doc = i[0].__doc__
1710
c65113f3627a Show "(No help text available)" for commands without doc string.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1661
diff changeset
550 if not doc:
c65113f3627a Show "(No help text available)" for commands without doc string.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1661
diff changeset
551 doc = _("(No help text available)")
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
552 if ui.quiet:
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
553 doc = doc.splitlines(0)[0]
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
554 ui.write("%s\n" % doc.rstrip())
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
555
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
556 if not ui.quiet:
1052
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
557 # aliases
1517
b582dbc16165 Canonicalize command when using aliases or prefix matching.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1507
diff changeset
558 if len(aliases) > 1:
b582dbc16165 Canonicalize command when using aliases or prefix matching.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1507
diff changeset
559 ui.write(_("\naliases: %s\n") % ', '.join(aliases[1:]))
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
560
1052
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
561 # options
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
562 if i[1]:
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
563 option_lists.append(("options", i[1]))
293
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
564
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
565 else:
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
566 # program name
1049
160a68cd393f Allow --help and --version being used together.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1048
diff changeset
567 if ui.verbose or with_version:
470
0ab093b473c5 Fix up version module name and command conflict
mpm@selenic.com
parents: 468
diff changeset
568 show_version(ui)
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
569 else:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
570 ui.status(_("Mercurial Distributed SCM\n"))
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
571 ui.status('\n')
843
859e7ea530bd 'hg help -v' shows global options
kreijack@inwind.REMOVEME.it
parents: 842
diff changeset
572
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
573 # list of commands
846
a30f7ee30914 When hg is invoked without parameters, the short list help is displayed.
kreijack@inwind.REMOVEME.it
parents: 845
diff changeset
574 if cmd == "shortlist":
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
575 ui.status(_('basic commands (use "hg help" '
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
576 'for the full list or option "-v" for details):\n\n'))
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
577 elif ui.verbose:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
578 ui.status(_('list of commands:\n\n'))
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
579 else:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
580 ui.status(_('list of commands (use "hg help -v" '
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
581 'to show aliases and global options):\n\n'))
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
582
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
583 h = {}
844
5a717cfa7406 'hg help -v' mentions the alias of the commands
kreijack@inwind.REMOVEME.it
parents: 843
diff changeset
584 cmds = {}
479
7293cb91bf2a Cleaned up command alias handling in help.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 477
diff changeset
585 for c, e in table.items():
7293cb91bf2a Cleaned up command alias handling in help.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 477
diff changeset
586 f = c.split("|")[0]
846
a30f7ee30914 When hg is invoked without parameters, the short list help is displayed.
kreijack@inwind.REMOVEME.it
parents: 845
diff changeset
587 if cmd == "shortlist" and not f.startswith("^"):
479
7293cb91bf2a Cleaned up command alias handling in help.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 477
diff changeset
588 continue
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
589 f = f.lstrip("^")
593
ca3c499e94c6 Shorten help
mpm@selenic.com
parents: 592
diff changeset
590 if not ui.debugflag and f.startswith("debug"):
ca3c499e94c6 Shorten help
mpm@selenic.com
parents: 592
diff changeset
591 continue
1710
c65113f3627a Show "(No help text available)" for commands without doc string.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1661
diff changeset
592 doc = e[0].__doc__
c65113f3627a Show "(No help text available)" for commands without doc string.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1661
diff changeset
593 if not doc:
c65113f3627a Show "(No help text available)" for commands without doc string.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1661
diff changeset
594 doc = _("(No help text available)")
c65113f3627a Show "(No help text available)" for commands without doc string.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1661
diff changeset
595 h[f] = doc.splitlines(0)[0].rstrip()
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
596 cmds[f] = c.lstrip("^")
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
597
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
598 fns = h.keys()
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
599 fns.sort()
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
600 m = max(map(len, fns))
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
601 for f in fns:
844
5a717cfa7406 'hg help -v' mentions the alias of the commands
kreijack@inwind.REMOVEME.it
parents: 843
diff changeset
602 if ui.verbose:
5a717cfa7406 'hg help -v' mentions the alias of the commands
kreijack@inwind.REMOVEME.it
parents: 843
diff changeset
603 commands = cmds[f].replace("|",", ")
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
604 ui.write(" %s:\n %s\n"%(commands, h[f]))
844
5a717cfa7406 'hg help -v' mentions the alias of the commands
kreijack@inwind.REMOVEME.it
parents: 843
diff changeset
605 else:
5a717cfa7406 'hg help -v' mentions the alias of the commands
kreijack@inwind.REMOVEME.it
parents: 843
diff changeset
606 ui.write(' %-*s %s\n' % (m, f, h[f]))
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
607
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
608 # global options
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
609 if ui.verbose:
1052
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
610 option_lists.append(("global options", globalopts))
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
611
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
612 # list all option lists
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
613 opt_output = []
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
614 for title, options in option_lists:
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
615 opt_output.append(("\n%s:\n" % title, None))
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
616 for shortopt, longopt, default, desc in options:
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
617 opt_output.append(("%2s%s" % (shortopt and "-%s" % shortopt,
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
618 longopt and " --%s" % longopt),
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
619 "%s%s" % (desc,
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
620 default
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
621 and _(" (default: %s)") % default
1052
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
622 or "")))
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
623
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
624 if opt_output:
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
625 opts_len = max([len(line[0]) for line in opt_output if line[1]])
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
626 for first, second in opt_output:
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
627 if second:
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
628 ui.write(" %-*s %s\n" % (opts_len, first, second))
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
629 else:
d8279ca39dc7 Adjust display and alignment of command options to match global options.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1051
diff changeset
630 ui.write("%s\n" % first)
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 848
diff changeset
631
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
632 # Commands start here, listed alphabetically
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
633
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
634 def add(ui, repo, *pats, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
635 """add the specified files on the next commit
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
636
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
637 Schedule files to be version controlled and added to the repository.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
638
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
639 The files will be added to the repository at the next commit.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
640
1568
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
641 If no names are given, add all files in the repository.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
642 """
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
643
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
644 names = []
942
7eb8cbcca7c4 Modify commands.walk to yield a 4-tuple.
Bryan O'Sullivan <bos@serpentine.com>
parents: 940
diff changeset
645 for src, abs, rel, exact in walk(repo, pats, opts):
7eb8cbcca7c4 Modify commands.walk to yield a 4-tuple.
Bryan O'Sullivan <bos@serpentine.com>
parents: 940
diff changeset
646 if exact:
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
647 if ui.verbose:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
648 ui.status(_('adding %s\n') % rel)
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
649 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
650 elif repo.dirstate.state(abs) == '?':
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
651 ui.status(_('adding %s\n') % rel)
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
652 names.append(abs)
2503
37655f10ced6 Don't require opts['dry_run'] to be set to fix external tools like tailor.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2494
diff changeset
653 if not opts.get('dry_run'):
2411
734df6333ca4 add: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2410
diff changeset
654 repo.add(names)
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
655
766
b444a7e053f1 Get addremove to use new walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 764
diff changeset
656 def addremove(ui, repo, *pats, **opts):
2181
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
657 """add all new files, delete all missing files (DEPRECATED)
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
658
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
659 (DEPRECATED)
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
660 Add all new files and remove all missing files from the repository.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
661
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
662 New files are ignored if they match any of the patterns in .hgignore. As
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
663 with add, these changes take effect at the next commit.
2181
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
664
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
665 This command is now deprecated and will be removed in a future
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
666 release. Please use add and remove --after instead.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
667 """
2181
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
668 ui.warn(_('(the addremove command is deprecated; use add and remove '
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
669 '--after instead)\n'))
1712
21dcf38e5d7d Allow callers to pass in the dirstate lock in most localrepo.py funcs.
mason@suse.com
parents: 1710
diff changeset
670 return addremove_lock(ui, repo, pats, opts)
21dcf38e5d7d Allow callers to pass in the dirstate lock in most localrepo.py funcs.
mason@suse.com
parents: 1710
diff changeset
671
21dcf38e5d7d Allow callers to pass in the dirstate lock in most localrepo.py funcs.
mason@suse.com
parents: 1710
diff changeset
672 def addremove_lock(ui, repo, pats, opts, wlock=None):
809
d0fb9efa2b2d Fix performance regression in addremove command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 783
diff changeset
673 add, remove = [], []
942
7eb8cbcca7c4 Modify commands.walk to yield a 4-tuple.
Bryan O'Sullivan <bos@serpentine.com>
parents: 940
diff changeset
674 for src, abs, rel, exact in walk(repo, pats, opts):
880
409a9a7b0da2 addremove was not correctly finding removed files when given
mason@suse.com
parents: 879
diff changeset
675 if src == 'f' and repo.dirstate.state(abs) == '?':
409a9a7b0da2 addremove was not correctly finding removed files when given
mason@suse.com
parents: 879
diff changeset
676 add.append(abs)
1255
e825dfea3823 Get all commands that operate on files to honour --verbose and --quiet.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1254
diff changeset
677 if ui.verbose or not exact:
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
678 ui.status(_('adding %s\n') % ((pats and rel) or abs))
880
409a9a7b0da2 addremove was not correctly finding removed files when given
mason@suse.com
parents: 879
diff changeset
679 if repo.dirstate.state(abs) != 'r' and not os.path.exists(rel):
809
d0fb9efa2b2d Fix performance regression in addremove command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 783
diff changeset
680 remove.append(abs)
1255
e825dfea3823 Get all commands that operate on files to honour --verbose and --quiet.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1254
diff changeset
681 if ui.verbose or not exact:
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
682 ui.status(_('removing %s\n') % ((pats and rel) or abs))
2412
e5cb39577b9f addremove: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2411
diff changeset
683 if not opts.get('dry_run'):
e5cb39577b9f addremove: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2411
diff changeset
684 repo.add(add, wlock=wlock)
e5cb39577b9f addremove: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2411
diff changeset
685 repo.remove(remove, wlock=wlock)
219
8ff4532376a4 hg checkout: refuse to checkout if there are outstanding changes
mpm@selenic.com
parents: 214
diff changeset
686
733
1966c553f652 Convert annotate over to walk interface.
Bryan O'Sullivan <bos@serpentine.com>
parents: 732
diff changeset
687 def annotate(ui, repo, *pats, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
688 """show changeset information per file line
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
689
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
690 List changes in files, showing the revision id responsible for each line
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
691
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
692 This command is useful to discover who did a change or when a change took
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
693 place.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
694
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
695 Without the -a option, annotate will avoid processing files it
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
696 detects as binary. With -a, annotate will generate an annotation
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
697 anyway, probably with undesirable results.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
698 """
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
699 def getnode(rev):
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
700 return short(repo.changelog.node(rev))
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
701
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
702 ucache = {}
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
703 def getname(rev):
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
704 cl = repo.changelog.read(repo.changelog.node(rev))
1147
d32b91ebad5d Merge with TAH.
bos@serpentine.internal.keyresearch.com
parents: 1146 1133
diff changeset
705 return trimuser(ui, cl[1], rev, ucache)
500
ebc4714a7632 [PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents: 499
diff changeset
706
1522
d07d729ce306 Added --date option to annotate.
lupus@debian.org
parents: 1519
diff changeset
707 dcache = {}
d07d729ce306 Added --date option to annotate.
lupus@debian.org
parents: 1519
diff changeset
708 def getdate(rev):
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
709 datestr = dcache.get(rev)
1522
d07d729ce306 Added --date option to annotate.
lupus@debian.org
parents: 1519
diff changeset
710 if datestr is None:
d07d729ce306 Added --date option to annotate.
lupus@debian.org
parents: 1519
diff changeset
711 cl = repo.changelog.read(repo.changelog.node(rev))
d07d729ce306 Added --date option to annotate.
lupus@debian.org
parents: 1519
diff changeset
712 datestr = dcache[rev] = util.datestr(cl[2])
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
713 return datestr
1522
d07d729ce306 Added --date option to annotate.
lupus@debian.org
parents: 1519
diff changeset
714
744
3d88f6dd1ed4 Handle empty file list for annotate
mpm@selenic.com
parents: 743
diff changeset
715 if not pats:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
716 raise util.Abort(_('at least one file name or pattern required'))
744
3d88f6dd1ed4 Handle empty file list for annotate
mpm@selenic.com
parents: 743
diff changeset
717
1523
fdda77dcf601 Fix line wrapping
Matt Mackall <mpm@selenic.com>
parents: 1522
diff changeset
718 opmap = [['user', getname], ['number', str], ['changeset', getnode],
fdda77dcf601 Fix line wrapping
Matt Mackall <mpm@selenic.com>
parents: 1522
diff changeset
719 ['date', getdate]]
1522
d07d729ce306 Added --date option to annotate.
lupus@debian.org
parents: 1519
diff changeset
720 if not opts['user'] and not opts['changeset'] and not opts['date']:
714
29fcd195e056 Some cleanups in commands.annotate().
Thomas Arendsen Hein <thomas@intevation.de>
parents: 712
diff changeset
721 opts['number'] = 1
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
722
715
938dd667ca21 Make annotate use option --rev instead od --revision like other commands.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 714
diff changeset
723 if opts['rev']:
938dd667ca21 Make annotate use option --rev instead od --revision like other commands.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 714
diff changeset
724 node = repo.changelog.lookup(opts['rev'])
714
29fcd195e056 Some cleanups in commands.annotate().
Thomas Arendsen Hein <thomas@intevation.de>
parents: 712
diff changeset
725 else:
29fcd195e056 Some cleanups in commands.annotate().
Thomas Arendsen Hein <thomas@intevation.de>
parents: 712
diff changeset
726 node = repo.dirstate.parents()[0]
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
727 change = repo.changelog.read(node)
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
728 mmap = repo.manifest.read(change[0])
1016
836667830fee Teach annotate about binary files
mpm@selenic.com
parents: 1015
diff changeset
729
1847
94498a262d15 fix annotate for removed files
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1840
diff changeset
730 for src, abs, rel, exact in walk(repo, pats, opts, node=node):
1016
836667830fee Teach annotate about binary files
mpm@selenic.com
parents: 1015
diff changeset
731 f = repo.file(abs)
836667830fee Teach annotate about binary files
mpm@selenic.com
parents: 1015
diff changeset
732 if not opts['text'] and util.binary(f.read(mmap[abs])):
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
733 ui.write(_("%s: binary file\n") % ((pats and rel) or abs))
1016
836667830fee Teach annotate about binary files
mpm@selenic.com
parents: 1015
diff changeset
734 continue
836667830fee Teach annotate about binary files
mpm@selenic.com
parents: 1015
diff changeset
735
836667830fee Teach annotate about binary files
mpm@selenic.com
parents: 1015
diff changeset
736 lines = f.annotate(mmap[abs])
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
737 pieces = []
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
738
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
739 for o, f in opmap:
714
29fcd195e056 Some cleanups in commands.annotate().
Thomas Arendsen Hein <thomas@intevation.de>
parents: 712
diff changeset
740 if opts[o]:
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
741 l = [f(n) for n, dummy in lines]
771
0de223012086 Fixes for annotate
mpm@selenic.com
parents: 770
diff changeset
742 if l:
0de223012086 Fixes for annotate
mpm@selenic.com
parents: 770
diff changeset
743 m = max(map(len, l))
0de223012086 Fixes for annotate
mpm@selenic.com
parents: 770
diff changeset
744 pieces.append(["%*s" % (m, x) for x in l])
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
745
771
0de223012086 Fixes for annotate
mpm@selenic.com
parents: 770
diff changeset
746 if pieces:
0de223012086 Fixes for annotate
mpm@selenic.com
parents: 770
diff changeset
747 for p, l in zip(zip(*pieces), lines):
0de223012086 Fixes for annotate
mpm@selenic.com
parents: 770
diff changeset
748 ui.write("%s: %s" % (" ".join(p), l[1]))
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
749
2112
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
750 def archive(ui, repo, dest, **opts):
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
751 '''create unversioned archive of a repository revision
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
752
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
753 By default, the revision used is the parent of the working
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
754 directory; use "-r" to specify a different revision.
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
755
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
756 To specify the type of archive to create, use "-t". Valid
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
757 types are:
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
758
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
759 "files" (default): a directory full of files
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
760 "tar": tar archive, uncompressed
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
761 "tbz2": tar archive, compressed using bzip2
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
762 "tgz": tar archive, compressed using gzip
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
763 "uzip": zip archive, uncompressed
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
764 "zip": zip archive, compressed using deflate
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
765
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
766 The exact name of the destination archive or directory is given
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
767 using a format string; see "hg help export" for details.
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
768
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
769 Each member added to an archive file has a directory prefix
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
770 prepended. Use "-p" to specify a format string for the prefix.
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
771 The default is the basename of the archive, with suffixes removed.
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
772 '''
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
773
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
774 if opts['rev']:
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
775 node = repo.lookup(opts['rev'])
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
776 else:
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
777 node, p2 = repo.dirstate.parents()
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
778 if p2 != nullid:
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
779 raise util.Abort(_('uncommitted merge - please provide a '
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
780 'specific revision'))
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
781
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
782 dest = make_filename(repo, repo.changelog, dest, node)
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
783 if os.path.realpath(dest) == repo.root:
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
784 raise util.Abort(_('repository root cannot be destination'))
2160
858df1f354c1 Cleanup archive command: Don't overwrite gettext, quoting in cmd table entry.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2159
diff changeset
785 dummy, matchfn, dummy = matchpats(repo, [], opts)
2476
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
786 kind = opts.get('type') or 'files'
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
787 prefix = opts['prefix']
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
788 if dest == '-':
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
789 if kind == 'files':
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
790 raise util.Abort(_('cannot archive plain files to stdout'))
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
791 dest = sys.stdout
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
792 if not prefix: prefix = os.path.basename(repo.root) + '-%h'
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
793 prefix = make_filename(repo, repo.changelog, prefix, node)
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
794 archival.archive(repo, dest, node, kind, not opts['no_decode'],
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
795 matchfn, prefix)
2112
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
796
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
797 def backout(ui, repo, rev, **opts):
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
798 '''reverse effect of earlier changeset
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
799
2254
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
800 Commit the backed out changes as a new changeset. The new
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
801 changeset is a child of the backed out changeset.
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
802
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
803 If you back out a changeset other than the tip, a new head is
2254
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
804 created. This head is the parent of the working directory. If
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
805 you back out an old changeset, your working directory will appear
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
806 old after the backout. You should merge the backout changeset
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
807 with another head.
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
808
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
809 The --merge option remembers the parent of the working directory
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
810 before starting the backout, then merges the new head with that
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
811 changeset afterwards. This saves you from doing the merge by
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
812 hand. The result of this merge is not committed, as for a normal
827fcfe88b14 backout command: better help.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2245
diff changeset
813 merge.'''
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
814
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
815 bail_if_changed(repo)
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
816 op1, op2 = repo.dirstate.parents()
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
817 if op2 != nullid:
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
818 raise util.Abort(_('outstanding uncommitted merge'))
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
819 node = repo.lookup(rev)
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
820 parent, p2 = repo.changelog.parents(node)
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
821 if parent == nullid:
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
822 raise util.Abort(_('cannot back out a change with no parents'))
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
823 if p2 != nullid:
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
824 raise util.Abort(_('cannot back out a merge'))
2175
b2ae81a7df29 Make hg update more verbose by default (issue12)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2167
diff changeset
825 repo.update(node, force=True, show_stats=False)
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
826 revert_opts = opts.copy()
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
827 revert_opts['rev'] = hex(parent)
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
828 revert(ui, repo, **revert_opts)
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
829 commit_opts = opts.copy()
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
830 commit_opts['addremove'] = False
2159
5c34b98ad6b1 Small cleanups to backout command:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2158
diff changeset
831 if not commit_opts['message'] and not commit_opts['logfile']:
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
832 commit_opts['message'] = _("Backed out changeset %s") % (hex(node))
2268
6c9305fbebaf fix coding style of backout editor change.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2267
diff changeset
833 commit_opts['force_editor'] = True
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
834 commit(ui, repo, **commit_opts)
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
835 def nice(node):
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
836 return '%d:%s' % (repo.changelog.rev(node), short(node))
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
837 ui.status(_('changeset %s backs out changeset %s\n') %
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
838 (nice(repo.changelog.tip()), nice(node)))
2493
9c660e691e90 print message after backout that tells that backout adds new head.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2482
diff changeset
839 if op1 != node:
9c660e691e90 print message after backout that tells that backout adds new head.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2482
diff changeset
840 if opts['merge']:
9c660e691e90 print message after backout that tells that backout adds new head.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2482
diff changeset
841 ui.status(_('merging with changeset %s\n') % nice(op1))
9c660e691e90 print message after backout that tells that backout adds new head.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2482
diff changeset
842 doupdate(ui, repo, hex(op1), **opts)
9c660e691e90 print message after backout that tells that backout adds new head.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2482
diff changeset
843 else:
9c660e691e90 print message after backout that tells that backout adds new head.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2482
diff changeset
844 ui.status(_('the backout changeset is a new head - '
9c660e691e90 print message after backout that tells that backout adds new head.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2482
diff changeset
845 'do not forget to merge\n'))
9c660e691e90 print message after backout that tells that backout adds new head.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2482
diff changeset
846 ui.status(_('(use "backout -m" if you want to auto-merge)\n'))
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
847
2494
73ac95671788 push, outgoing, bundle: fall back to "default" if "default-push" not defined
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2493
diff changeset
848 def bundle(ui, repo, fname, dest=None, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
849 """create a changegroup file
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
850
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
851 Generate a compressed changegroup file collecting all changesets
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
852 not found in the other repository.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
853
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
854 This file can then be transferred using conventional means and
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
855 applied to another repository with the unbundle command. This is
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
856 useful when native push and pull are not available or when
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
857 exporting an entire repository is undesirable. The standard file
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
858 extension is ".hg".
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
859
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
860 Unlike import/export, this exactly preserves all changeset
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
861 contents including permissions, rename data, and revision history.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
862 """
2494
73ac95671788 push, outgoing, bundle: fall back to "default" if "default-push" not defined
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2493
diff changeset
863 dest = ui.expandpath(dest or 'default-push', dest or 'default')
1218
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
864 other = hg.repository(ui, dest)
1959
d53a18f592be add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1948
diff changeset
865 o = repo.findoutgoing(other, force=opts['force'])
1736
50de0887bbcd add preoutgoing and outgoing hooks.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1734
diff changeset
866 cg = repo.changegroup(o, 'bundle')
1943
8198c60f7914 refactor the bundle writing code, since we will reuse it later
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1940
diff changeset
867 write_bundle(cg, fname)
1218
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
868
1254
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
869 def cat(ui, repo, file1, *pats, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
870 """output the latest or given revisions of files
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
871
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
872 Print the specified files as they were at the given revision.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
873 If no revision is given then the tip is used.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
874
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
875 Output may be to a file, in which case the name of the file is
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
876 given using a format string. The formatting rules are the same as
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
877 for the export command, with the following additions:
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
878
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
879 %s basename of file being printed
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
880 %d dirname of file being printed, or '.' if in repo root
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
881 %p root-relative path name of file being printed
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
882 """
1254
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
883 mf = {}
1545
d69070c2547a fix errors found by pychecker
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1543
diff changeset
884 rev = opts['rev']
d69070c2547a fix errors found by pychecker
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1543
diff changeset
885 if rev:
1582
63799b01985c fix the cat command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
886 node = repo.lookup(rev)
63799b01985c fix the cat command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
887 else:
63799b01985c fix the cat command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
888 node = repo.changelog.tip()
63799b01985c fix the cat command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
889 change = repo.changelog.read(node)
63799b01985c fix the cat command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
890 mf = repo.manifest.read(change[0])
63799b01985c fix the cat command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
891 for src, abs, rel, exact in walk(repo, (file1,) + pats, opts, node):
1254
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
892 r = repo.file(abs)
1582
63799b01985c fix the cat command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
893 n = mf[abs]
1254
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
894 fp = make_file(repo, r, opts['output'], node=n, pathname=abs)
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
895 fp.write(r.read(n))
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
896
698
df78d8ccac4c Use python function instead of external 'cp' command when cloning repos.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 697
diff changeset
897 def clone(ui, source, dest=None, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
898 """make a copy of an existing repository
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
899
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
900 Create a copy of an existing repository in a new directory.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
901
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
902 If no destination directory name is specified, it defaults to the
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
903 basename of the source.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
904
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
905 The location of the source is added to the new repository's
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
906 .hg/hgrc file, as the default to be used for future pulls.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
907
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
908 For efficiency, hardlinks are used for cloning whenever the source
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
909 and destination are on the same filesystem. Some filesystems,
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
910 such as AFS, implement hardlinking incorrectly, but do not report
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
911 errors. In these cases, use the --pull option to avoid
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
912 hardlinking.
1811
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
913
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
914 See pull for valid source format details.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
915 """
485
c5705ab9cebd [PATCH] add clone command
mpm@selenic.com
parents: 484
diff changeset
916 if dest is None:
528
648386fabf9c Fix clone bug wth trailing slash
mpm@selenic.com
parents: 527
diff changeset
917 dest = os.path.basename(os.path.normpath(source))
532
2e9698a5c92c clone: abort on pre-existing destination directory
mpm@selenic.com
parents: 528
diff changeset
918
2e9698a5c92c clone: abort on pre-existing destination directory
mpm@selenic.com
parents: 528
diff changeset
919 if os.path.exists(dest):
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
920 raise util.Abort(_("destination '%s' already exists"), dest)
523
003df62ae39f [PATCH] Force "hg clone" to always create a new directory
mpm@selenic.com
parents: 522
diff changeset
921
891
a9b843b114f9 Fix clone when target directory is relative.
Bryan O'Sullivan <bos@serpentine.com>
parents: 886
diff changeset
922 dest = os.path.realpath(dest)
a9b843b114f9 Fix clone when target directory is relative.
Bryan O'Sullivan <bos@serpentine.com>
parents: 886
diff changeset
923
1559
59b3639df0a9 Convert all classes to new-style classes by deriving them from object.
Eric Hopper <hopper@omnifarious.org>
parents: 1552
diff changeset
924 class Dircleanup(object):
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
925 def __init__(self, dir_):
625
978011cf5279 Cleanups for repo.pull
Matt Mackall <mpm@selenic.com>
parents: 624
diff changeset
926 self.rmtree = shutil.rmtree
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
927 self.dir_ = dir_
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
928 os.mkdir(dir_)
535
fba26990604a Deal with failed clone/transaction interaction
mpm@selenic.com
parents: 534
diff changeset
929 def close(self):
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
930 self.dir_ = None
535
fba26990604a Deal with failed clone/transaction interaction
mpm@selenic.com
parents: 534
diff changeset
931 def __del__(self):
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
932 if self.dir_:
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
933 self.rmtree(self.dir_, True)
485
c5705ab9cebd [PATCH] add clone command
mpm@selenic.com
parents: 484
diff changeset
934
963
84355e3e4493 Add -e and --remotecmd for clone and pull too
mpm@selenic.com
parents: 961
diff changeset
935 if opts['ssh']:
84355e3e4493 Add -e and --remotecmd for clone and pull too
mpm@selenic.com
parents: 961
diff changeset
936 ui.setconfig("ui", "ssh", opts['ssh'])
84355e3e4493 Add -e and --remotecmd for clone and pull too
mpm@selenic.com
parents: 961
diff changeset
937 if opts['remotecmd']:
84355e3e4493 Add -e and --remotecmd for clone and pull too
mpm@selenic.com
parents: 961
diff changeset
938 ui.setconfig("ui", "remotecmd", opts['remotecmd'])
84355e3e4493 Add -e and --remotecmd for clone and pull too
mpm@selenic.com
parents: 961
diff changeset
939
1892
622ee75cb4c9 Directory names take precedence over symbolic names consistently.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1889
diff changeset
940 source = ui.expandpath(source)
1314
d37a46859acd Fix default clone destination
mpm@selenic.com
parents: 1313
diff changeset
941
d37a46859acd Fix default clone destination
mpm@selenic.com
parents: 1313
diff changeset
942 d = Dircleanup(dest)
562
be6233a2bfdd hg clone: only use the absolute path for .hg/hgrc
mpm@selenic.com
parents: 561
diff changeset
943 abspath = source
634
da5378d39269 Add a repo method to report repo device
Matt Mackall <mpm@selenic.com>
parents: 632
diff changeset
944 other = hg.repository(ui, source)
485
c5705ab9cebd [PATCH] add clone command
mpm@selenic.com
parents: 484
diff changeset
945
1244
937ee88da3ef clone: fall back to pull if we can't lock the source repo
mpm@selenic.com
parents: 1242
diff changeset
946 copy = False
1315
32f6cae83db7 Fix setting of hg default when using --pull on clone of local repository.
Lee Cantey <lcantey@gmail.com>
parents: 1314
diff changeset
947 if other.dev() != -1:
675
49de76abc4da hg clone stored path fix
Mikael Berthe <mikael@lilotux.net>
parents: 674
diff changeset
948 abspath = os.path.abspath(source)
1461
02099220ad49 Implementing clone -r, which clones all changesets needed to reach a
Eric Hopper <hopper@omnifarious.org>
parents: 1457
diff changeset
949 if not opts['pull'] and not opts['rev']:
1315
32f6cae83db7 Fix setting of hg default when using --pull on clone of local repository.
Lee Cantey <lcantey@gmail.com>
parents: 1314
diff changeset
950 copy = True
1331
cfae1ed2d61f Write hgrc file in text mode, even on Windows.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1325
diff changeset
951
1244
937ee88da3ef clone: fall back to pull if we can't lock the source repo
mpm@selenic.com
parents: 1242
diff changeset
952 if copy:
937ee88da3ef clone: fall back to pull if we can't lock the source repo
mpm@selenic.com
parents: 1242
diff changeset
953 try:
937ee88da3ef clone: fall back to pull if we can't lock the source repo
mpm@selenic.com
parents: 1242
diff changeset
954 # we use a lock here because if we race with commit, we
937ee88da3ef clone: fall back to pull if we can't lock the source repo
mpm@selenic.com
parents: 1242
diff changeset
955 # can end up with extra data in the cloned revlogs that's
937ee88da3ef clone: fall back to pull if we can't lock the source repo
mpm@selenic.com
parents: 1242
diff changeset
956 # not pointed to by changesets, thus causing verify to
937ee88da3ef clone: fall back to pull if we can't lock the source repo
mpm@selenic.com
parents: 1242
diff changeset
957 # fail
1754
fdfe89a3962d use repo.lock when cloning via copy, use lock.LockException when necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1749
diff changeset
958 l1 = other.lock()
fdfe89a3962d use repo.lock when cloning via copy, use lock.LockException when necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1749
diff changeset
959 except lock.LockException:
1244
937ee88da3ef clone: fall back to pull if we can't lock the source repo
mpm@selenic.com
parents: 1242
diff changeset
960 copy = False
917
7f3f55903496 Fix hg clone race with writer
mpm@selenic.com
parents: 915
diff changeset
961
1244
937ee88da3ef clone: fall back to pull if we can't lock the source repo
mpm@selenic.com
parents: 1242
diff changeset
962 if copy:
937ee88da3ef clone: fall back to pull if we can't lock the source repo
mpm@selenic.com
parents: 1242
diff changeset
963 # we lock here to avoid premature writing to the target
1208
4644df4944ff Clean up local clone file list
mpm@selenic.com
parents: 1207
diff changeset
964 os.mkdir(os.path.join(dest, ".hg"))
1209
920682a532df Tighten up clone locking
mpm@selenic.com
parents: 1208
diff changeset
965 l2 = lock.lock(os.path.join(dest, ".hg", "lock"))
1114
58371c4c2c8f Remove the lock file copied during clone (was the source lock file)
Stephen Darnell
parents: 1113
diff changeset
966
1208
4644df4944ff Clean up local clone file list
mpm@selenic.com
parents: 1207
diff changeset
967 files = "data 00manifest.d 00manifest.i 00changelog.d 00changelog.i"
4644df4944ff Clean up local clone file list
mpm@selenic.com
parents: 1207
diff changeset
968 for f in files.split():
4644df4944ff Clean up local clone file list
mpm@selenic.com
parents: 1207
diff changeset
969 src = os.path.join(source, ".hg", f)
4644df4944ff Clean up local clone file list
mpm@selenic.com
parents: 1207
diff changeset
970 dst = os.path.join(dest, ".hg", f)
1444
f84ed9c6131d fix for cloning empty repo (.hg is still empty)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1443
diff changeset
971 try:
f84ed9c6131d fix for cloning empty repo (.hg is still empty)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1443
diff changeset
972 util.copyfiles(src, dst)
f84ed9c6131d fix for cloning empty repo (.hg is still empty)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1443
diff changeset
973 except OSError, inst:
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
974 if inst.errno != errno.ENOENT:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
975 raise
535
fba26990604a Deal with failed clone/transaction interaction
mpm@selenic.com
parents: 534
diff changeset
976
fba26990604a Deal with failed clone/transaction interaction
mpm@selenic.com
parents: 534
diff changeset
977 repo = hg.repository(ui, dest)
485
c5705ab9cebd [PATCH] add clone command
mpm@selenic.com
parents: 484
diff changeset
978
535
fba26990604a Deal with failed clone/transaction interaction
mpm@selenic.com
parents: 534
diff changeset
979 else:
1467
06d5d8794e5f Stupid spelling mistake in a variable name.
Eric Hopper <hopper@omnifarious.org>
parents: 1465
diff changeset
980 revs = None
1461
02099220ad49 Implementing clone -r, which clones all changesets needed to reach a
Eric Hopper <hopper@omnifarious.org>
parents: 1457
diff changeset
981 if opts['rev']:
1465
be6b5ce60b7f Implementing pull -r and changing clone -r. Both now support
Eric Hopper <hopper@omnifarious.org>
parents: 1461
diff changeset
982 if not other.local():
1607
d72d27ee72b9 add '_' to several strings
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1602
diff changeset
983 error = _("clone -r not supported yet for remote repositories.")
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
984 raise util.Abort(error)
1465
be6b5ce60b7f Implementing pull -r and changing clone -r. Both now support
Eric Hopper <hopper@omnifarious.org>
parents: 1461
diff changeset
985 else:
be6b5ce60b7f Implementing pull -r and changing clone -r. Both now support
Eric Hopper <hopper@omnifarious.org>
parents: 1461
diff changeset
986 revs = [other.lookup(rev) for rev in opts['rev']]
be6b5ce60b7f Implementing pull -r and changing clone -r. Both now support
Eric Hopper <hopper@omnifarious.org>
parents: 1461
diff changeset
987 repo = hg.repository(ui, dest, create=1)
be6b5ce60b7f Implementing pull -r and changing clone -r. Both now support
Eric Hopper <hopper@omnifarious.org>
parents: 1461
diff changeset
988 repo.pull(other, heads = revs)
503
c6a2e41c8c60 Fix troubles with clone and exception handling
mpm@selenic.com
parents: 500
diff changeset
989
1331
cfae1ed2d61f Write hgrc file in text mode, even on Windows.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1325
diff changeset
990 f = repo.opener("hgrc", "w", text=True)
1206
6512d352d6c1 Redo local clone hgrc fix
mpm@selenic.com
parents: 1205
diff changeset
991 f.write("[paths]\n")
6512d352d6c1 Redo local clone hgrc fix
mpm@selenic.com
parents: 1205
diff changeset
992 f.write("default = %s\n" % abspath)
1547
4dea10839201 close .hg/hgrc after writing the default values on clone
TK Soh <teekaysoh@yahoo.com>
parents: 1545
diff changeset
993 f.close()
515
03f27b1381f9 Whitespace cleanups
mpm@selenic.com
parents: 513
diff changeset
994
535
fba26990604a Deal with failed clone/transaction interaction
mpm@selenic.com
parents: 534
diff changeset
995 if not opts['noupdate']:
2283
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
996 doupdate(repo.ui, repo)
535
fba26990604a Deal with failed clone/transaction interaction
mpm@selenic.com
parents: 534
diff changeset
997
fba26990604a Deal with failed clone/transaction interaction
mpm@selenic.com
parents: 534
diff changeset
998 d.close()
515
03f27b1381f9 Whitespace cleanups
mpm@selenic.com
parents: 513
diff changeset
999
813
80fd2958235a Adapt commit to use file matching code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 812
diff changeset
1000 def commit(ui, repo, *pats, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1001 """commit the specified files or all outstanding changes
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1002
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1003 Commit changes to the given files into the repository.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1004
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1005 If a list of files is omitted, all changes reported by "hg status"
1995
2da2d46862fb Spelling fix: "commited" -> "committed"
mcmillen@cs.cmu.edu
parents: 1994
diff changeset
1006 will be committed.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1007
1996
4c70b10f0418 Don't mention deprecated HGEDITOR variable in the help text of commit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1995
diff changeset
1008 If no commit message is specified, the editor configured in your hgrc
4c70b10f0418 Don't mention deprecated HGEDITOR variable in the help text of commit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1995
diff changeset
1009 or in the EDITOR environment variable is started to enter a message.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1010 """
1443
3a0b69ea5708 Remove deprecated commit -t option
Matt Mackall <mpm@selenic.com>
parents: 1440
diff changeset
1011 message = opts['message']
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
1012 logfile = opts['logfile']
1319
5a15df632e6a Fix behaviour of commit.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1318
diff changeset
1013
5a15df632e6a Fix behaviour of commit.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1318
diff changeset
1014 if message and logfile:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1015 raise util.Abort(_('options --message and --logfile are mutually '
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1016 'exclusive'))
762
312b4a10d862 Changed more occurances of 'text' to 'message'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 761
diff changeset
1017 if not message and logfile:
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
1018 try:
899
aa5b726e9619 Add '-' support to the commit logfile option to read message from stdin.
mark.williamson@cl.cam.ac.uk
parents: 898
diff changeset
1019 if logfile == '-':
aa5b726e9619 Add '-' support to the commit logfile option to read message from stdin.
mark.williamson@cl.cam.ac.uk
parents: 898
diff changeset
1020 message = sys.stdin.read()
aa5b726e9619 Add '-' support to the commit logfile option to read message from stdin.
mark.williamson@cl.cam.ac.uk
parents: 898
diff changeset
1021 else:
aa5b726e9619 Add '-' support to the commit logfile option to read message from stdin.
mark.williamson@cl.cam.ac.uk
parents: 898
diff changeset
1022 message = open(logfile).read()
1319
5a15df632e6a Fix behaviour of commit.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1318
diff changeset
1023 except IOError, inst:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1024 raise util.Abort(_("can't read commit message '%s': %s") %
1319
5a15df632e6a Fix behaviour of commit.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1318
diff changeset
1025 (logfile, inst.strerror))
289
266396e32006 hg commit: add -t and -l options
mpm@selenic.com
parents: 286
diff changeset
1026
354
e3667e3a18ac hg commit: add -A flag
mpm@selenic.com
parents: 353
diff changeset
1027 if opts['addremove']:
2181
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
1028 addremove_lock(ui, repo, pats, opts)
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
1029 fns, match, anypats = matchpats(repo, pats, opts)
813
80fd2958235a Adapt commit to use file matching code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 812
diff changeset
1030 if pats:
1619
1ba0d7041ac4 Distinguish removed and deleted files. Tests are not fixed yet.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1618
diff changeset
1031 modified, added, removed, deleted, unknown = (
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1615
diff changeset
1032 repo.changes(files=fns, match=match))
1619
1ba0d7041ac4 Distinguish removed and deleted files. Tests are not fixed yet.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1618
diff changeset
1033 files = modified + added + removed
813
80fd2958235a Adapt commit to use file matching code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 812
diff changeset
1034 else:
80fd2958235a Adapt commit to use file matching code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 812
diff changeset
1035 files = []
1202
71111d796e40 Commit date validation: more stringent checks, more useful error messages.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1194
diff changeset
1036 try:
2267
d812d91c5a84 Force editor to appear for an 'hg backout' if a message or logfile aren't
john.levon@sun.com
parents: 2254
diff changeset
1037 repo.commit(files, message, opts['user'], opts['date'], match,
2268
6c9305fbebaf fix coding style of backout editor change.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2267
diff changeset
1038 force_editor=opts.get('force_editor'))
1202
71111d796e40 Commit date validation: more stringent checks, more useful error messages.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1194
diff changeset
1039 except ValueError, inst:
71111d796e40 Commit date validation: more stringent checks, more useful error messages.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1194
diff changeset
1040 raise util.Abort(str(inst))
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
1041
1822
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1812
diff changeset
1042 def docopy(ui, repo, pats, opts, wlock):
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1812
diff changeset
1043 # called with the repo lock held
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1044 cwd = repo.getcwd()
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1045 errors = 0
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1046 copied = []
1514
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
1047 targets = {}
1249
a5355fa5e33a Fix up copy command to behave more like regular "cp".
Bryan O'Sullivan <bos@serpentine.com>
parents: 1247
diff changeset
1048
a5355fa5e33a Fix up copy command to behave more like regular "cp".
Bryan O'Sullivan <bos@serpentine.com>
parents: 1247
diff changeset
1049 def okaytocopy(abs, rel, exact):
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1050 reasons = {'?': _('is not managed'),
1634
f49f602fae92 copy & rename can ignore removed source files
Robin Farine <robin.farine@terminus.org>
parents: 1633
diff changeset
1051 'a': _('has been marked for add'),
f49f602fae92 copy & rename can ignore removed source files
Robin Farine <robin.farine@terminus.org>
parents: 1633
diff changeset
1052 'r': _('has been marked for remove')}
1747
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1053 state = repo.dirstate.state(abs)
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1054 reason = reasons.get(state)
1249
a5355fa5e33a Fix up copy command to behave more like regular "cp".
Bryan O'Sullivan <bos@serpentine.com>
parents: 1247
diff changeset
1055 if reason:
1747
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1056 if state == 'a':
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1057 origsrc = repo.dirstate.copied(abs)
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1058 if origsrc is not None:
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1059 return origsrc
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1060 if exact:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1061 ui.warn(_('%s: not copying - file %s\n') % (rel, reason))
1249
a5355fa5e33a Fix up copy command to behave more like regular "cp".
Bryan O'Sullivan <bos@serpentine.com>
parents: 1247
diff changeset
1062 else:
1747
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1063 return abs
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1064
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1065 def copy(origsrc, abssrc, relsrc, target, exact):
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1066 abstarget = util.canonpath(repo.root, cwd, target)
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1067 reltarget = util.pathto(cwd, abstarget)
1514
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
1068 prevsrc = targets.get(abstarget)
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
1069 if prevsrc is not None:
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
1070 ui.warn(_('%s: not overwriting - %s collides with %s\n') %
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
1071 (reltarget, abssrc, prevsrc))
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
1072 return
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1073 if (not opts['after'] and os.path.exists(reltarget) or
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1074 opts['after'] and repo.dirstate.state(abstarget) not in '?r'):
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1075 if not opts['force']:
1513
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
1076 ui.warn(_('%s: not overwriting - file exists\n') %
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
1077 reltarget)
5c3b93b244aa copy & rename don't overwrite unless --force is specified
Robin Farine <robin.farine@terminus.org>
parents: 1512
diff changeset
1078 return
2503
37655f10ced6 Don't require opts['dry_run'] to be set to fix external tools like tailor.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2494
diff changeset
1079 if not opts['after'] and not opts.get('dry_run'):
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1080 os.unlink(reltarget)
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1081 if opts['after']:
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1082 if not os.path.exists(reltarget):
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1083 return
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1084 else:
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1085 targetdir = os.path.dirname(reltarget) or '.'
2503
37655f10ced6 Don't require opts['dry_run'] to be set to fix external tools like tailor.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2494
diff changeset
1086 if not os.path.isdir(targetdir) and not opts.get('dry_run'):
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1087 os.makedirs(targetdir)
1249
a5355fa5e33a Fix up copy command to behave more like regular "cp".
Bryan O'Sullivan <bos@serpentine.com>
parents: 1247
diff changeset
1088 try:
1822
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1812
diff changeset
1089 restore = repo.dirstate.state(abstarget) == 'r'
2503
37655f10ced6 Don't require opts['dry_run'] to be set to fix external tools like tailor.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2494
diff changeset
1090 if restore and not opts.get('dry_run'):
1822
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1812
diff changeset
1091 repo.undelete([abstarget], wlock)
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1812
diff changeset
1092 try:
2503
37655f10ced6 Don't require opts['dry_run'] to be set to fix external tools like tailor.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2494
diff changeset
1093 if not opts.get('dry_run'):
2414
86e07466bcfc remove: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2413
diff changeset
1094 shutil.copyfile(relsrc, reltarget)
86e07466bcfc remove: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2413
diff changeset
1095 shutil.copymode(relsrc, reltarget)
1822
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1812
diff changeset
1096 restore = False
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1812
diff changeset
1097 finally:
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1812
diff changeset
1098 if restore:
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1812
diff changeset
1099 repo.remove([abstarget], wlock)
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
1100 except shutil.Error, inst:
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
1101 raise util.Abort(str(inst))
1249
a5355fa5e33a Fix up copy command to behave more like regular "cp".
Bryan O'Sullivan <bos@serpentine.com>
parents: 1247
diff changeset
1102 except IOError, inst:
a5355fa5e33a Fix up copy command to behave more like regular "cp".
Bryan O'Sullivan <bos@serpentine.com>
parents: 1247
diff changeset
1103 if inst.errno == errno.ENOENT:
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1104 ui.warn(_('%s: deleted in working copy\n') % relsrc)
1249
a5355fa5e33a Fix up copy command to behave more like regular "cp".
Bryan O'Sullivan <bos@serpentine.com>
parents: 1247
diff changeset
1105 else:
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1106 ui.warn(_('%s: cannot copy - %s\n') %
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1107 (relsrc, inst.strerror))
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1108 errors += 1
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1109 return
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1110 if ui.verbose or not exact:
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1111 ui.status(_('copying %s to %s\n') % (relsrc, reltarget))
1514
faf46d810a85 avoid to copy more than one file to the same destination file
Robin Farine <robin.farine@terminus.org>
parents: 1513
diff changeset
1112 targets[abstarget] = abssrc
2503
37655f10ced6 Don't require opts['dry_run'] to be set to fix external tools like tailor.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2494
diff changeset
1113 if abstarget != origsrc and not opts.get('dry_run'):
1822
64df4220b349 copy/rename to a removed destination file
Robin Farine <robin.farine@terminus.org>
parents: 1812
diff changeset
1114 repo.copy(origsrc, abstarget, wlock)
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1115 copied.append((abssrc, relsrc, exact))
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1116
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1117 def targetpathfn(pat, dest, srcs):
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1118 if os.path.isdir(pat):
1633
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1119 abspfx = util.canonpath(repo.root, cwd, pat)
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1120 if destdirexists:
1633
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1121 striplen = len(os.path.split(abspfx)[0])
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1122 else:
1633
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1123 striplen = len(abspfx)
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1124 if striplen:
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1125 striplen += len(os.sep)
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1126 res = lambda p: os.path.join(dest, p[striplen:])
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1127 elif destdirexists:
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1128 res = lambda p: os.path.join(dest, os.path.basename(p))
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1129 else:
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1130 res = lambda p: dest
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1131 return res
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1132
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1133 def targetpathafterfn(pat, dest, srcs):
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1134 if util.patkind(pat, None)[0]:
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1135 # a mercurial pattern
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1136 res = lambda p: os.path.join(dest, os.path.basename(p))
1633
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1137 else:
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1138 abspfx = util.canonpath(repo.root, cwd, pat)
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1139 if len(abspfx) < len(srcs[0][0]):
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1140 # A directory. Either the target path contains the last
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1141 # component of the source path or it does not.
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1142 def evalpath(striplen):
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1143 score = 0
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1144 for s in srcs:
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1145 t = os.path.join(dest, s[0][striplen:])
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1146 if os.path.exists(t):
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1147 score += 1
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1148 return score
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1149
1633
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1150 striplen = len(abspfx)
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1151 if striplen:
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1152 striplen += len(os.sep)
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1153 if os.path.isdir(os.path.join(dest, os.path.split(abspfx)[1])):
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1154 score = evalpath(striplen)
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1155 striplen1 = len(os.path.split(abspfx)[0])
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1156 if striplen1:
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1157 striplen1 += len(os.sep)
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1158 if evalpath(striplen1) > score:
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1159 striplen = striplen1
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1160 res = lambda p: os.path.join(dest, p[striplen:])
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1161 else:
1633
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1162 # a file
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1163 if destdirexists:
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1164 res = lambda p: os.path.join(dest, os.path.basename(p))
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1165 else:
94c179a92f4a copy/rename '.' or '..' correctly
Robin Farine <robin.farine@terminus.org>
parents: 1626
diff changeset
1166 res = lambda p: dest
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1167 return res
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1168
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1169
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1170 pats = list(pats)
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1171 if not pats:
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1172 raise util.Abort(_('no source or destination specified'))
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1173 if len(pats) == 1:
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1174 raise util.Abort(_('no destination specified'))
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1175 dest = pats.pop()
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1176 destdirexists = os.path.isdir(dest)
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1177 if (len(pats) > 1 or util.patkind(pats[0], None)[0]) and not destdirexists:
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1178 raise util.Abort(_('with multiple sources, destination must be an '
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1179 'existing directory'))
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1180 if opts['after']:
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1181 tfn = targetpathafterfn
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1182 else:
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1183 tfn = targetpathfn
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1184 copylist = []
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1185 for pat in pats:
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1186 srcs = []
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1187 for tag, abssrc, relsrc, exact in walk(repo, [pat], opts):
1747
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1188 origsrc = okaytocopy(abssrc, relsrc, exact)
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1189 if origsrc:
91c56c427171 transitive copy/rename
Robin Farine <robin.farine@terminus.org>
parents: 1743
diff changeset
1190 srcs.append((origsrc, abssrc, relsrc, exact))
1565
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1191 if not srcs:
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1192 continue
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1193 copylist.append((tfn(pat, dest, srcs), srcs))
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1194 if not copylist:
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1195 raise util.Abort(_('no files to copy'))
4bcbc126b80b fix rename --after
Robin Farine <robin.farine@terminus.org>
parents: 1561
diff changeset
1196
2414
86e07466bcfc remove: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2413
diff changeset
1197 for targetpath, srcs in copylist:
86e07466bcfc remove: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2413
diff changeset
1198 for origsrc, abssrc, relsrc, exact in srcs:
86e07466bcfc remove: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2413
diff changeset
1199 copy(origsrc, abssrc, relsrc, targetpath(abssrc), exact)
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1200
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1201 if errors:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1202 ui.warn(_('(consider using --after)\n'))
1512
53ad6ee6ede4 generalize copy/rename to handle more than one source directory
Robin Farine <robin.farine@terminus.org>
parents: 1507
diff changeset
1203 return errors, copied
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
1204
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
1205 def copy(ui, repo, *pats, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1206 """mark files as copied for the next commit
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1207
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1208 Mark dest as having copies of source files. If dest is a
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1209 directory, copies are put in that directory. If dest is a file,
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1210 there can only be one source.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1211
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1212 By default, this command copies the contents of files as they
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1213 stand in the working directory. If invoked with --after, the
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1214 operation is recorded, but no copying is performed.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1215
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1216 This command takes effect in the next commit.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1217
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1218 NOTE: This command should be treated as experimental. While it
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1219 should properly record copied files, this information is not yet
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1220 fully used by merge, nor fully reported by log.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1221 """
2016
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
1222 wlock = repo.wlock(0)
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
1223 errs, copied = docopy(ui, repo, pats, opts, wlock)
1249
a5355fa5e33a Fix up copy command to behave more like regular "cp".
Bryan O'Sullivan <bos@serpentine.com>
parents: 1247
diff changeset
1224 return errs
363
ae96b7e1318d Add hg copy
mpm@selenic.com
parents: 355
diff changeset
1225
1262
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1226 def debugancestor(ui, index, rev1, rev2):
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1227 """find the ancestor revision of two revisions in a given index"""
2072
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
1228 r = revlog.revlog(util.opener(os.getcwd(), audit=False), index, "", 0)
1262
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1229 a = r.ancestor(r.lookup(rev1), r.lookup(rev2))
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1230 ui.write("%d:%s\n" % (r.rev(a), hex(a)))
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1231
2034
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1232 def debugcomplete(ui, cmd='', **opts):
1887
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
1233 """returns the completion list associated with the given command"""
2034
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1234
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1235 if opts['options']:
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1236 options = []
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1237 otables = [globalopts]
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1238 if cmd:
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1239 aliases, entry = find(cmd)
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1240 otables.append(entry[1])
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1241 for t in otables:
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1242 for o in t:
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1243 if o[0]:
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1244 options.append('-%s' % o[0])
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1245 options.append('--%s' % o[1])
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1246 ui.write("%s\n" % "\n".join(options))
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1247 return
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1248
1887
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
1249 clist = findpossible(cmd).keys()
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
1250 clist.sort()
2034
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
1251 ui.write("%s\n" % "\n".join(clist))
1887
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
1252
1755
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
1253 def debugrebuildstate(ui, repo, rev=None):
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
1254 """rebuild the dirstate as it would look like for the given revision"""
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
1255 if not rev:
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
1256 rev = repo.changelog.tip()
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
1257 else:
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
1258 rev = repo.lookup(rev)
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
1259 change = repo.changelog.read(rev)
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
1260 n = change[0]
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
1261 files = repo.manifest.readflags(n)
1760
13f8e068d13c fix typo in debugrebuildstate
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1755
diff changeset
1262 wlock = repo.wlock()
1755
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
1263 repo.dirstate.rebuild(rev, files.iteritems())
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
1264
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1265 def debugcheckstate(ui, repo):
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1266 """validate the correctness of the current dirstate"""
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1267 parent1, parent2 = repo.dirstate.parents()
555
39a1cfb03ebd Unbreak dirstate debug commands
mpm@selenic.com
parents: 554
diff changeset
1268 repo.dirstate.read()
39a1cfb03ebd Unbreak dirstate debug commands
mpm@selenic.com
parents: 554
diff changeset
1269 dc = repo.dirstate.map
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1270 keys = dc.keys()
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1271 keys.sort()
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1272 m1n = repo.changelog.read(parent1)[0]
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1273 m2n = repo.changelog.read(parent2)[0]
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1274 m1 = repo.manifest.read(m1n)
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1275 m2 = repo.manifest.read(m2n)
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1276 errors = 0
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1277 for f in dc:
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1278 state = repo.dirstate.state(f)
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1279 if state in "nr" and f not in m1:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1280 ui.warn(_("%s in state %s, but not in manifest1\n") % (f, state))
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1281 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1282 if state in "a" and f in m1:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1283 ui.warn(_("%s in state %s, but also in manifest1\n") % (f, state))
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1284 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1285 if state in "m" and f not in m1 and f not in m2:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1286 ui.warn(_("%s in state %s, but not in either manifest\n") %
582
df8a5a0098d4 Remove all remaining print statements
mpm@selenic.com
parents: 580
diff changeset
1287 (f, state))
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1288 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1289 for f in m1:
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1290 state = repo.dirstate.state(f)
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1291 if state not in "nrm":
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1292 ui.warn(_("%s in manifest1, but listed as state %s") % (f, state))
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1293 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1294 if errors:
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
1295 error = _(".hg/dirstate inconsistent with current parent's manifest")
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
1296 raise util.Abort(error)
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1297
2410
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1298 def debugconfig(ui, repo, *values):
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1299 """show combined config settings from all hgrc files
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1300
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1301 With no args, print names and values of all config items.
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1302
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1303 With one arg of the form section.name, print just the value of
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1304 that config item.
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1305
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1306 With multiple args, print names and values of all config items
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1307 with matching section names."""
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1308
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1309 if values:
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1310 if len([v for v in values if '.' in v]) > 1:
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1311 raise util.Abort(_('only one config item permitted'))
1028
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 989
diff changeset
1312 for section, name, value in ui.walkconfig():
2410
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1313 sectname = section + '.' + name
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1314 if values:
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1315 for v in values:
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1316 if v == section:
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1317 ui.write('%s=%s\n' % (sectname, value))
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1318 elif v == sectname:
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1319 ui.write(value, '\n')
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1320 else:
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
1321 ui.write('%s=%s\n' % (sectname, value))
1028
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 989
diff changeset
1322
1395
c2eb204917f8 Add debugsetparents command
Matt Mackall <mpm@selenic.com>
parents: 1390
diff changeset
1323 def debugsetparents(ui, repo, rev1, rev2=None):
1470
fb9b84c91222 minor fix on command help docstrings
TK Soh <teekaysoh@yahoo.com>
parents: 1469
diff changeset
1324 """manually set the parents of the current working directory
1395
c2eb204917f8 Add debugsetparents command
Matt Mackall <mpm@selenic.com>
parents: 1390
diff changeset
1325
c2eb204917f8 Add debugsetparents command
Matt Mackall <mpm@selenic.com>
parents: 1390
diff changeset
1326 This is useful for writing repository conversion tools, but should
c2eb204917f8 Add debugsetparents command
Matt Mackall <mpm@selenic.com>
parents: 1390
diff changeset
1327 be used with care.
c2eb204917f8 Add debugsetparents command
Matt Mackall <mpm@selenic.com>
parents: 1390
diff changeset
1328 """
c2eb204917f8 Add debugsetparents command
Matt Mackall <mpm@selenic.com>
parents: 1390
diff changeset
1329
c2eb204917f8 Add debugsetparents command
Matt Mackall <mpm@selenic.com>
parents: 1390
diff changeset
1330 if not rev2:
c2eb204917f8 Add debugsetparents command
Matt Mackall <mpm@selenic.com>
parents: 1390
diff changeset
1331 rev2 = hex(nullid)
c2eb204917f8 Add debugsetparents command
Matt Mackall <mpm@selenic.com>
parents: 1390
diff changeset
1332
c2eb204917f8 Add debugsetparents command
Matt Mackall <mpm@selenic.com>
parents: 1390
diff changeset
1333 repo.dirstate.setparents(repo.lookup(rev1), repo.lookup(rev2))
c2eb204917f8 Add debugsetparents command
Matt Mackall <mpm@selenic.com>
parents: 1390
diff changeset
1334
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1335 def debugstate(ui, repo):
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1336 """show the contents of the current dirstate"""
555
39a1cfb03ebd Unbreak dirstate debug commands
mpm@selenic.com
parents: 554
diff changeset
1337 repo.dirstate.read()
39a1cfb03ebd Unbreak dirstate debug commands
mpm@selenic.com
parents: 554
diff changeset
1338 dc = repo.dirstate.map
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1339 keys = dc.keys()
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1340 keys.sort()
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
1341 for file_ in keys:
791
040655ea0cc4 Show all dirstate info for 'hg debugstate'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 770
diff changeset
1342 ui.write("%c %3o %10d %s %s\n"
040655ea0cc4 Show all dirstate info for 'hg debugstate'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 770
diff changeset
1343 % (dc[file_][0], dc[file_][1] & 0777, dc[file_][2],
040655ea0cc4 Show all dirstate info for 'hg debugstate'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 770
diff changeset
1344 time.strftime("%x %X",
040655ea0cc4 Show all dirstate info for 'hg debugstate'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 770
diff changeset
1345 time.localtime(dc[file_][3])), file_))
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1346 for f in repo.dirstate.copies:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1347 ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copies[f], f))
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1348
1039
4296754ba7b4 Add debugdata for dumping revlog revision data
mpm@selenic.com
parents: 1037
diff changeset
1349 def debugdata(ui, file_, rev):
4296754ba7b4 Add debugdata for dumping revlog revision data
mpm@selenic.com
parents: 1037
diff changeset
1350 """dump the contents of an data file revision"""
1835
bdfb524d728a Validate paths before reading or writing files in repository or working dir.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1833
diff changeset
1351 r = revlog.revlog(util.opener(os.getcwd(), audit=False),
2072
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
1352 file_[:-2] + ".i", file_, 0)
1313
1cc7c0cbc30b Fix traceback during invalid rev identifier for debugdata
Anupam Kapoor<anupam.kapoor@gmail.com>
parents: 1312
diff changeset
1353 try:
1cc7c0cbc30b Fix traceback during invalid rev identifier for debugdata
Anupam Kapoor<anupam.kapoor@gmail.com>
parents: 1312
diff changeset
1354 ui.write(r.revision(r.lookup(rev)))
1cc7c0cbc30b Fix traceback during invalid rev identifier for debugdata
Anupam Kapoor<anupam.kapoor@gmail.com>
parents: 1312
diff changeset
1355 except KeyError:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1356 raise util.Abort(_('invalid revision identifier %s'), rev)
1039
4296754ba7b4 Add debugdata for dumping revlog revision data
mpm@selenic.com
parents: 1037
diff changeset
1357
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
1358 def debugindex(ui, file_):
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1359 """dump the contents of an index file"""
2072
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
1360 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_, "", 0)
582
df8a5a0098d4 Remove all remaining print statements
mpm@selenic.com
parents: 580
diff changeset
1361 ui.write(" rev offset length base linkrev" +
989
1b6eb272b238 Reformat debugindex output
mpm@selenic.com
parents: 988
diff changeset
1362 " nodeid p1 p2\n")
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
1363 for i in range(r.count()):
2072
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
1364 node = r.node(i)
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
1365 pp = r.parents(node)
989
1b6eb272b238 Reformat debugindex output
mpm@selenic.com
parents: 988
diff changeset
1366 ui.write("% 6d % 9d % 7d % 6d % 7d %s %s %s\n" % (
2072
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
1367 i, r.start(i), r.length(i), r.base(i), r.linkrev(node),
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
1368 short(node), short(pp[0]), short(pp[1])))
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
1369
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
1370 def debugindexdot(ui, file_):
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1371 """dump an index DAG as a .dot file"""
2072
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
1372 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_, "", 0)
582
df8a5a0098d4 Remove all remaining print statements
mpm@selenic.com
parents: 580
diff changeset
1373 ui.write("digraph G {\n")
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
1374 for i in range(r.count()):
2287
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
1375 node = r.node(i)
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
1376 pp = r.parents(node)
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
1377 ui.write("\t%d -> %d\n" % (r.rev(pp[0]), i))
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
1378 if pp[1] != nullid:
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
1379 ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i))
582
df8a5a0098d4 Remove all remaining print statements
mpm@selenic.com
parents: 580
diff changeset
1380 ui.write("}\n")
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
1381
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1382 def debugrename(ui, repo, file, rev=None):
1194
c165cbf56bb1 Add doc string for debugrename.
bos@serpentine.internal.keyresearch.com
parents: 1193
diff changeset
1383 """dump rename information"""
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1384 r = repo.file(relpath(repo, [file])[0])
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1385 if rev:
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1386 try:
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1387 # assume all revision numbers are for changesets
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1388 n = repo.lookup(rev)
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1389 change = repo.changelog.read(n)
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1390 m = repo.manifest.read(change[0])
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1391 n = m[relpath(repo, [file])[0]]
1541
bf4e7ef08741 fixed some stuff pychecker shows, marked unclear/wrong stuff with XXX
twaldmann@thinkmo.de
parents: 1526
diff changeset
1392 except (hg.RepoError, KeyError):
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1393 n = r.lookup(rev)
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1394 else:
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1395 n = r.tip()
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1396 m = r.renamed(n)
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1397 if m:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1398 ui.write(_("renamed from %s:%s\n") % (m[0], hex(m[1])))
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1399 else:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1400 ui.write(_("not renamed\n"))
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
1401
820
89985a1b3427 Clean up walk and changes code to use normalised names properly.
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
1402 def debugwalk(ui, repo, *pats, **opts):
1053
1539ca091d86 Added missing doc strings for two new debug commmands.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1052
diff changeset
1403 """show how files match on given patterns"""
820
89985a1b3427 Clean up walk and changes code to use normalised names properly.
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
1404 items = list(walk(repo, pats, opts))
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1405 if not items:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1406 return
1309
332f225b835c Make debugwalk strip trailing spaces and remove these from test-walk.out
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1285
diff changeset
1407 fmt = '%%s %%-%ds %%-%ds %%s' % (
942
7eb8cbcca7c4 Modify commands.walk to yield a 4-tuple.
Bryan O'Sullivan <bos@serpentine.com>
parents: 940
diff changeset
1408 max([len(abs) for (src, abs, rel, exact) in items]),
7eb8cbcca7c4 Modify commands.walk to yield a 4-tuple.
Bryan O'Sullivan <bos@serpentine.com>
parents: 940
diff changeset
1409 max([len(rel) for (src, abs, rel, exact) in items]))
7eb8cbcca7c4 Modify commands.walk to yield a 4-tuple.
Bryan O'Sullivan <bos@serpentine.com>
parents: 940
diff changeset
1410 for src, abs, rel, exact in items:
1309
332f225b835c Make debugwalk strip trailing spaces and remove these from test-walk.out
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1285
diff changeset
1411 line = fmt % (src, abs, rel, exact and 'exact' or '')
332f225b835c Make debugwalk strip trailing spaces and remove these from test-walk.out
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1285
diff changeset
1412 ui.write("%s\n" % line.rstrip())
820
89985a1b3427 Clean up walk and changes code to use normalised names properly.
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
1413
732
ba0b6d17a6de Convert diff command over to using walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 731
diff changeset
1414 def diff(ui, repo, *pats, **opts):
1568
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
1415 """diff repository (or selected files)
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1416
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1417 Show differences between revisions for the specified files.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1418
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1419 Differences between files are shown using the unified diff format.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1420
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1421 When two revision arguments are given, then changes are shown
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1422 between those revisions. If only one revision is specified then
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1423 that revision is compared to the working directory, and, when no
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1424 revisions are specified, the working directory files are compared
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1425 to its parent.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1426
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1427 Without the -a option, diff will avoid generating diffs of files
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1428 it detects as binary. With -a, diff will generate a diff anyway,
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1429 probably with undesirable results.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1430 """
2331
953dbfb2824c diff: allow to use -rA:B syntax as well as -rA -rB
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2330
diff changeset
1431 node1, node2 = revpair(ui, repo, opts['rev'])
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
1432
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
1433 fns, matchfn, anypats = matchpats(repo, pats, opts)
1014
e37cd99fa909 Clean up argument passing for dodiff
mpm@selenic.com
parents: 989
diff changeset
1434
1267
b0633406c07a Fix diff command so it doesn't walk the dirstate unnecessarily.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1262
diff changeset
1435 dodiff(sys.stdout, ui, repo, node1, node2, fns, match=matchfn,
1728
9b92b71d5dd7 add -w and -p options to diff. this is for issue 126.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1720
diff changeset
1436 text=opts['text'], opts=opts)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
1437
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
1438 def doexport(ui, repo, changeset, seqno, total, revwidth, opts):
246
96cde50a746f Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents: 245
diff changeset
1439 node = repo.lookup(changeset)
1571
bcdc030c59f8 add a --switch-parent option to export against the other parent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1570
diff changeset
1440 parents = [p for p in repo.changelog.parents(node) if p != nullid]
1589
fce5292866c6 fix a bug in hg export --switch-parent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1586
diff changeset
1441 if opts['switch_parent']:
fce5292866c6 fix a bug in hg export --switch-parent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1586
diff changeset
1442 parents.reverse()
1571
bcdc030c59f8 add a --switch-parent option to export against the other parent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1570
diff changeset
1443 prev = (parents and parents[0]) or nullid
246
96cde50a746f Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents: 245
diff changeset
1444 change = repo.changelog.read(node)
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
1445
729
626aa658e2a9 Turn make_filename into make_file, which returns a file handle.
Bryan O'Sullivan <bos@serpentine.com>
parents: 727
diff changeset
1446 fp = make_file(repo, repo.changelog, opts['output'],
626aa658e2a9 Turn make_filename into make_file, which returns a file handle.
Bryan O'Sullivan <bos@serpentine.com>
parents: 727
diff changeset
1447 node=node, total=total, seqno=seqno,
626aa658e2a9 Turn make_filename into make_file, which returns a file handle.
Bryan O'Sullivan <bos@serpentine.com>
parents: 727
diff changeset
1448 revwidth=revwidth)
626aa658e2a9 Turn make_filename into make_file, which returns a file handle.
Bryan O'Sullivan <bos@serpentine.com>
parents: 727
diff changeset
1449 if fp != sys.stdout:
755
87e2b094ab86 Show filenames for hg export in verbose mode on a separate lines.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 750
diff changeset
1450 ui.note("%s\n" % fp.name)
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
1451
582
df8a5a0098d4 Remove all remaining print statements
mpm@selenic.com
parents: 580
diff changeset
1452 fp.write("# HG changeset patch\n")
df8a5a0098d4 Remove all remaining print statements
mpm@selenic.com
parents: 580
diff changeset
1453 fp.write("# User %s\n" % change[1])
2300
52b9b6751b2c Use "# Date" instead of "# Timestamp" for dated export/import of patches.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2299
diff changeset
1454 fp.write("# Date %d %d\n" % change[2])
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
1455 fp.write("# Node ID %s\n" % hex(node))
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
1456 fp.write("# Parent %s\n" % hex(prev))
1571
bcdc030c59f8 add a --switch-parent option to export against the other parent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1570
diff changeset
1457 if len(parents) > 1:
bcdc030c59f8 add a --switch-parent option to export against the other parent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1570
diff changeset
1458 fp.write("# Parent %s\n" % hex(parents[1]))
582
df8a5a0098d4 Remove all remaining print statements
mpm@selenic.com
parents: 580
diff changeset
1459 fp.write(change[4].rstrip())
df8a5a0098d4 Remove all remaining print statements
mpm@selenic.com
parents: 580
diff changeset
1460 fp.write("\n\n")
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
1461
1015
22571b8d35d3 Add automatic binary file detection to diff and export
mpm@selenic.com
parents: 1014
diff changeset
1462 dodiff(fp, ui, repo, prev, node, text=opts['text'])
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1463 if fp != sys.stdout:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1464 fp.close()
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
1465
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
1466 def export(ui, repo, *changesets, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1467 """dump the header and diffs for one or more changesets
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1468
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1469 Print the changeset header and diffs for one or more revisions.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1470
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1471 The information shown in the changeset header is: author,
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1472 changeset hash, parent and commit comment.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1473
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1474 Output may be to a file, in which case the name of the file is
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1475 given using a format string. The formatting rules are as follows:
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1476
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1477 %% literal "%" character
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1478 %H changeset hash (40 bytes of hexadecimal)
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1479 %N number of patches being generated
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1480 %R changeset revision number
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1481 %b basename of the exporting repository
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1482 %h short-form changeset hash (12 bytes of hexadecimal)
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1483 %n zero-padded sequence number, starting at 1
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1484 %r zero-padded changeset revision number
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1485
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1486 Without the -a option, export will avoid generating diffs of files
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1487 it detects as binary. With -a, export will generate a diff anyway,
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1488 probably with undesirable results.
1571
bcdc030c59f8 add a --switch-parent option to export against the other parent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1570
diff changeset
1489
bcdc030c59f8 add a --switch-parent option to export against the other parent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1570
diff changeset
1490 With the --switch-parent option, the diff will be against the second
bcdc030c59f8 add a --switch-parent option to export against the other parent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1570
diff changeset
1491 parent. It can be useful to review a merge.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1492 """
610
4c02464cb9f0 check export options for changeset before running
shaleh@speakeasy.net
parents: 609
diff changeset
1493 if not changesets:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1494 raise util.Abort(_("export requires at least one changeset"))
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
1495 seqno = 0
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
1496 revs = list(revrange(ui, repo, changesets))
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
1497 total = len(revs)
1067
fae1204603dc Fixed zero-padded filenames with %r if there is a longer number in the middle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1066
diff changeset
1498 revwidth = max(map(len, revs))
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
1499 msg = len(revs) > 1 and _("Exporting patches:\n") or _("Exporting patch:\n")
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
1500 ui.note(msg)
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
1501 for cset in revs:
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
1502 seqno += 1
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
1503 doexport(ui, repo, cset, seqno, total, revwidth, opts)
246
96cde50a746f Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents: 245
diff changeset
1504
810
790a0ff306f2 Move commands.forget over to using new walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 809
diff changeset
1505 def forget(ui, repo, *pats, **opts):
2135
11ad47f22023 mark forget command as deprecated.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2134
diff changeset
1506 """don't add the specified files on the next commit (DEPRECATED)
11ad47f22023 mark forget command as deprecated.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2134
diff changeset
1507
11ad47f22023 mark forget command as deprecated.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2134
diff changeset
1508 (DEPRECATED)
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1509 Undo an 'hg add' scheduled for the next commit.
2135
11ad47f22023 mark forget command as deprecated.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2134
diff changeset
1510
11ad47f22023 mark forget command as deprecated.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2134
diff changeset
1511 This command is now deprecated and will be removed in a future
11ad47f22023 mark forget command as deprecated.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2134
diff changeset
1512 release. Please use revert instead.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1513 """
2135
11ad47f22023 mark forget command as deprecated.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2134
diff changeset
1514 ui.warn(_("(the forget command is deprecated; use revert instead)\n"))
810
790a0ff306f2 Move commands.forget over to using new walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 809
diff changeset
1515 forget = []
942
7eb8cbcca7c4 Modify commands.walk to yield a 4-tuple.
Bryan O'Sullivan <bos@serpentine.com>
parents: 940
diff changeset
1516 for src, abs, rel, exact in walk(repo, pats, opts):
810
790a0ff306f2 Move commands.forget over to using new walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 809
diff changeset
1517 if repo.dirstate.state(abs) == 'a':
790a0ff306f2 Move commands.forget over to using new walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 809
diff changeset
1518 forget.append(abs)
1255
e825dfea3823 Get all commands that operate on files to honour --verbose and --quiet.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1254
diff changeset
1519 if ui.verbose or not exact:
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
1520 ui.status(_('forgetting %s\n') % ((pats and rel) or abs))
810
790a0ff306f2 Move commands.forget over to using new walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 809
diff changeset
1521 repo.forget(forget)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
1522
1108
7a75d8fbbdaf Remove some options from 'hg grep':
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1106
diff changeset
1523 def grep(ui, repo, pattern, *pats, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1524 """search for a pattern in specified files and revisions
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1525
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1526 Search revisions of files for a regular expression.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1527
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1528 This command behaves differently than Unix grep. It only accepts
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1529 Python/Perl regexps. It searches repository history, not the
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1530 working directory. It always prints the revision number in which
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1531 a match appears.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1532
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1533 By default, grep only prints output for the first revision of a
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1534 file in which it finds a match. To get it to print every revision
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1535 that contains a change in match status ("-" for a match that
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1536 becomes a non-match, or "+" for a non-match that becomes a match),
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1537 use the --all flag.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1538 """
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1539 reflags = 0
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1540 if opts['ignore_case']:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1541 reflags |= re.I
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1542 regexp = re.compile(pattern, reflags)
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1543 sep, eol = ':', '\n'
1108
7a75d8fbbdaf Remove some options from 'hg grep':
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1106
diff changeset
1544 if opts['print0']:
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1545 sep = eol = '\0'
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1546
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1547 fcache = {}
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1548 def getfile(fn):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1549 if fn not in fcache:
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1550 fcache[fn] = repo.file(fn)
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1551 return fcache[fn]
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1552
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1553 def matchlines(body):
1059
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
1554 begin = 0
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
1555 linenum = 0
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
1556 while True:
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
1557 match = regexp.search(body, begin)
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1558 if not match:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1559 break
1059
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
1560 mstart, mend = match.span()
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
1561 linenum += body.count('\n', begin, mstart) + 1
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
1562 lstart = body.rfind('\n', begin, mstart) + 1 or begin
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
1563 lend = body.find('\n', mend)
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
1564 yield linenum, mstart - lstart, mend - lstart, body[lstart:lend]
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
1565 begin = lend + 1
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1566
1559
59b3639df0a9 Convert all classes to new-style classes by deriving them from object.
Eric Hopper <hopper@omnifarious.org>
parents: 1552
diff changeset
1567 class linestate(object):
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1568 def __init__(self, line, linenum, colstart, colend):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1569 self.line = line
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1570 self.linenum = linenum
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1571 self.colstart = colstart
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1572 self.colend = colend
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1573 def __eq__(self, other):
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1574 return self.line == other.line
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1575 def __hash__(self):
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1576 return hash(self.line)
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1577
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1578 matches = {}
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1579 def grepbody(fn, rev, body):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1580 matches[rev].setdefault(fn, {})
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1581 m = matches[rev][fn]
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1582 for lnum, cstart, cend, line in matchlines(body):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1583 s = linestate(line, lnum, cstart, cend)
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1584 m[s] = s
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1585
1749
d457fec76ab0 fix warnings from pychecker (unused variables and shadowing)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1747
diff changeset
1586 # FIXME: prev isn't used, why ?
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1587 prev = {}
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1588 ucache = {}
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1589 def display(fn, rev, states, prevstates):
1061
fed8d078840b Fix set type usage for Python 2.3
mpm@selenic.com
parents: 1060
diff changeset
1590 diff = list(sets.Set(states).symmetric_difference(sets.Set(prevstates)))
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1591 diff.sort(lambda x, y: cmp(x.linenum, y.linenum))
1145
bd917e1a26dd grep: change default to printing first matching rev.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1116
diff changeset
1592 counts = {'-': 0, '+': 0}
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1593 filerevmatches = {}
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1594 for l in diff:
1212
ccb6201e3f28 Change grep -e to grep --all
mpm@selenic.com
parents: 1211
diff changeset
1595 if incrementing or not opts['all']:
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1596 change = ((l in prevstates) and '-') or '+'
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1597 r = rev
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1598 else:
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1599 change = ((l in states) and '-') or '+'
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1600 r = prev[fn]
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1601 cols = [fn, str(rev)]
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1602 if opts['line_number']:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1603 cols.append(str(l.linenum))
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1604 if opts['all']:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1605 cols.append(change)
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1606 if opts['user']:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1607 cols.append(trimuser(ui, getchange(rev)[1], rev,
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1608 ucache))
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1609 if opts['files_with_matches']:
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1610 c = (fn, rev)
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1611 if c in filerevmatches:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1612 continue
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1613 filerevmatches[c] = 1
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1614 else:
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1615 cols.append(l.line)
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1616 ui.write(sep.join(cols), eol)
1145
bd917e1a26dd grep: change default to printing first matching rev.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1116
diff changeset
1617 counts[change] += 1
bd917e1a26dd grep: change default to printing first matching rev.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1116
diff changeset
1618 return counts['+'], counts['-']
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1619
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1620 fstate = {}
1145
bd917e1a26dd grep: change default to printing first matching rev.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1116
diff changeset
1621 skip = {}
1570
6a104941d56a hg log -p should show file deletions
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
1622 changeiter, getchange, matchfn = walkchangerevs(ui, repo, pats, opts)
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1623 count = 0
1337
d4b25df77a9e Fix up some bugs for log and grep with empty repo
mpm@selenic.com
parents: 1331
diff changeset
1624 incrementing = False
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1625 for st, rev, fns in changeiter:
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1626 if st == 'window':
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1627 incrementing = rev
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1628 matches.clear()
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1629 elif st == 'add':
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1630 change = repo.changelog.read(repo.lookup(str(rev)))
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1631 mf = repo.manifest.read(change[0])
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1632 matches[rev] = {}
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1633 for fn in fns:
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1634 if fn in skip:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1635 continue
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1636 fstate.setdefault(fn, {})
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1637 try:
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1638 grepbody(fn, rev, getfile(fn).read(mf[fn]))
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1639 except KeyError:
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1640 pass
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1641 elif st == 'iter':
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1642 states = matches[rev].items()
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1643 states.sort()
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1644 for fn, m in states:
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1645 if fn in skip:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1646 continue
1212
ccb6201e3f28 Change grep -e to grep --all
mpm@selenic.com
parents: 1211
diff changeset
1647 if incrementing or not opts['all'] or fstate[fn]:
1145
bd917e1a26dd grep: change default to printing first matching rev.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1116
diff changeset
1648 pos, neg = display(fn, rev, m, fstate[fn])
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1649 count += pos + neg
1212
ccb6201e3f28 Change grep -e to grep --all
mpm@selenic.com
parents: 1211
diff changeset
1650 if pos and not opts['all']:
1145
bd917e1a26dd grep: change default to printing first matching rev.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1116
diff changeset
1651 skip[fn] = True
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1652 fstate[fn] = m
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1653 prev[fn] = rev
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1654
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1655 if not incrementing:
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1656 fstate = fstate.items()
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1657 fstate.sort()
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1658 for fn, state in fstate:
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1659 if fn in skip:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
1660 continue
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1661 display(fn, rev, {}, state)
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1662 return (count == 0 and 1) or 0
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1663
898
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
1664 def heads(ui, repo, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1665 """show current repository heads
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1666
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1667 Show all repository head changesets.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1668
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1669 Repository "heads" are changesets that don't have children
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1670 changesets. They are where development generally takes place and
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1671 are the usual targets for update and merge operations.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1672 """
1550
ccb9b62de892 add a -r/--rev option to heads to show only heads descendant from rev
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1547
diff changeset
1673 if opts['rev']:
1551
e793cbc8be00 Fixes to "hg heads -r FOO":
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1550
diff changeset
1674 heads = repo.heads(repo.lookup(opts['rev']))
1550
ccb9b62de892 add a -r/--rev option to heads to show only heads descendant from rev
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1547
diff changeset
1675 else:
ccb9b62de892 add a -r/--rev option to heads to show only heads descendant from rev
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1547
diff changeset
1676 heads = repo.heads()
898
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
1677 br = None
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
1678 if opts['branches']:
1551
e793cbc8be00 Fixes to "hg heads -r FOO":
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1550
diff changeset
1679 br = repo.branchlookup(heads)
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
1680 displayer = show_changeset(ui, repo, opts)
1550
ccb9b62de892 add a -r/--rev option to heads to show only heads descendant from rev
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1547
diff changeset
1681 for n in heads:
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
1682 displayer.show(changenode=n, brinfo=br)
221
2bfe525ef6ca Beginning of multi-head support
mpm@selenic.com
parents: 220
diff changeset
1683
339
a76fc9c4b67b added hg identify|id (based on a patch from Andrew Thompson)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 338
diff changeset
1684 def identify(ui, repo):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1685 """print information about the working copy
1470
fb9b84c91222 minor fix on command help docstrings
TK Soh <teekaysoh@yahoo.com>
parents: 1469
diff changeset
1686
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1687 Print a short summary of the current state of the repo.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1688
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1689 This summary identifies the repository state using one or two parent
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1690 hash identifiers, followed by a "+" if there are uncommitted changes
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1691 in the working directory, followed by a list of tags for this revision.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1692 """
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
1693 parents = [p for p in repo.dirstate.parents() if p != nullid]
340
97a897d32dfc Handle the case where the current working copy is not based on a checkout.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 339
diff changeset
1694 if not parents:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
1695 ui.write(_("unknown\n"))
340
97a897d32dfc Handle the case where the current working copy is not based on a checkout.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 339
diff changeset
1696 return
97a897d32dfc Handle the case where the current working copy is not based on a checkout.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 339
diff changeset
1697
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
1698 hexfunc = ui.verbose and hex or short
1619
1ba0d7041ac4 Distinguish removed and deleted files. Tests are not fixed yet.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1618
diff changeset
1699 modified, added, removed, deleted, unknown = repo.changes()
1ba0d7041ac4 Distinguish removed and deleted files. Tests are not fixed yet.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1618
diff changeset
1700 output = ["%s%s" %
1ba0d7041ac4 Distinguish removed and deleted files. Tests are not fixed yet.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1618
diff changeset
1701 ('+'.join([hexfunc(parent) for parent in parents]),
1ba0d7041ac4 Distinguish removed and deleted files. Tests are not fixed yet.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1618
diff changeset
1702 (modified or added or removed or deleted) and "+" or "")]
386
494c8e3f47f3 Improvements for hg identify:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 371
diff changeset
1703
339
a76fc9c4b67b added hg identify|id (based on a patch from Andrew Thompson)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 338
diff changeset
1704 if not ui.quiet:
386
494c8e3f47f3 Improvements for hg identify:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 371
diff changeset
1705 # multiple tags for a single parent separated by '/'
494c8e3f47f3 Improvements for hg identify:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 371
diff changeset
1706 parenttags = ['/'.join(tags)
494c8e3f47f3 Improvements for hg identify:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 371
diff changeset
1707 for tags in map(repo.nodetags, parents) if tags]
494c8e3f47f3 Improvements for hg identify:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 371
diff changeset
1708 # tags for multiple parents separated by ' + '
758
c5db9581bfa6 There was an extra space after 'hg id' when there are no tags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 757
diff changeset
1709 if parenttags:
c5db9581bfa6 There was an extra space after 'hg id' when there are no tags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 757
diff changeset
1710 output.append(' + '.join(parenttags))
339
a76fc9c4b67b added hg identify|id (based on a patch from Andrew Thompson)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 338
diff changeset
1711
386
494c8e3f47f3 Improvements for hg identify:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 371
diff changeset
1712 ui.write("%s\n" % ' '.join(output))
339
a76fc9c4b67b added hg identify|id (based on a patch from Andrew Thompson)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 338
diff changeset
1713
437
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
1714 def import_(ui, repo, patch1, *patches, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1715 """import an ordered set of patches
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1716
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1717 Import a list of patches and commit them individually.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1718
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1719 If there are outstanding changes in the working directory, import
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1720 will abort unless given the -f flag.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1721
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1722 You can import a patch straight from a mail message. Even patches
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1723 as attachments work (body part must be type text/plain or
2515
a6700c222314 import: make help clearer. suggested by asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2513
diff changeset
1724 text/x-patch to be used). From and Subject headers of email
a6700c222314 import: make help clearer. suggested by asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2513
diff changeset
1725 message are used as default committer and commit message. All
a6700c222314 import: make help clearer. suggested by asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2513
diff changeset
1726 text/plain body parts before first diff are added to commit
a6700c222314 import: make help clearer. suggested by asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2513
diff changeset
1727 message.
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1728
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1729 If imported patch was generated by hg export, user and description
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1730 from patch override values from message headers and body. Values
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1731 given on command line with -m and -u override these.
2400
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1732
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1733 To read a patch from standard input, use patch name "-".
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1734 """
437
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
1735 patches = (patch1,) + patches
500
ebc4714a7632 [PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents: 499
diff changeset
1736
966
022bcc738389 hg import: abort with uncommitted changes, override with --force
mpm@selenic.com
parents: 965
diff changeset
1737 if not opts['force']:
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
1738 bail_if_changed(repo)
966
022bcc738389 hg import: abort with uncommitted changes, override with --force
mpm@selenic.com
parents: 965
diff changeset
1739
437
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
1740 d = opts["base"]
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
1741 strip = opts["strip"]
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
1742
1193
04d1ca8ae9ec Fortify the recognition of a diff header.
bos@serpentine.internal.keyresearch.com
parents: 1192
diff changeset
1743 mailre = re.compile(r'(?:From |[\w-]+:)')
1390
ce95599eedac Borrow patch header detection heuristic from quilt
Matt Mackall <mpm@selenic.com>
parents: 1381
diff changeset
1744
ce95599eedac Borrow patch header detection heuristic from quilt
Matt Mackall <mpm@selenic.com>
parents: 1381
diff changeset
1745 # attempt to detect the start of a patch
ce95599eedac Borrow patch header detection heuristic from quilt
Matt Mackall <mpm@selenic.com>
parents: 1381
diff changeset
1746 # (this heuristic is borrowed from quilt)
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1747 diffre = re.compile(r'^(?:Index:[ \t]|diff[ \t]|RCS file: |' +
1390
ce95599eedac Borrow patch header detection heuristic from quilt
Matt Mackall <mpm@selenic.com>
parents: 1381
diff changeset
1748 'retrieving revision [0-9]+(\.[0-9]+)*$|' +
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1749 '(---|\*\*\*)[ \t])', re.MULTILINE)
1190
737f9b90c571 Make import command reject patches that resemble email messages.
bos@serpentine.internal.keyresearch.com
parents: 1189
diff changeset
1750
437
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
1751 for patch in patches:
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
1752 pf = os.path.join(d, patch)
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
1753
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1754 message = None
701
80ed193efff7 On importing the result of 'hg export', parse while reading and drop headers.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 700
diff changeset
1755 user = None
2299
dacf718e1d48 Add timestamp field to export format. Make import and mq use it.
Danek Duvall <danek.duvall@sun.com>
parents: 2293
diff changeset
1756 date = None
701
80ed193efff7 On importing the result of 'hg export', parse while reading and drop headers.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 700
diff changeset
1757 hgpatch = False
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1758
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1759 p = email.Parser.Parser()
2400
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1760 if pf == '-':
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1761 msg = p.parse(sys.stdin)
2400
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1762 ui.status(_("applying patch from stdin\n"))
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1763 else:
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1764 msg = p.parse(file(pf))
2400
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1765 ui.status(_("applying %s\n") % patch)
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1766
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1767 fd, tmpname = tempfile.mkstemp(prefix='hg-patch-')
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1768 tmpfp = os.fdopen(fd, 'w')
2400
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1769 try:
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1770 message = msg['Subject']
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1771 if message:
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1772 message = message.replace('\n\t', ' ')
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1773 ui.debug('Subject: %s\n' % message)
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1774 user = msg['From']
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1775 if user:
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1776 ui.debug('From: %s\n' % user)
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1777 diffs_seen = 0
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1778 ok_types = ('text/plain', 'text/x-patch')
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1779 for part in msg.walk():
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1780 content_type = part.get_content_type()
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1781 ui.debug('Content-Type: %s\n' % content_type)
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1782 if content_type not in ok_types:
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1783 continue
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1784 payload = part.get_payload(decode=True)
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1785 m = diffre.search(payload)
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1786 if m:
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1787 ui.debug(_('found patch at byte %d\n') % m.start(0))
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1788 diffs_seen += 1
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1789 hgpatch = False
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1790 fp = cStringIO.StringIO()
2513
f22e3e8fd457 import: added tests, fixed bugs found by tests and asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2510
diff changeset
1791 if message:
f22e3e8fd457 import: added tests, fixed bugs found by tests and asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2510
diff changeset
1792 fp.write(message)
f22e3e8fd457 import: added tests, fixed bugs found by tests and asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2510
diff changeset
1793 fp.write('\n')
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1794 for line in payload[:m.start(0)].splitlines():
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1795 if line.startswith('# HG changeset patch'):
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1796 ui.debug(_('patch generated by hg export\n'))
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1797 hgpatch = True
2513
f22e3e8fd457 import: added tests, fixed bugs found by tests and asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2510
diff changeset
1798 # drop earlier commit message content
f22e3e8fd457 import: added tests, fixed bugs found by tests and asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2510
diff changeset
1799 fp.seek(0)
f22e3e8fd457 import: added tests, fixed bugs found by tests and asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2510
diff changeset
1800 fp.truncate()
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1801 elif hgpatch:
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1802 if line.startswith('# User '):
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1803 user = line[7:]
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1804 ui.debug('From: %s\n' % user)
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1805 elif line.startswith("# Date "):
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1806 date = line[7:]
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1807 if not line.startswith('# '):
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1808 fp.write(line)
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1809 fp.write('\n')
2513
f22e3e8fd457 import: added tests, fixed bugs found by tests and asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2510
diff changeset
1810 message = fp.getvalue()
2400
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1811 if tmpfp:
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1812 tmpfp.write(payload)
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1813 if not payload.endswith('\n'):
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1814 tmpfp.write('\n')
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1815 elif not diffs_seen and message and content_type == 'text/plain':
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1816 message += '\n' + payload
2400
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1817
2458
9dd93deef3c9 change log message creation when using 'hg import'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2428
diff changeset
1818 if opts['message']:
9dd93deef3c9 change log message creation when using 'hg import'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2428
diff changeset
1819 # pickup the cmdline msg
9dd93deef3c9 change log message creation when using 'hg import'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2428
diff changeset
1820 message = opts['message']
9dd93deef3c9 change log message creation when using 'hg import'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2428
diff changeset
1821 elif message:
9dd93deef3c9 change log message creation when using 'hg import'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2428
diff changeset
1822 # pickup the patch msg
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1823 message = message.strip()
2400
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1824 else:
2458
9dd93deef3c9 change log message creation when using 'hg import'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2428
diff changeset
1825 # launch the editor
9dd93deef3c9 change log message creation when using 'hg import'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2428
diff changeset
1826 message = None
2400
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1827 ui.debug(_('message:\n%s\n') % message)
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1828
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1829 tmpfp.close()
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1830 if not diffs_seen:
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1831 raise util.Abort(_('no diffs found'))
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1832
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1833 files = util.patch(strip, tmpname, ui)
2400
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1834 if len(files) > 0:
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1835 addremove_lock(ui, repo, files, {})
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1836 repo.commit(files, message, user, date)
2e90024e1471 import: allow to import stdin with file name "-"
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2397
diff changeset
1837 finally:
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
1838 os.unlink(tmpname)
437
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
1839
1192
6e165de907c5 Add -p to incoming and outgoing commands to show patch
TK Soh <teekaysoh@yahoo.com>
parents: 1191
diff changeset
1840 def incoming(ui, repo, source="default", **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1841 """show new changesets found in source
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1842
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
1843 Show new changesets found in the specified path/URL or the default
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
1844 pull location. These are the changesets that would be pulled if a pull
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1845 was requested.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1846
1944
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
1847 For remote repository, using --bundle avoids downloading the changesets
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
1848 twice if the incoming is followed by a pull.
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
1849
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
1850 See pull for valid source format details.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1851 """
1893
6569651a4f1e Read paths specified in .hg/hgrc relative to repo root, otherwise to home dir.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1892
diff changeset
1852 source = ui.expandpath(source)
1965
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
1853 if opts['ssh']:
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
1854 ui.setconfig("ui", "ssh", opts['ssh'])
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
1855 if opts['remotecmd']:
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
1856 ui.setconfig("ui", "remotecmd", opts['remotecmd'])
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
1857
927
5a830d7bea52 Add hg incoming command for local repositories
mpm@selenic.com
parents: 924
diff changeset
1858 other = hg.repository(ui, source)
1959
d53a18f592be add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1948
diff changeset
1859 incoming = repo.findincoming(other, force=opts["force"])
1944
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
1860 if not incoming:
1993
fb6ca9801d04 show message if no changes found on incoming
TK Soh <teekaysoh@yahoo.com>
parents: 1981
diff changeset
1861 ui.status(_("no changes found\n"))
931
32e8f64b25b0 Fix incoming for empty set
mpm@selenic.com
parents: 928
diff changeset
1862 return
1944
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
1863
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
1864 cleanup = None
1974
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1865 try:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1866 fname = opts["bundle"]
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1867 if fname or not other.local():
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1868 # create a bundle (uncompressed if other repo is not local)
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1869 cg = other.changegroup(incoming, "incoming")
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1870 fname = cleanup = write_bundle(cg, fname, compress=other.local())
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1871 # keep written bundle?
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1872 if opts["bundle"]:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1873 cleanup = None
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1874 if not other.local():
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1875 # use the created uncompressed bundlerepo
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1876 other = bundlerepo.bundlerepository(ui, repo.root, fname)
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1877
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1878 o = other.changelog.nodesbetween(incoming)[0]
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1879 if opts['newest_first']:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1880 o.reverse()
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1881 displayer = show_changeset(ui, other, opts)
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1882 for n in o:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1883 parents = [p for p in other.changelog.parents(n) if p != nullid]
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1884 if opts['no_merges'] and len(parents) == 2:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1885 continue
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1886 displayer.show(changenode=n)
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1887 if opts['patch']:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1888 prev = (parents and parents[0]) or nullid
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1889 dodiff(ui, ui, other, prev, n)
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1890 ui.write("\n")
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1891 finally:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1892 if hasattr(other, 'close'):
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1893 other.close()
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1894 if cleanup:
0d54675cd566 Delete bundle file of hg incoming in case of errors, preserve existing files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1973
diff changeset
1895 os.unlink(cleanup)
1944
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
1896
907
652507dc9fce Modify init command to take an optional directory to set up.
Bryan O'Sullivan <bos@serpentine.com>
parents: 906
diff changeset
1897 def init(ui, dest="."):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1898 """create a new repository in the given directory
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1899
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1900 Initialize a new repository in the given directory. If the given
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1901 directory does not exist, it is created.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1902
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1903 If no directory is given, the current directory is used.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1904 """
907
652507dc9fce Modify init command to take an optional directory to set up.
Bryan O'Sullivan <bos@serpentine.com>
parents: 906
diff changeset
1905 if not os.path.exists(dest):
652507dc9fce Modify init command to take an optional directory to set up.
Bryan O'Sullivan <bos@serpentine.com>
parents: 906
diff changeset
1906 os.mkdir(dest)
652507dc9fce Modify init command to take an optional directory to set up.
Bryan O'Sullivan <bos@serpentine.com>
parents: 906
diff changeset
1907 hg.repository(ui, dest, create=1)
338
1e091b3293d5 default path support with .hg/hgrc
mpm@selenic.com
parents: 335
diff changeset
1908
627
b6c42714d900 Add locate command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 625
diff changeset
1909 def locate(ui, repo, *pats, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1910 """locate files matching specific patterns
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1911
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1912 Print all files under Mercurial control whose names match the
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1913 given patterns.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1914
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1915 This command searches the current directory and its
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1916 subdirectories. To search an entire repository, move to the root
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1917 of the repository.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1918
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1919 If no patterns are given to match, this command prints all file
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1920 names.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1921
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1922 If you want to feed the output of this command into the "xargs"
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1923 command, use the "-0" option to both this command and "xargs".
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1924 This will avoid the problem of "xargs" treating single filenames
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1925 that contain white space as multiple filenames.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1926 """
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1927 end = opts['print0'] and '\0' or '\n'
1622
5e9168401a68 fix locate broken since 63799b01985c
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1619
diff changeset
1928 rev = opts['rev']
5e9168401a68 fix locate broken since 63799b01985c
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1619
diff changeset
1929 if rev:
5e9168401a68 fix locate broken since 63799b01985c
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1619
diff changeset
1930 node = repo.lookup(rev)
5e9168401a68 fix locate broken since 63799b01985c
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1619
diff changeset
1931 else:
5e9168401a68 fix locate broken since 63799b01985c
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1619
diff changeset
1932 node = None
742
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
1933
1622
5e9168401a68 fix locate broken since 63799b01985c
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1619
diff changeset
1934 for src, abs, rel, exact in walk(repo, pats, opts, node=node,
5e9168401a68 fix locate broken since 63799b01985c
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1619
diff changeset
1935 head='(?:.*/|)'):
5e9168401a68 fix locate broken since 63799b01985c
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1619
diff changeset
1936 if not node and repo.dirstate.state(abs) == '?':
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1937 continue
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
1938 if opts['fullpath']:
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
1939 ui.write(os.path.join(repo.root, abs), end)
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
1940 else:
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
1941 ui.write(((pats and rel) or abs), end)
627
b6c42714d900 Add locate command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 625
diff changeset
1942
1031
503aaf19a040 Rewrite log command. New version is faster and more featureful.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1030
diff changeset
1943 def log(ui, repo, *pats, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1944 """show revision history of entire repository or files
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1945
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1946 Print the revision history of the specified files or the entire project.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1947
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1948 By default this command outputs: changeset id and hash, tags,
1557
f7d9823e65df Updated help text for 'hg log'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1552
diff changeset
1949 non-trivial parents, user, date and time, and a summary for each
f7d9823e65df Updated help text for 'hg log'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1552
diff changeset
1950 commit. When the -v/--verbose switch is used, the list of changed
f7d9823e65df Updated help text for 'hg log'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1552
diff changeset
1951 files and full commit message is shown.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1952 """
1559
59b3639df0a9 Convert all classes to new-style classes by deriving them from object.
Eric Hopper <hopper@omnifarious.org>
parents: 1552
diff changeset
1953 class dui(object):
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1954 # Implement and delegate some ui protocol. Save hunks of
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1955 # output for later display in the desired order.
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1956 def __init__(self, ui):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1957 self.ui = ui
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1958 self.hunk = {}
2033
e3280d350792 Group changes done by the same developer on the same with --style=changelog
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
1959 self.header = {}
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1960 def bump(self, rev):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1961 self.rev = rev
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1962 self.hunk[rev] = []
2033
e3280d350792 Group changes done by the same developer on the same with --style=changelog
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
1963 self.header[rev] = []
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1964 def note(self, *args):
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1965 if self.verbose:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1966 self.write(*args)
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1967 def status(self, *args):
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1968 if not self.quiet:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
1969 self.write(*args)
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1970 def write(self, *args):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1971 self.hunk[self.rev].append(args)
2033
e3280d350792 Group changes done by the same developer on the same with --style=changelog
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
1972 def write_header(self, *args):
e3280d350792 Group changes done by the same developer on the same with --style=changelog
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
1973 self.header[self.rev].append(args)
1381
c29c36745c6e log --debug: fix misplaced manifest field
TK Soh <teekaysoh@yahoo.com>
parents: 1380
diff changeset
1974 def debug(self, *args):
c29c36745c6e log --debug: fix misplaced manifest field
TK Soh <teekaysoh@yahoo.com>
parents: 1380
diff changeset
1975 if self.debugflag:
c29c36745c6e log --debug: fix misplaced manifest field
TK Soh <teekaysoh@yahoo.com>
parents: 1380
diff changeset
1976 self.write(*args)
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1977 def __getattr__(self, key):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1978 return getattr(self.ui, key)
1756
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1979
1570
6a104941d56a hg log -p should show file deletions
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
1980 changeiter, getchange, matchfn = walkchangerevs(ui, repo, pats, opts)
1756
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1981
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1982 if opts['limit']:
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1983 try:
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1984 limit = int(opts['limit'])
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1985 except ValueError:
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1986 raise util.Abort(_('limit must be a positive integer'))
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1987 if limit <= 0: raise util.Abort(_('limit must be positive'))
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1988 else:
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1989 limit = sys.maxint
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1990 count = 0
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
1991
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
1992 displayer = show_changeset(ui, repo, opts)
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
1993 for st, rev, fns in changeiter:
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1994 if st == 'window':
1031
503aaf19a040 Rewrite log command. New version is faster and more featureful.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1030
diff changeset
1995 du = dui(ui)
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
1996 displayer.ui = du
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1997 elif st == 'add':
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
1998 du.bump(rev)
1435
22b44fd9a166 add --no-merges (-M) for log, outgoing, incoming
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1431
diff changeset
1999 changenode = repo.changelog.node(rev)
22b44fd9a166 add --no-merges (-M) for log, outgoing, incoming
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1431
diff changeset
2000 parents = [p for p in repo.changelog.parents(changenode)
22b44fd9a166 add --no-merges (-M) for log, outgoing, incoming
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1431
diff changeset
2001 if p != nullid]
22b44fd9a166 add --no-merges (-M) for log, outgoing, incoming
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1431
diff changeset
2002 if opts['no_merges'] and len(parents) == 2:
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2003 continue
1436
db6d7b4005ba add --only-merges (-m) log
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1435
diff changeset
2004 if opts['only_merges'] and len(parents) != 2:
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2005 continue
1435
22b44fd9a166 add --no-merges (-M) for log, outgoing, incoming
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1431
diff changeset
2006
1373
965d1db5c95d hg log: add -k for keyword searching
Matt Mackall <mpm@selenic.com>
parents: 1366
diff changeset
2007 if opts['keyword']:
1570
6a104941d56a hg log -p should show file deletions
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
2008 changes = getchange(rev)
1373
965d1db5c95d hg log: add -k for keyword searching
Matt Mackall <mpm@selenic.com>
parents: 1366
diff changeset
2009 miss = 0
1404
67e20e27d8df log: make keyword search truly case-insensitive
TK Soh <teekaysoh@yahoo.com>
parents: 1402
diff changeset
2010 for k in [kw.lower() for kw in opts['keyword']]:
1373
965d1db5c95d hg log: add -k for keyword searching
Matt Mackall <mpm@selenic.com>
parents: 1366
diff changeset
2011 if not (k in changes[1].lower() or
965d1db5c95d hg log: add -k for keyword searching
Matt Mackall <mpm@selenic.com>
parents: 1366
diff changeset
2012 k in changes[4].lower() or
965d1db5c95d hg log: add -k for keyword searching
Matt Mackall <mpm@selenic.com>
parents: 1366
diff changeset
2013 k in " ".join(changes[3][:20]).lower()):
965d1db5c95d hg log: add -k for keyword searching
Matt Mackall <mpm@selenic.com>
parents: 1366
diff changeset
2014 miss = 1
965d1db5c95d hg log: add -k for keyword searching
Matt Mackall <mpm@selenic.com>
parents: 1366
diff changeset
2015 break
965d1db5c95d hg log: add -k for keyword searching
Matt Mackall <mpm@selenic.com>
parents: 1366
diff changeset
2016 if miss:
965d1db5c95d hg log: add -k for keyword searching
Matt Mackall <mpm@selenic.com>
parents: 1366
diff changeset
2017 continue
965d1db5c95d hg log: add -k for keyword searching
Matt Mackall <mpm@selenic.com>
parents: 1366
diff changeset
2018
1764
4671078dbfe7 Cleanup: Put initialization of br in front of --branches option handling.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1763
diff changeset
2019 br = None
1763
fa34a74efc40 Make option --branch vs. --branches more consistent.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1762
diff changeset
2020 if opts['branches']:
1405
6fd6527f95eb log: speedup keyword search when used with --branch
TK Soh <teekaysoh@yahoo.com>
parents: 1404
diff changeset
2021 br = repo.branchlookup([repo.changelog.node(rev)])
6fd6527f95eb log: speedup keyword search when used with --branch
TK Soh <teekaysoh@yahoo.com>
parents: 1404
diff changeset
2022
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
2023 displayer.show(rev, brinfo=br)
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
2024 if opts['patch']:
1435
22b44fd9a166 add --no-merges (-M) for log, outgoing, incoming
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1431
diff changeset
2025 prev = (parents and parents[0]) or nullid
1570
6a104941d56a hg log -p should show file deletions
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1568
diff changeset
2026 dodiff(du, du, repo, prev, changenode, match=matchfn)
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
2027 du.write("\n\n")
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
2028 elif st == 'iter':
1756
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
2029 if count == limit: break
2033
e3280d350792 Group changes done by the same developer on the same with --style=changelog
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
2030 if du.header[rev]:
e3280d350792 Group changes done by the same developer on the same with --style=changelog
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
2031 for args in du.header[rev]:
e3280d350792 Group changes done by the same developer on the same with --style=changelog
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
2032 ui.write_header(*args)
1765
b9fac31f34c9 hg log --limit shouldn't count unprinted revisions (found by TK Soh)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1764
diff changeset
2033 if du.hunk[rev]:
b9fac31f34c9 hg log --limit shouldn't count unprinted revisions (found by TK Soh)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1764
diff changeset
2034 count += 1
b9fac31f34c9 hg log --limit shouldn't count unprinted revisions (found by TK Soh)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1764
diff changeset
2035 for args in du.hunk[rev]:
b9fac31f34c9 hg log --limit shouldn't count unprinted revisions (found by TK Soh)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1764
diff changeset
2036 ui.write(*args)
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2037
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2038 def manifest(ui, repo, rev=None):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2039 """output the latest or given revision of the project manifest
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2040
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2041 Print a list of version controlled files for the given revision.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2042
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2043 The manifest is the list of files being version controlled. If no revision
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2044 is given then the tip is used.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2045 """
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2046 if rev:
689
4315db147f00 Make manifest lookup use changeset ids
mpm@selenic.com
parents: 687
diff changeset
2047 try:
4315db147f00 Make manifest lookup use changeset ids
mpm@selenic.com
parents: 687
diff changeset
2048 # assume all revision numbers are for changesets
4315db147f00 Make manifest lookup use changeset ids
mpm@selenic.com
parents: 687
diff changeset
2049 n = repo.lookup(rev)
4315db147f00 Make manifest lookup use changeset ids
mpm@selenic.com
parents: 687
diff changeset
2050 change = repo.changelog.read(n)
4315db147f00 Make manifest lookup use changeset ids
mpm@selenic.com
parents: 687
diff changeset
2051 n = change[0]
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2052 except hg.RepoError:
689
4315db147f00 Make manifest lookup use changeset ids
mpm@selenic.com
parents: 687
diff changeset
2053 n = repo.manifest.lookup(rev)
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2054 else:
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2055 n = repo.manifest.tip()
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2056 m = repo.manifest.read(n)
276
10e325db7347 add tracking of execute permissions
mpm@selenic.com
parents: 275
diff changeset
2057 mf = repo.manifest.readflags(n)
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2058 files = m.keys()
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2059 files.sort()
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2060
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2061 for f in files:
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
2062 ui.write("%40s %3s %s\n" % (hex(m[f]), mf[f] and "755" or "644", f))
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2063
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2064 def merge(ui, repo, node=None, **opts):
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2065 """Merge working directory with another revision
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2066
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2067 Merge the contents of the current working directory and the
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2068 requested revision. Files that changed between either parent are
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2069 marked as changed for the next commit and a commit must be
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2070 performed before any further updates are allowed.
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2071 """
2283
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
2072 return doupdate(ui, repo, node=node, merge=True, **opts)
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2073
2494
73ac95671788 push, outgoing, bundle: fall back to "default" if "default-push" not defined
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2493
diff changeset
2074 def outgoing(ui, repo, dest=None, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2075 """show changesets not found in destination
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2076
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2077 Show changesets not found in the specified destination repository or
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2078 the default push location. These are the changesets that would be pushed
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2079 if a push was requested.
1811
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
2080
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2081 See pull for valid destination format details.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2082 """
2494
73ac95671788 push, outgoing, bundle: fall back to "default" if "default-push" not defined
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2493
diff changeset
2083 dest = ui.expandpath(dest or 'default-push', dest or 'default')
1965
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
2084 if opts['ssh']:
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
2085 ui.setconfig("ui", "ssh", opts['ssh'])
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
2086 if opts['remotecmd']:
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
2087 ui.setconfig("ui", "remotecmd", opts['remotecmd'])
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
2088
920
270756aa29d5 Add hg outgoing command
mpm@selenic.com
parents: 918
diff changeset
2089 other = hg.repository(ui, dest)
1959
d53a18f592be add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1948
diff changeset
2090 o = repo.findoutgoing(other, force=opts['force'])
1994
78ef83c9e9e1 show message if no changes found on outgoing
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1993
diff changeset
2091 if not o:
78ef83c9e9e1 show message if no changes found on outgoing
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1993
diff changeset
2092 ui.status(_("no changes found\n"))
78ef83c9e9e1 show message if no changes found on outgoing
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1993
diff changeset
2093 return
1457
518da3c3b6ce This implements the nodesbetween method, and it removes the newer method
Eric Hopper <hopper@omnifarious.org>
parents: 1381
diff changeset
2094 o = repo.changelog.nodesbetween(o)[0]
1439
65cbe22b03fa allow 'hg out' / 'hg in' to show newest commit first
Michal Kvasnica <kvasnica@gmail.com>
parents: 1437
diff changeset
2095 if opts['newest_first']:
65cbe22b03fa allow 'hg out' / 'hg in' to show newest commit first
Michal Kvasnica <kvasnica@gmail.com>
parents: 1437
diff changeset
2096 o.reverse()
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
2097 displayer = show_changeset(ui, repo, opts)
920
270756aa29d5 Add hg outgoing command
mpm@selenic.com
parents: 918
diff changeset
2098 for n in o:
1435
22b44fd9a166 add --no-merges (-M) for log, outgoing, incoming
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1431
diff changeset
2099 parents = [p for p in repo.changelog.parents(n) if p != nullid]
22b44fd9a166 add --no-merges (-M) for log, outgoing, incoming
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1431
diff changeset
2100 if opts['no_merges'] and len(parents) == 2:
22b44fd9a166 add --no-merges (-M) for log, outgoing, incoming
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1431
diff changeset
2101 continue
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
2102 displayer.show(changenode=n)
1192
6e165de907c5 Add -p to incoming and outgoing commands to show patch
TK Soh <teekaysoh@yahoo.com>
parents: 1191
diff changeset
2103 if opts['patch']:
1435
22b44fd9a166 add --no-merges (-M) for log, outgoing, incoming
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1431
diff changeset
2104 prev = (parents and parents[0]) or nullid
1192
6e165de907c5 Add -p to incoming and outgoing commands to show patch
TK Soh <teekaysoh@yahoo.com>
parents: 1191
diff changeset
2105 dodiff(ui, ui, repo, prev, n)
6e165de907c5 Add -p to incoming and outgoing commands to show patch
TK Soh <teekaysoh@yahoo.com>
parents: 1191
diff changeset
2106 ui.write("\n")
920
270756aa29d5 Add hg outgoing command
mpm@selenic.com
parents: 918
diff changeset
2107
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
2108 def parents(ui, repo, rev=None, branches=None, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2109 """show the parents of the working dir or revision
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2110
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2111 Print the working directory's parent revisions.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2112 """
706
5107a7b6b14a Make "hg parents REV" work (again?)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 705
diff changeset
2113 if rev:
5107a7b6b14a Make "hg parents REV" work (again?)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 705
diff changeset
2114 p = repo.changelog.parents(repo.lookup(rev))
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2115 else:
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2116 p = repo.dirstate.parents()
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2117
1724
5a36609f73a7 add a -b/--branch option to 'hg parents'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1720
diff changeset
2118 br = None
1763
fa34a74efc40 Make option --branch vs. --branches more consistent.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1762
diff changeset
2119 if branches is not None:
1724
5a36609f73a7 add a -b/--branch option to 'hg parents'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1720
diff changeset
2120 br = repo.branchlookup(p)
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
2121 displayer = show_changeset(ui, repo, opts)
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2122 for n in p:
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
2123 if n != nullid:
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
2124 displayer.show(changenode=n, brinfo=br)
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2125
1858
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
2126 def paths(ui, repo, search=None):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2127 """show definition of symbolic path names
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2128
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2129 Show definition of symbolic path name NAME. If no name is given, show
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2130 definition of available names.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2131
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2132 Path names are defined in the [paths] section of /etc/mercurial/hgrc
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2133 and $HOME/.hgrc. If run inside a repository, .hg/hgrc is used, too.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2134 """
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
2135 if search:
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
2136 for name, path in ui.configitems("paths"):
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
2137 if name == search:
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
2138 ui.write("%s\n" % path)
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
2139 return
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2140 ui.warn(_("not found!\n"))
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
2141 return 1
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
2142 else:
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
2143 for name, path in ui.configitems("paths"):
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
2144 ui.write("%s = %s\n" % (name, path))
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
2145
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2146 def postincoming(ui, repo, modheads, optupdate):
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2147 if modheads == 0:
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2148 return
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2149 if optupdate:
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2150 if modheads == 1:
2283
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
2151 return doupdate(ui, repo)
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2152 else:
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2153 ui.status(_("not updating, since new heads added\n"))
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2154 if modheads > 1:
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2155 ui.status(_("(run 'hg heads' to see heads, 'hg merge' to merge)\n"))
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2156 else:
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2157 ui.status(_("(run 'hg update' to get a working copy)\n"))
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2158
404
a1ecef497721 [PATCH] Unintuive use
mpm@selenic.com
parents: 403
diff changeset
2159 def pull(ui, repo, source="default", **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2160 """pull changes from the specified source
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2161
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2162 Pull changes from a remote repository to a local one.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2163
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2164 This finds all changes from the repository at the specified path
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2165 or URL and adds them to the local repository. By default, this
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2166 does not update the copy of the project in the working directory.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2167
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2168 Valid URLs are of the form:
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2169
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2170 local/filesystem/path
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2171 http://[user@]host[:port][/path]
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2172 https://[user@]host[:port][/path]
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2173 ssh://[user@]host[:port][/path]
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2174
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2175 Some notes about using SSH with Mercurial:
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2176 - SSH requires an accessible shell account on the destination machine
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2177 and a copy of hg in the remote path or specified with as remotecmd.
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2178 - /path is relative to the remote user's home directory by default.
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2179 Use two slashes at the start of a path to specify an absolute path.
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2180 - Mercurial doesn't use its own compression via SSH; the right thing
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2181 to do is to configure it in your ~/.ssh/ssh_config, e.g.:
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2182 Host *.mylocalnetwork.example.com
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2183 Compression off
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2184 Host *
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2185 Compression on
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2186 Alternatively specify "ssh -C" as your ssh command in your hgrc or
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2187 with the --ssh command line option.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2188 """
1893
6569651a4f1e Read paths specified in .hg/hgrc relative to repo root, otherwise to home dir.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1892
diff changeset
2189 source = ui.expandpath(source)
500
ebc4714a7632 [PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents: 499
diff changeset
2190
963
84355e3e4493 Add -e and --remotecmd for clone and pull too
mpm@selenic.com
parents: 961
diff changeset
2191 if opts['ssh']:
84355e3e4493 Add -e and --remotecmd for clone and pull too
mpm@selenic.com
parents: 961
diff changeset
2192 ui.setconfig("ui", "ssh", opts['ssh'])
84355e3e4493 Add -e and --remotecmd for clone and pull too
mpm@selenic.com
parents: 961
diff changeset
2193 if opts['remotecmd']:
84355e3e4493 Add -e and --remotecmd for clone and pull too
mpm@selenic.com
parents: 961
diff changeset
2194 ui.setconfig("ui", "remotecmd", opts['remotecmd'])
84355e3e4493 Add -e and --remotecmd for clone and pull too
mpm@selenic.com
parents: 961
diff changeset
2195
246
96cde50a746f Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents: 245
diff changeset
2196 other = hg.repository(ui, source)
2473
30c267cb4c2f change some repo messages in small ways.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2461
diff changeset
2197 ui.status(_('pulling from %s\n') % (source))
1465
be6b5ce60b7f Implementing pull -r and changing clone -r. Both now support
Eric Hopper <hopper@omnifarious.org>
parents: 1461
diff changeset
2198 revs = None
be6b5ce60b7f Implementing pull -r and changing clone -r. Both now support
Eric Hopper <hopper@omnifarious.org>
parents: 1461
diff changeset
2199 if opts['rev'] and not other.local():
1607
d72d27ee72b9 add '_' to several strings
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1602
diff changeset
2200 raise util.Abort(_("pull -r doesn't work for remote repositories yet"))
1465
be6b5ce60b7f Implementing pull -r and changing clone -r. Both now support
Eric Hopper <hopper@omnifarious.org>
parents: 1461
diff changeset
2201 elif opts['rev']:
be6b5ce60b7f Implementing pull -r and changing clone -r. Both now support
Eric Hopper <hopper@omnifarious.org>
parents: 1461
diff changeset
2202 revs = [other.lookup(rev) for rev in opts['rev']]
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2203 modheads = repo.pull(other, heads=revs, force=opts['force'])
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2204 return postincoming(ui, repo, modheads, opts['update'])
246
96cde50a746f Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents: 245
diff changeset
2205
2494
73ac95671788 push, outgoing, bundle: fall back to "default" if "default-push" not defined
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2493
diff changeset
2206 def push(ui, repo, dest=None, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2207 """push changes to the specified destination
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2208
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2209 Push changes from the local repository to the given destination.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2210
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2211 This is the symmetrical operation for pull. It helps to move
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2212 changes from the current repository to a different one. If the
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2213 destination is local this is identical to a pull in that directory
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2214 from the current one.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2215
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2216 By default, push will refuse to run if it detects the result would
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2217 increase the number of remote heads. This generally indicates the
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2218 the client has forgotten to sync and merge before pushing.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2219
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2220 Valid URLs are of the form:
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2221
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2222 local/filesystem/path
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2223 ssh://[user@]host[:port][/path]
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2224
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2225 Look at the help text for the pull command for important details
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
2226 about ssh:// URLs.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2227 """
2494
73ac95671788 push, outgoing, bundle: fall back to "default" if "default-push" not defined
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2493
diff changeset
2228 dest = ui.expandpath(dest or 'default-push', dest or 'default')
319
9ab17e83bce3 stopgap hg push support
mpm@selenic.com
parents: 317
diff changeset
2229
1781
284fc722c342 add an optional argument to push only the specified revisions (push -r)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1712
diff changeset
2230 if opts['ssh']:
284fc722c342 add an optional argument to push only the specified revisions (push -r)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1712
diff changeset
2231 ui.setconfig("ui", "ssh", opts['ssh'])
284fc722c342 add an optional argument to push only the specified revisions (push -r)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1712
diff changeset
2232 if opts['remotecmd']:
284fc722c342 add an optional argument to push only the specified revisions (push -r)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1712
diff changeset
2233 ui.setconfig("ui", "remotecmd", opts['remotecmd'])
961
3e11d5038649 Add --ssh and --remotecmd to push
mpm@selenic.com
parents: 955
diff changeset
2234
640
b48b91d3fb4a Switch push over to the new scheme
Matt Mackall <mpm@selenic.com>
parents: 639
diff changeset
2235 other = hg.repository(ui, dest)
2473
30c267cb4c2f change some repo messages in small ways.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2461
diff changeset
2236 ui.status('pushing to %s\n' % (dest))
1781
284fc722c342 add an optional argument to push only the specified revisions (push -r)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1712
diff changeset
2237 revs = None
284fc722c342 add an optional argument to push only the specified revisions (push -r)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1712
diff changeset
2238 if opts['rev']:
284fc722c342 add an optional argument to push only the specified revisions (push -r)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1712
diff changeset
2239 revs = [repo.lookup(rev) for rev in opts['rev']]
284fc722c342 add an optional argument to push only the specified revisions (push -r)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1712
diff changeset
2240 r = repo.push(other, opts['force'], revs=revs)
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2241 return r == 0
319
9ab17e83bce3 stopgap hg push support
mpm@selenic.com
parents: 317
diff changeset
2242
403
fda7bb480020 [PATCH] rawcommit fix again
mpm@selenic.com
parents: 401
diff changeset
2243 def rawcommit(ui, repo, *flist, **rc):
1812
a81f99dfaa2a fix the synopsis of some commands, mark rawcommit as deprecated in short help
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1811
diff changeset
2244 """raw commit interface (DEPRECATED)
1811
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
2245
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
2246 (DEPRECATED)
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2247 Lowlevel commit, for use in helper scripts.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2248
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2249 This command is not intended to be used by normal users, as it is
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2250 primarily useful for importing from other SCMs.
1657
dbb8bba48510 deprecate the rawcommit command
Matt Mackall <mpm@selenic.com>
parents: 1654
diff changeset
2251
dbb8bba48510 deprecate the rawcommit command
Matt Mackall <mpm@selenic.com>
parents: 1654
diff changeset
2252 This command is now deprecated and will be removed in a future
dbb8bba48510 deprecate the rawcommit command
Matt Mackall <mpm@selenic.com>
parents: 1654
diff changeset
2253 release, please use debugsetparents and commit instead.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2254 """
1657
dbb8bba48510 deprecate the rawcommit command
Matt Mackall <mpm@selenic.com>
parents: 1654
diff changeset
2255
dbb8bba48510 deprecate the rawcommit command
Matt Mackall <mpm@selenic.com>
parents: 1654
diff changeset
2256 ui.warn(_("(the rawcommit command is deprecated)\n"))
dbb8bba48510 deprecate the rawcommit command
Matt Mackall <mpm@selenic.com>
parents: 1654
diff changeset
2257
1496
3cf287a03664 remove the deprecated --text (t) option to rawcommit and tag
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1490
diff changeset
2258 message = rc['message']
762
312b4a10d862 Changed more occurances of 'text' to 'message'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 761
diff changeset
2259 if not message and rc['logfile']:
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2260 try:
762
312b4a10d862 Changed more occurances of 'text' to 'message'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 761
diff changeset
2261 message = open(rc['logfile']).read()
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2262 except IOError:
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2263 pass
762
312b4a10d862 Changed more occurances of 'text' to 'message'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 761
diff changeset
2264 if not message and not rc['logfile']:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2265 raise util.Abort(_("missing commit message"))
246
96cde50a746f Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents: 245
diff changeset
2266
403
fda7bb480020 [PATCH] rawcommit fix again
mpm@selenic.com
parents: 401
diff changeset
2267 files = relpath(repo, list(flist))
246
96cde50a746f Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents: 245
diff changeset
2268 if rc['files']:
96cde50a746f Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents: 245
diff changeset
2269 files += open(rc['files']).read().splitlines()
452
a1e91c24dab5 rawcommit: do lookup of parents at the appropriate layer
mpm@selenic.com
parents: 443
diff changeset
2270
a1e91c24dab5 rawcommit: do lookup of parents at the appropriate layer
mpm@selenic.com
parents: 443
diff changeset
2271 rc['parent'] = map(repo.lookup, rc['parent'])
500
ebc4714a7632 [PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents: 499
diff changeset
2272
1202
71111d796e40 Commit date validation: more stringent checks, more useful error messages.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1194
diff changeset
2273 try:
71111d796e40 Commit date validation: more stringent checks, more useful error messages.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1194
diff changeset
2274 repo.rawcommit(files, message, rc['user'], rc['date'], *rc['parent'])
71111d796e40 Commit date validation: more stringent checks, more useful error messages.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1194
diff changeset
2275 except ValueError, inst:
71111d796e40 Commit date validation: more stringent checks, more useful error messages.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1194
diff changeset
2276 raise util.Abort(str(inst))
500
ebc4714a7632 [PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents: 499
diff changeset
2277
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
2278 def recover(ui, repo):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2279 """roll back an interrupted transaction
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2280
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2281 Recover from an interrupted commit or pull.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2282
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2283 This command tries to fix the repository status after an interrupted
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2284 operation. It should only be necessary when Mercurial suggests it.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2285 """
1516
0b1b029b4de3 Automatically run "verify" whenever we run "recover"
Matt Mackall <mpm@selenic.com>
parents: 1514
diff changeset
2286 if repo.recover():
0b1b029b4de3 Automatically run "verify" whenever we run "recover"
Matt Mackall <mpm@selenic.com>
parents: 1514
diff changeset
2287 return repo.verify()
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
2288 return 1
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
2289
2179
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
2290 def remove(ui, repo, *pats, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2291 """remove the specified files on the next commit
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2292
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2293 Schedule the indicated files for removal from the repository.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2294
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2295 This command schedules the files to be removed at the next commit.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2296 This only removes files from the current branch, not from the
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2297 entire project history. If the files still exist in the working
2179
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
2298 directory, they will be deleted from it. If invoked with --after,
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
2299 files that have been manually deleted are marked as removed.
2309
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2300
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2301 Modified files and added files are not removed by default. To
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2302 remove them, use the -f/--force option.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2303 """
1188
b3ceb2d470fc Fix up remove command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1187
diff changeset
2304 names = []
2179
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
2305 if not opts['after'] and not pats:
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
2306 raise util.Abort(_('no files specified'))
2309
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2307 files, matchfn, anypats = matchpats(repo, pats, opts)
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2308 exact = dict.fromkeys(files)
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2309 mardu = map(dict.fromkeys, repo.changes(files=files, match=matchfn))
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2310 modified, added, removed, deleted, unknown = mardu
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2311 remove, forget = [], []
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2312 for src, abs, rel, exact in walk(repo, pats, opts):
1189
4cbcc54695b2 Make removal check more complete and informative.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1188
diff changeset
2313 reason = None
2309
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2314 if abs not in deleted and opts['after']:
2179
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
2315 reason = _('is still present')
2309
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2316 elif abs in modified and not opts['force']:
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2317 reason = _('is modified (use -f to force removal)')
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2318 elif abs in added:
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2319 if opts['force']:
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2320 forget.append(abs)
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2321 continue
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2322 reason = _('has been marked for add (use -f to force removal)')
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2323 elif abs in unknown:
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2324 reason = _('is not managed')
2309
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2325 elif abs in removed:
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2326 continue
1255
e825dfea3823 Get all commands that operate on files to honour --verbose and --quiet.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1254
diff changeset
2327 if reason:
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2328 if exact:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2329 ui.warn(_('not removing %s: file %s\n') % (rel, reason))
1189
4cbcc54695b2 Make removal check more complete and informative.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1188
diff changeset
2330 else:
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2331 if ui.verbose or not exact:
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2332 ui.status(_('removing %s\n') % rel)
2309
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2333 remove.append(abs)
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2334 repo.forget(forget)
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
2335 repo.remove(remove, unlink=not opts['after'])
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
2336
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
2337 def rename(ui, repo, *pats, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2338 """rename files; equivalent of copy + remove
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2339
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2340 Mark dest as copies of sources; mark sources for deletion. If
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2341 dest is a directory, copies are put in that directory. If dest is
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2342 a file, there can only be one source.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2343
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2344 By default, this command copies the contents of files as they
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2345 stand in the working directory. If invoked with --after, the
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2346 operation is recorded, but no copying is performed.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2347
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2348 This command takes effect in the next commit.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2349
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2350 NOTE: This command should be treated as experimental. While it
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2351 should properly record rename files, this information is not yet
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2352 fully used by merge, nor fully reported by log.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2353 """
2016
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2354 wlock = repo.wlock(0)
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2355 errs, copied = docopy(ui, repo, pats, opts, wlock)
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2356 names = []
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2357 for abs, rel, exact in copied:
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2358 if ui.verbose or not exact:
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2359 ui.status(_('removing %s\n') % rel)
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2360 names.append(abs)
2503
37655f10ced6 Don't require opts['dry_run'] to be set to fix external tools like tailor.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2494
diff changeset
2361 if not opts.get('dry_run'):
2414
86e07466bcfc remove: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2413
diff changeset
2362 repo.remove(names, True, wlock)
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
2363 return errs
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
2364
1472
3c909a747d7f make revert use standard matcher
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1470
diff changeset
2365 def revert(ui, repo, *pats, **opts):
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2366 """revert files or dirs to their states as of some revision
2204
eb5fa83ffcfa fix doc comments for revert command. people found them confusing.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2189
diff changeset
2367
2212
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2368 With no revision specified, revert the named files or directories
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2369 to the contents they had in the parent of the working directory.
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2370 This restores the contents of the affected files to an unmodified
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2371 state. If the working directory has two parents, you must
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2372 explicitly specify the revision to revert to.
1811
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
2373
2036
c9226bcc288d Don't abort when backup files already exist. Don't allow alternative names.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
2374 Modified files are saved with a .orig suffix before reverting.
c9226bcc288d Don't abort when backup files already exist. Don't allow alternative names.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
2375 To disable these backups, use --no-backup.
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2376
2204
eb5fa83ffcfa fix doc comments for revert command. people found them confusing.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2189
diff changeset
2377 Using the -r option, revert the given files or directories to
eb5fa83ffcfa fix doc comments for revert command. people found them confusing.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2189
diff changeset
2378 their contents as of a specific revision. This can be helpful to"roll
1811
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
2379 back" some or all of a change that should not have been committed.
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
2380
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
2381 Revert modifies the working directory. It does not commit any
2204
eb5fa83ffcfa fix doc comments for revert command. people found them confusing.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2189
diff changeset
2382 changes, or change the parent of the working directory. If you
eb5fa83ffcfa fix doc comments for revert command. people found them confusing.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2189
diff changeset
2383 revert to a revision other than the parent of the working
eb5fa83ffcfa fix doc comments for revert command. people found them confusing.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2189
diff changeset
2384 directory, the reverted files will thus appear modified
eb5fa83ffcfa fix doc comments for revert command. people found them confusing.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2189
diff changeset
2385 afterwards.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2386
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2387 If a file has been deleted, it is recreated. If the executable
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2388 mode of a file was changed, it is reset.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2389
1472
3c909a747d7f make revert use standard matcher
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1470
diff changeset
2390 If names are given, all files matching the names are reverted.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2391
1568
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
2392 If no arguments are given, all files in the repository are reverted.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2393 """
2212
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2394 parent, p2 = repo.dirstate.parents()
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2395 if opts['rev']:
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2396 node = repo.lookup(opts['rev'])
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2397 elif p2 != nullid:
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2398 raise util.Abort(_('working dir has two parents; '
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2399 'you must specify the revision to revert to'))
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2400 else:
8164e3f31638 revert: require explicit revision when working dir has two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2204
diff changeset
2401 node = parent
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2402 mf = repo.manifest.read(repo.changelog.read(node)[0])
2407
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2403 if node == parent:
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2404 pmf = mf
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2405 else:
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2406 pmf = None
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2407
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2408 wlock = repo.wlock()
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2409
2042
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2410 # need all matching names in dirstate and manifest of target rev,
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2411 # so have to walk both. do not print errors if files exist in one
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2412 # but not other.
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2413
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2414 names = {}
2042
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2415 target_only = {}
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2416
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2417 # walk dirstate.
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2418
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2419 for src, abs, rel, exact in walk(repo, pats, opts, badmatch=mf.has_key):
2042
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2420 names[abs] = (rel, exact)
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2421 if src == 'b':
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2422 target_only[abs] = True
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2423
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2424 # walk target manifest.
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2425
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2426 for src, abs, rel, exact in walk(repo, pats, opts, node=node,
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2427 badmatch=names.has_key):
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2428 if abs in names: continue
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2429 names[abs] = (rel, exact)
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2430 target_only[abs] = True
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2431
2407
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2432 changes = repo.changes(match=names.has_key, wlock=wlock)
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2433 modified, added, removed, deleted, unknown = map(dict.fromkeys, changes)
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2434
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2435 revert = ([], _('reverting %s\n'))
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2436 add = ([], _('adding %s\n'))
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2437 remove = ([], _('removing %s\n'))
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2438 forget = ([], _('forgetting %s\n'))
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2439 undelete = ([], _('undeleting %s\n'))
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2440 update = {}
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2441
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2442 disptable = (
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2443 # dispatch table:
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2444 # file state
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2445 # action if in target manifest
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2446 # action if not in target manifest
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2447 # make backup if in target manifest
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2448 # make backup if not in target manifest
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2449 (modified, revert, remove, True, True),
2043
968f036f93a4 Minor fix for revert: No need to make a backup when forgetting added files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2042
diff changeset
2450 (added, revert, forget, True, False),
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2451 (removed, undelete, None, False, False),
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2452 (deleted, revert, remove, False, False),
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2453 (unknown, add, None, True, False),
2042
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2454 (target_only, add, None, False, False),
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2455 )
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2456
2042
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2457 entries = names.items()
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2458 entries.sort()
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2459
a514c7509fa9 small changes to revert command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2037
diff changeset
2460 for abs, (rel, exact) in entries:
2407
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2461 mfentry = mf.get(abs)
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2462 def handle(xlist, dobackup):
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2463 xlist[0].append(abs)
2407
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2464 update[abs] = 1
2036
c9226bcc288d Don't abort when backup files already exist. Don't allow alternative names.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
2465 if dobackup and not opts['no_backup'] and os.path.exists(rel):
c9226bcc288d Don't abort when backup files already exist. Don't allow alternative names.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
2466 bakname = "%s.orig" % rel
c9226bcc288d Don't abort when backup files already exist. Don't allow alternative names.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
2467 ui.note(_('saving current version of %s as %s\n') %
c9226bcc288d Don't abort when backup files already exist. Don't allow alternative names.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2029
diff changeset
2468 (rel, bakname))
2415
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
2469 if not opts.get('dry_run'):
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
2470 shutil.copyfile(rel, bakname)
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
2471 shutil.copymode(rel, bakname)
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2472 if ui.verbose or not exact:
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2473 ui.status(xlist[1] % rel)
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2474 for table, hitlist, misslist, backuphit, backupmiss in disptable:
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2475 if abs not in table: continue
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2476 # file has changed in dirstate
2407
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2477 if mfentry:
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2478 handle(hitlist, backuphit)
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2479 elif misslist is not None:
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2480 handle(misslist, backupmiss)
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2481 else:
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2482 if exact: ui.warn(_('file not managed: %s\n' % rel))
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2483 break
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2484 else:
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2485 # file has not changed in dirstate
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2486 if node == parent:
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2487 if exact: ui.warn(_('no changes needed to %s\n' % rel))
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2488 continue
2407
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2489 if pmf is None:
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2490 # only need parent manifest in this unlikely case,
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2491 # so do not read by default
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2492 pmf = repo.manifest.read(repo.changelog.read(parent)[0])
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2493 if abs in pmf:
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2494 if mfentry:
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2495 # if version of file is same in parent and target
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2496 # manifests, do nothing
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2497 if pmf[abs] != mfentry:
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2498 handle(revert, False)
8fe3d60b7f19 revert: better fix for not printing 'reverting' message
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2406
diff changeset
2499 else:
2272
e9a0ed9ed4d9 revert: fix corner case found by faheem mitha.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2268
diff changeset
2500 handle(remove, False)
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
2501
2415
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
2502 if not opts.get('dry_run'):
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
2503 repo.dirstate.forget(forget[0])
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
2504 r = repo.update(node, False, True, update.has_key, False, wlock=wlock,
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
2505 show_stats=False)
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
2506 repo.dirstate.update(add[0], 'a')
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
2507 repo.dirstate.update(undelete[0], 'n')
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
2508 repo.dirstate.update(remove[0], 'r')
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
2509 return r
588
0c3bae18403b [PATCH] hg revert
mpm@selenic.com
parents: 582
diff changeset
2510
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2511 def rollback(ui, repo):
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2512 """roll back the last transaction in this repository
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2513
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2514 Roll back the last transaction in this repository, restoring the
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2515 project to its state prior to the transaction.
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2516
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2517 Transactions are used to encapsulate the effects of all commands
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2518 that create new changesets or propagate existing changesets into a
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2519 repository. For example, the following commands are transactional,
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2520 and their effects can be rolled back:
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2521
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2522 commit
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2523 import
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2524 pull
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2525 push (with this repository as destination)
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2526 unbundle
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2527
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2528 This command should be used with care. There is only one level of
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2529 rollback, and there is no way to undo a rollback.
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2530
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2531 This command is not intended for use on public repositories. Once
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2532 changes are visible for pull by other users, rolling a transaction
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2533 back locally is ineffective (someone else may already have pulled
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2534 the changes). Furthermore, a race is possible with readers of the
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2535 repository; for example an in-progress pull from the repository
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2536 may fail if a rollback is performed.
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2537 """
2362
482d3fb47d80 Renamed localrepo.undo() to rollback() and talk about "rollback information".
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2356
diff changeset
2538 repo.rollback()
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2539
468
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
2540 def root(ui, repo):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2541 """print the root (top) of the current working dir
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2542
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2543 Print the root directory of the current repository.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2544 """
468
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
2545 ui.write(repo.root + "\n")
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
2546
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
2547 def serve(ui, repo, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2548 """export the repository via HTTP
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2549
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2550 Start a local HTTP repository browser and pull server.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2551
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2552 By default, the server logs accesses to stdout and errors to
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2553 stderr. Use the "-A" and "-E" options to log to files.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2554 """
624
876333a295ff Add an sshrepository class and hg serve --stdio
Matt Mackall <mpm@selenic.com>
parents: 618
diff changeset
2555
876333a295ff Add an sshrepository class and hg serve --stdio
Matt Mackall <mpm@selenic.com>
parents: 618
diff changeset
2556 if opts["stdio"]:
2127
8a85dbbadddf Allow 'hg serve --webdir-conf foo' to be run outside a repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2125
diff changeset
2557 if repo is None:
8a85dbbadddf Allow 'hg serve --webdir-conf foo' to be run outside a repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2125
diff changeset
2558 raise hg.RepoError(_('no repo found'))
2396
8d44649df03b refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2392
diff changeset
2559 s = sshserver.sshserver(ui, repo)
8d44649df03b refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2392
diff changeset
2560 s.serve_forever()
2363
fa4c11751367 Give a response to unknown SSH commands
Matt Mackall <mpm@selenic.com>
parents: 2362
diff changeset
2561
2125
3610d9468b1e Use string literal concatenation for optlist and import -p option
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2124
diff changeset
2562 optlist = ("name templates style address port ipv6"
3610d9468b1e Use string literal concatenation for optlist and import -p option
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2124
diff changeset
2563 " accesslog errorlog webdir_conf")
987
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
2564 for o in optlist.split():
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
2565 if opts[o]:
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
2566 ui.setconfig("web", o, opts[o])
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
2567
2127
8a85dbbadddf Allow 'hg serve --webdir-conf foo' to be run outside a repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2125
diff changeset
2568 if repo is None and not ui.config("web", "webdir_conf"):
8a85dbbadddf Allow 'hg serve --webdir-conf foo' to be run outside a repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2125
diff changeset
2569 raise hg.RepoError(_('no repo found'))
8a85dbbadddf Allow 'hg serve --webdir-conf foo' to be run outside a repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2125
diff changeset
2570
1741
9777298fed84 stop read end of pipe from staying open forever in child process.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1740
diff changeset
2571 if opts['daemon'] and not opts['daemon_pipefds']:
1740
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2572 rfd, wfd = os.pipe()
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2573 args = sys.argv[:]
1741
9777298fed84 stop read end of pipe from staying open forever in child process.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1740
diff changeset
2574 args.append('--daemon-pipefds=%d,%d' % (rfd, wfd))
1740
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2575 pid = os.spawnvp(os.P_NOWAIT | getattr(os, 'P_DETACH', 0),
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2576 args[0], args)
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2577 os.close(wfd)
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2578 os.read(rfd, 1)
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2579 os._exit(0)
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2580
1177
862f53c1d0f9 hg serve: print a more useful error message if server can't start.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1147
diff changeset
2581 try:
2392
8238a3f039e6 Adjusting hgweb splitup to be a little cleaner.
Eric Hopper <hopper@omnifarious.org>
parents: 2362
diff changeset
2582 httpd = hgweb.server.create_server(ui, repo)
1177
862f53c1d0f9 hg serve: print a more useful error message if server can't start.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1147
diff changeset
2583 except socket.error, inst:
1607
d72d27ee72b9 add '_' to several strings
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1602
diff changeset
2584 raise util.Abort(_('cannot start server: ') + inst.args[1])
987
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
2585
603
bc5d058e65e9 [PATCH] Get "hg serve" to print the URL being served
mpm@selenic.com
parents: 596
diff changeset
2586 if ui.verbose:
bc5d058e65e9 [PATCH] Get "hg serve" to print the URL being served
mpm@selenic.com
parents: 596
diff changeset
2587 addr, port = httpd.socket.getsockname()
bc5d058e65e9 [PATCH] Get "hg serve" to print the URL being served
mpm@selenic.com
parents: 596
diff changeset
2588 if addr == '0.0.0.0':
bc5d058e65e9 [PATCH] Get "hg serve" to print the URL being served
mpm@selenic.com
parents: 596
diff changeset
2589 addr = socket.gethostname()
bc5d058e65e9 [PATCH] Get "hg serve" to print the URL being served
mpm@selenic.com
parents: 596
diff changeset
2590 else:
bc5d058e65e9 [PATCH] Get "hg serve" to print the URL being served
mpm@selenic.com
parents: 596
diff changeset
2591 try:
bc5d058e65e9 [PATCH] Get "hg serve" to print the URL being served
mpm@selenic.com
parents: 596
diff changeset
2592 addr = socket.gethostbyaddr(addr)[0]
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2593 except socket.error:
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2594 pass
603
bc5d058e65e9 [PATCH] Get "hg serve" to print the URL being served
mpm@selenic.com
parents: 596
diff changeset
2595 if port != 80:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2596 ui.status(_('listening at http://%s:%d/\n') % (addr, port))
603
bc5d058e65e9 [PATCH] Get "hg serve" to print the URL being served
mpm@selenic.com
parents: 596
diff changeset
2597 else:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2598 ui.status(_('listening at http://%s/\n') % addr)
1740
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2599
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2600 if opts['pid_file']:
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2601 fp = open(opts['pid_file'], 'w')
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2602 fp.write(str(os.getpid()))
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2603 fp.close()
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2604
1741
9777298fed84 stop read end of pipe from staying open forever in child process.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1740
diff changeset
2605 if opts['daemon_pipefds']:
9777298fed84 stop read end of pipe from staying open forever in child process.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1740
diff changeset
2606 rfd, wfd = [int(x) for x in opts['daemon_pipefds'].split(',')]
9777298fed84 stop read end of pipe from staying open forever in child process.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1740
diff changeset
2607 os.close(rfd)
1740
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2608 os.write(wfd, 'y')
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2609 os.close(wfd)
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2610 sys.stdout.flush()
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2611 sys.stderr.flush()
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2612 fd = os.open(util.nulldev, os.O_RDWR)
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2613 if fd != 0: os.dup2(fd, 0)
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2614 if fd != 1: os.dup2(fd, 1)
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2615 if fd != 2: os.dup2(fd, 2)
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2616 if fd not in (0, 1, 2): os.close(fd)
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
2617
603
bc5d058e65e9 [PATCH] Get "hg serve" to print the URL being served
mpm@selenic.com
parents: 596
diff changeset
2618 httpd.serve_forever()
500
ebc4714a7632 [PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents: 499
diff changeset
2619
731
91ca3afab8e8 Add name matching to status command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 729
diff changeset
2620 def status(ui, repo, *pats, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2621 """show changed files in the working directory
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
2622
1568
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
2623 Show changed files in the repository. If names are
1d7d0c07e8f3 make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1567
diff changeset
2624 given, only files that match are shown.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2625
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2626 The codes used to show the status of files are:
746
9095e3456ea7 Change C to M in status
mpm@selenic.com
parents: 745
diff changeset
2627 M = modified
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
2628 A = added
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
2629 R = removed
1619
1ba0d7041ac4 Distinguish removed and deleted files. Tests are not fixed yet.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1618
diff changeset
2630 ! = deleted, but still tracked
842
8fb488773063 Rewritten change type selection for hg status.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 841
diff changeset
2631 ? = not tracked
2022
a59da8cc35e4 New option -i/--ignored for 'hg status' to show ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2020
diff changeset
2632 I = ignored (not shown by default)
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2633 """
312
09375250eb31 Optimize diff and status in subdirectories
mpm@selenic.com
parents: 310
diff changeset
2634
2022
a59da8cc35e4 New option -i/--ignored for 'hg status' to show ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2020
diff changeset
2635 show_ignored = opts['ignored'] and True or False
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
2636 files, matchfn, anypats = matchpats(repo, pats, opts)
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
2637 cwd = (pats and repo.getcwd()) or ''
2022
a59da8cc35e4 New option -i/--ignored for 'hg status' to show ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2020
diff changeset
2638 modified, added, removed, deleted, unknown, ignored = [
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1615
diff changeset
2639 [util.pathto(cwd, x) for x in n]
2022
a59da8cc35e4 New option -i/--ignored for 'hg status' to show ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2020
diff changeset
2640 for n in repo.changes(files=files, match=matchfn,
a59da8cc35e4 New option -i/--ignored for 'hg status' to show ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2020
diff changeset
2641 show_ignored=show_ignored)]
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
2642
1966
f8b0e73e320f hg status cleanups: Don't translate long options, remove stray semicolon.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1965
diff changeset
2643 changetypes = [('modified', 'M', modified),
f8b0e73e320f hg status cleanups: Don't translate long options, remove stray semicolon.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1965
diff changeset
2644 ('added', 'A', added),
f8b0e73e320f hg status cleanups: Don't translate long options, remove stray semicolon.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1965
diff changeset
2645 ('removed', 'R', removed),
f8b0e73e320f hg status cleanups: Don't translate long options, remove stray semicolon.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1965
diff changeset
2646 ('deleted', '!', deleted),
2022
a59da8cc35e4 New option -i/--ignored for 'hg status' to show ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2020
diff changeset
2647 ('unknown', '?', unknown),
a59da8cc35e4 New option -i/--ignored for 'hg status' to show ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2020
diff changeset
2648 ('ignored', 'I', ignored)]
842
8fb488773063 Rewritten change type selection for hg status.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 841
diff changeset
2649
1085
6f94688b81b6 status: added option -p and -0 to assist xargs
TK Soh <teekaysoh@yahoo.com>
parents: 1081
diff changeset
2650 end = opts['print0'] and '\0' or '\n'
1106
95a044b73bd5 Whitespace cleanup.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1105
diff changeset
2651
842
8fb488773063 Rewritten change type selection for hg status.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 841
diff changeset
2652 for opt, char, changes in ([ct for ct in changetypes if opts[ct[0]]]
8fb488773063 Rewritten change type selection for hg status.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 841
diff changeset
2653 or changetypes):
1105
a906b018eaef Replaced hg status -p/--strip with -n/--no-status to not confuse with patch.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1085
diff changeset
2654 if opts['no_status']:
1085
6f94688b81b6 status: added option -p and -0 to assist xargs
TK Soh <teekaysoh@yahoo.com>
parents: 1081
diff changeset
2655 format = "%%s%s" % end
6f94688b81b6 status: added option -p and -0 to assist xargs
TK Soh <teekaysoh@yahoo.com>
parents: 1081
diff changeset
2656 else:
1966
f8b0e73e320f hg status cleanups: Don't translate long options, remove stray semicolon.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1965
diff changeset
2657 format = "%s %%s%s" % (char, end)
1106
95a044b73bd5 Whitespace cleanup.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1105
diff changeset
2658
842
8fb488773063 Rewritten change type selection for hg status.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 841
diff changeset
2659 for f in changes:
1085
6f94688b81b6 status: added option -p and -0 to assist xargs
TK Soh <teekaysoh@yahoo.com>
parents: 1081
diff changeset
2660 ui.write(format % f)
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
2661
1596
41366b7d6709 fix 'hg tag <tagname> <revision>
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1589
diff changeset
2662 def tag(ui, repo, name, rev_=None, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2663 """add a tag for the current tip or a given revision
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2664
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2665 Name a particular revision using <name>.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2666
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2667 Tags are used to name particular revisions of the repository and are
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2668 very useful to compare different revision, to go back to significant
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2669 earlier versions or to mark branch points as releases, etc.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2670
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2671 If no revision is given, the tip is used.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2672
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2673 To facilitate version control, distribution, and merging of tags,
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2674 they are stored as a file named ".hgtags" which is managed
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2675 similarly to other project files and can be hand-edited if
1654
b7fc961507db deprecate the use of 'hg tag NAME [REV]'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1648
diff changeset
2676 necessary. The file '.hg/localtags' is used for local tags (not
b7fc961507db deprecate the use of 'hg tag NAME [REV]'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1648
diff changeset
2677 shared among repositories).
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2678 """
401
af4848f83e68 From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
mpm@selenic.com
parents: 396
diff changeset
2679 if name == "tip":
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2680 raise util.Abort(_("the name 'tip' is reserved"))
1654
b7fc961507db deprecate the use of 'hg tag NAME [REV]'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1648
diff changeset
2681 if rev_ is not None:
b7fc961507db deprecate the use of 'hg tag NAME [REV]'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1648
diff changeset
2682 ui.warn(_("use of 'hg tag NAME [REV]' is deprecated, "
1661
b11507d6d16d Added missing quote in warning text.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1657
diff changeset
2683 "please use 'hg tag [-r REV] NAME' instead\n"))
1654
b7fc961507db deprecate the use of 'hg tag NAME [REV]'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1648
diff changeset
2684 if opts['rev']:
b7fc961507db deprecate the use of 'hg tag NAME [REV]'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1648
diff changeset
2685 raise util.Abort(_("use only one form to specify the revision"))
1596
41366b7d6709 fix 'hg tag <tagname> <revision>
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1589
diff changeset
2686 if opts['rev']:
41366b7d6709 fix 'hg tag <tagname> <revision>
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1589
diff changeset
2687 rev_ = opts['rev']
41366b7d6709 fix 'hg tag <tagname> <revision>
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1589
diff changeset
2688 if rev_:
41366b7d6709 fix 'hg tag <tagname> <revision>
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1589
diff changeset
2689 r = hex(repo.lookup(rev_))
609
2acf1f5df2e6 [PATCH] hg tag: local tag support in file .hg/localtags
Matt Mackall <mpm@selenic.com>
parents: 607
diff changeset
2690 else:
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
2691 r = hex(repo.changelog.tip())
609
2acf1f5df2e6 [PATCH] hg tag: local tag support in file .hg/localtags
Matt Mackall <mpm@selenic.com>
parents: 607
diff changeset
2692
1561
9c6d0abdb94e disallow '\n' and '\r' in tag names
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1560
diff changeset
2693 disallowed = (revrangesep, '\r', '\n')
9c6d0abdb94e disallow '\n' and '\r' in tag names
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1560
diff changeset
2694 for c in disallowed:
9c6d0abdb94e disallow '\n' and '\r' in tag names
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1560
diff changeset
2695 if name.find(c) >= 0:
9c6d0abdb94e disallow '\n' and '\r' in tag names
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1560
diff changeset
2696 raise util.Abort(_("%s cannot be used in a tag name") % repr(c))
401
af4848f83e68 From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
mpm@selenic.com
parents: 396
diff changeset
2697
1720
55017891051b add pretag and tag hooks.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1712
diff changeset
2698 repo.hook('pretag', throw=True, node=r, tag=name,
1734
9488d53233b5 tests for new hooks. fix things i found when writing tests.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1732
diff changeset
2699 local=int(not not opts['local']))
1720
55017891051b add pretag and tag hooks.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1712
diff changeset
2700
609
2acf1f5df2e6 [PATCH] hg tag: local tag support in file .hg/localtags
Matt Mackall <mpm@selenic.com>
parents: 607
diff changeset
2701 if opts['local']:
2acf1f5df2e6 [PATCH] hg tag: local tag support in file .hg/localtags
Matt Mackall <mpm@selenic.com>
parents: 607
diff changeset
2702 repo.opener("localtags", "a").write("%s %s\n" % (r, name))
1720
55017891051b add pretag and tag hooks.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1712
diff changeset
2703 repo.hook('tag', node=r, tag=name, local=1)
609
2acf1f5df2e6 [PATCH] hg tag: local tag support in file .hg/localtags
Matt Mackall <mpm@selenic.com>
parents: 607
diff changeset
2704 return
2acf1f5df2e6 [PATCH] hg tag: local tag support in file .hg/localtags
Matt Mackall <mpm@selenic.com>
parents: 607
diff changeset
2705
1618
ff339dd21976 Renamed c, a, d, u to modified, added, removed, unknown for users of changes()
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1615
diff changeset
2706 for x in repo.changes():
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
2707 if ".hgtags" in x:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2708 raise util.Abort(_("working copy of .hgtags is changed "
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2709 "(please commit .hgtags manually)"))
401
af4848f83e68 From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
mpm@selenic.com
parents: 396
diff changeset
2710
617
285965ddca41 open .hgtags as binary
thananck@yahoo.com
parents: 615
diff changeset
2711 repo.wfile(".hgtags", "ab").write("%s %s\n" % (r, name))
710
ca9353f43345 Use dirstate to check if .hgtags needs to be added.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 709
diff changeset
2712 if repo.dirstate.state(".hgtags") == '?':
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2713 repo.add([".hgtags"])
401
af4848f83e68 From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
mpm@selenic.com
parents: 396
diff changeset
2714
1496
3cf287a03664 remove the deprecated --text (t) option to rawcommit and tag
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1490
diff changeset
2715 message = (opts['message'] or
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2716 _("Added tag %s for changeset %s") % (name, r))
1202
71111d796e40 Commit date validation: more stringent checks, more useful error messages.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1194
diff changeset
2717 try:
71111d796e40 Commit date validation: more stringent checks, more useful error messages.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1194
diff changeset
2718 repo.commit([".hgtags"], message, opts['user'], opts['date'])
1720
55017891051b add pretag and tag hooks.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1712
diff changeset
2719 repo.hook('tag', node=r, tag=name, local=0)
1202
71111d796e40 Commit date validation: more stringent checks, more useful error messages.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1194
diff changeset
2720 except ValueError, inst:
71111d796e40 Commit date validation: more stringent checks, more useful error messages.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1194
diff changeset
2721 raise util.Abort(str(inst))
401
af4848f83e68 From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
mpm@selenic.com
parents: 396
diff changeset
2722
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
2723 def tags(ui, repo):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2724 """list repository tags
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2725
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2726 List the repository tags.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2727
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2728 This lists both regular and local tags.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2729 """
477
520540fd6b64 Handle errors in .hgtags or hgrc [tags] section more gracefully.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 470
diff changeset
2730
343
d7df759d0e97 rework all code using tags
mpm@selenic.com
parents: 340
diff changeset
2731 l = repo.tagslist()
d7df759d0e97 rework all code using tags
mpm@selenic.com
parents: 340
diff changeset
2732 l.reverse()
477
520540fd6b64 Handle errors in .hgtags or hgrc [tags] section more gracefully.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 470
diff changeset
2733 for t, n in l:
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
2734 try:
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
2735 r = "%5d:%s" % (repo.changelog.rev(n), hex(n))
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
2736 except KeyError:
477
520540fd6b64 Handle errors in .hgtags or hgrc [tags] section more gracefully.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 470
diff changeset
2737 r = " ?:?"
2035
107dc72880f8 Make 'hg tags -q' only list tag names without revision numbers and hashes,
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2034
diff changeset
2738 if ui.quiet:
107dc72880f8 Make 'hg tags -q' only list tag names without revision numbers and hashes,
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2034
diff changeset
2739 ui.write("%s\n" % t)
107dc72880f8 Make 'hg tags -q' only list tag names without revision numbers and hashes,
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2034
diff changeset
2740 else:
107dc72880f8 Make 'hg tags -q' only list tag names without revision numbers and hashes,
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2034
diff changeset
2741 ui.write("%-30s %s\n" % (t, r))
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
2742
1731
251729df9cc6 add -p option to tip. for issue 64.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1728
diff changeset
2743 def tip(ui, repo, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2744 """show the tip revision
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2745
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2746 Show the tip revision.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2747 """
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
2748 n = repo.changelog.tip()
1762
8eaa8e06a364 Add option -b/--branch to hg tip (as done for hg parents).
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1761
diff changeset
2749 br = None
1763
fa34a74efc40 Make option --branch vs. --branches more consistent.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1762
diff changeset
2750 if opts['branches']:
1762
8eaa8e06a364 Add option -b/--branch to hg tip (as done for hg parents).
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1761
diff changeset
2751 br = repo.branchlookup([n])
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
2752 show_changeset(ui, repo, opts).show(changenode=n, brinfo=br)
1731
251729df9cc6 add -p option to tip. for issue 64.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1728
diff changeset
2753 if opts['patch']:
251729df9cc6 add -p option to tip. for issue 64.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1728
diff changeset
2754 dodiff(ui, ui, repo, repo.changelog.parents(n)[0], n)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
2755
1600
728fd9584993 add --update support to 'hg unbundle'
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1596
diff changeset
2756 def unbundle(ui, repo, fname, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2757 """apply a changegroup file
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2758
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2759 Apply a compressed changegroup file generated by the bundle
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2760 command.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2761 """
1218
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
2762 f = urllib.urlopen(fname)
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
2763
1980
dfb796786337 use HG10UN header for uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1979
diff changeset
2764 header = f.read(6)
dfb796786337 use HG10UN header for uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1979
diff changeset
2765 if not header.startswith("HG"):
dfb796786337 use HG10UN header for uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1979
diff changeset
2766 raise util.Abort(_("%s: not a Mercurial bundle file") % fname)
dfb796786337 use HG10UN header for uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1979
diff changeset
2767 elif not header.startswith("HG10"):
dfb796786337 use HG10UN header for uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1979
diff changeset
2768 raise util.Abort(_("%s: unknown bundle version") % fname)
dfb796786337 use HG10UN header for uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1979
diff changeset
2769 elif header == "HG10BZ":
1940
7ae177a70f54 add a new bundle type: uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1920
diff changeset
2770 def generator(f):
7ae177a70f54 add a new bundle type: uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1920
diff changeset
2771 zd = bz2.BZ2Decompressor()
1980
dfb796786337 use HG10UN header for uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1979
diff changeset
2772 zd.decompress("BZ")
1940
7ae177a70f54 add a new bundle type: uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1920
diff changeset
2773 for chunk in f:
7ae177a70f54 add a new bundle type: uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1920
diff changeset
2774 yield zd.decompress(chunk)
1980
dfb796786337 use HG10UN header for uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1979
diff changeset
2775 elif header == "HG10UN":
1940
7ae177a70f54 add a new bundle type: uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1920
diff changeset
2776 def generator(f):
7ae177a70f54 add a new bundle type: uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1920
diff changeset
2777 for chunk in f:
7ae177a70f54 add a new bundle type: uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1920
diff changeset
2778 yield chunk
7ae177a70f54 add a new bundle type: uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1920
diff changeset
2779 else:
1980
dfb796786337 use HG10UN header for uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1979
diff changeset
2780 raise util.Abort(_("%s: unknown bundle compression type")
dfb796786337 use HG10UN header for uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1979
diff changeset
2781 % fname)
1940
7ae177a70f54 add a new bundle type: uncompressed bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1920
diff changeset
2782 gen = generator(util.filechunkiter(f, 4096))
2230
332950340788 localrepository.addchangegroup: add more source infos to hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2227
diff changeset
2783 modheads = repo.addchangegroup(util.chunkbuffer(gen), 'unbundle')
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
2784 return postincoming(ui, repo, modheads, opts['update'])
1218
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
2785
212
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
2786 def undo(ui, repo):
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2787 """undo the last commit or pull (DEPRECATED)
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2788
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2789 (DEPRECATED)
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2790 This command is now deprecated and will be removed in a future
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2791 release. Please use the rollback command instead. For usage
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
2792 instructions, see the rollback command.
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
2793 """
2238
25af3f17ce95 undo: add "deprecated" message to output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2230
diff changeset
2794 ui.warn(_('(the undo command is deprecated; use rollback instead)\n'))
2362
482d3fb47d80 Renamed localrepo.undo() to rollback() and talk about "rollback information".
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2356
diff changeset
2795 repo.rollback()
210
d2badbd7d1ad hg undo: fixup working dir state
mpm@selenic.com
parents: 209
diff changeset
2796
1581
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1571
diff changeset
2797 def update(ui, repo, node=None, merge=False, clean=False, force=None,
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
2798 branch=None, **opts):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2799 """update or merge working directory
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2800
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2801 Update the working directory to the specified revision.
254
c03f58e5fd2d unify checkout and resolve into update
mpm@selenic.com
parents: 252
diff changeset
2802
c03f58e5fd2d unify checkout and resolve into update
mpm@selenic.com
parents: 252
diff changeset
2803 If there are no outstanding changes in the working directory and
c03f58e5fd2d unify checkout and resolve into update
mpm@selenic.com
parents: 252
diff changeset
2804 there is a linear relationship between the current version and the
c03f58e5fd2d unify checkout and resolve into update
mpm@selenic.com
parents: 252
diff changeset
2805 requested version, the result is the requested version.
c03f58e5fd2d unify checkout and resolve into update
mpm@selenic.com
parents: 252
diff changeset
2806
2283
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
2807 To merge the working directory with another revision, use the
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
2808 merge command.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2809
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2810 By default, update will refuse to run if doing so would require
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2811 merging or discarding local changes.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2812 """
2283
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
2813 if merge:
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
2814 ui.warn(_('(the -m/--merge option is deprecated; '
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
2815 'use the merge command instead)\n'))
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
2816 return doupdate(ui, repo, node, merge, clean, force, branch, **opts)
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
2817
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
2818 def doupdate(ui, repo, node=None, merge=False, clean=False, force=None,
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
2819 branch=None, **opts):
898
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2820 if branch:
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2821 br = repo.branchlookup(branch=branch)
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2822 found = []
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2823 for x in br:
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2824 if branch in br[x]:
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2825 found.append(x)
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2826 if len(found) > 1:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2827 ui.warn(_("Found multiple heads for %s\n") % branch)
898
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2828 for x in found:
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
2829 show_changeset(ui, repo, opts).show(changenode=x, brinfo=br)
898
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2830 return 1
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2831 if len(found) == 1:
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2832 node = found[0]
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2833 ui.warn(_("Using head %s for branch %s\n") % (short(node), branch))
898
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2834 else:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2835 ui.warn(_("branch %s not found\n") % (branch))
898
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2836 return 1
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2837 else:
3616c0d7ab88 Add searching for named branches
mason@suse.com
parents: 896
diff changeset
2838 node = node and repo.lookup(node) or repo.changelog.tip()
1581
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1571
diff changeset
2839 return repo.update(node, allow=merge, force=clean, forcemerge=force)
254
c03f58e5fd2d unify checkout and resolve into update
mpm@selenic.com
parents: 252
diff changeset
2840
247
863b508c5b36 migrate verify
mpm@selenic.com
parents: 246
diff changeset
2841 def verify(ui, repo):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2842 """verify the integrity of the repository
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2843
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2844 Verify the integrity of the current repository.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2845
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2846 This will perform an extensive check of the repository's
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2847 integrity, validating the hashes and checksums of each entry in
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2848 the changelog, manifest, and tracked files, as well as the
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2849 integrity of their crosslinks and indices.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2850 """
247
863b508c5b36 migrate verify
mpm@selenic.com
parents: 246
diff changeset
2851 return repo.verify()
863b508c5b36 migrate verify
mpm@selenic.com
parents: 246
diff changeset
2852
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2853 # Command options and aliases are listed here, alphabetically
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
2854
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
2855 table = {
841
03cc2ba291d1 Realigned command table again.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 840
diff changeset
2856 "^add":
03cc2ba291d1 Realigned command table again.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 840
diff changeset
2857 (add,
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2858 [('I', 'include', [], _('include names matching the given patterns')),
2411
734df6333ca4 add: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2410
diff changeset
2859 ('X', 'exclude', [], _('exclude names matching the given patterns')),
2416
04736f38d74f make description of -n option better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2415
diff changeset
2860 ('n', 'dry-run', None, _('do not perform actions, just print output'))],
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2861 _('hg add [OPTION]... [FILE]...')),
2184
2477a7183a6f Add debugaddremove alias to addremove, so it doesn't show up in 'hg help'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2181
diff changeset
2862 "debugaddremove|addremove":
841
03cc2ba291d1 Realigned command table again.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 840
diff changeset
2863 (addremove,
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2864 [('I', 'include', [], _('include names matching the given patterns')),
2412
e5cb39577b9f addremove: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2411
diff changeset
2865 ('X', 'exclude', [], _('exclude names matching the given patterns')),
2416
04736f38d74f make description of -n option better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2415
diff changeset
2866 ('n', 'dry-run', None, _('do not perform actions, just print output'))],
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2867 _('hg addremove [OPTION]... [FILE]...')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2868 "^annotate":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2869 (annotate,
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2870 [('r', 'rev', '', _('annotate the specified revision')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2871 ('a', 'text', None, _('treat all files as text')),
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2872 ('u', 'user', None, _('list the author')),
1522
d07d729ce306 Added --date option to annotate.
lupus@debian.org
parents: 1519
diff changeset
2873 ('d', 'date', None, _('list the date')),
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2874 ('n', 'number', None, _('list the revision number (default)')),
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2875 ('c', 'changeset', None, _('list the changeset')),
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2876 ('I', 'include', [], _('include names matching the given patterns')),
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2877 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2878 _('hg annotate [-r REV] [-a] [-u] [-d] [-n] [-c] FILE...')),
2160
858df1f354c1 Cleanup archive command: Don't overwrite gettext, quoting in cmd table entry.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2159
diff changeset
2879 "archive":
2112
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
2880 (archive,
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
2881 [('', 'no-decode', None, _('do not pass files through decoders')),
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
2882 ('p', 'prefix', '', _('directory prefix for files in archive')),
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
2883 ('r', 'rev', '', _('revision to distribute')),
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
2884 ('t', 'type', '', _('type of distribution to create')),
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
2885 ('I', 'include', [], _('include names matching the given patterns')),
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
2886 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
2887 _('hg archive [OPTION]... DEST')),
2159
5c34b98ad6b1 Small cleanups to backout command:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2158
diff changeset
2888 "backout":
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
2889 (backout,
2159
5c34b98ad6b1 Small cleanups to backout command:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2158
diff changeset
2890 [('', 'merge', None,
5c34b98ad6b1 Small cleanups to backout command:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2158
diff changeset
2891 _('merge with old dirstate parent after backout')),
5c34b98ad6b1 Small cleanups to backout command:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2158
diff changeset
2892 ('m', 'message', '', _('use <text> as commit message')),
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
2893 ('l', 'logfile', '', _('read commit message from <file>')),
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
2894 ('d', 'date', '', _('record datecode as commit date')),
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
2895 ('u', 'user', '', _('record user as committer')),
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
2896 ('I', 'include', [], _('include names matching the given patterns')),
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
2897 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
2159
5c34b98ad6b1 Small cleanups to backout command:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2158
diff changeset
2898 _('hg backout [OPTION]... REV')),
1218
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
2899 "bundle":
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
2900 (bundle,
1959
d53a18f592be add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1948
diff changeset
2901 [('f', 'force', None,
d53a18f592be add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1948
diff changeset
2902 _('run even when remote repository is unrelated'))],
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2903 _('hg bundle FILE DEST')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2904 "cat":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2905 (cat,
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2906 [('o', 'output', '', _('print output to file with formatted name')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2907 ('r', 'rev', '', _('print the given revision')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2908 ('I', 'include', [], _('include names matching the given patterns')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2909 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2910 _('hg cat [OPTION]... FILE...')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2911 "^clone":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2912 (clone,
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2913 [('U', 'noupdate', None, _('do not update the new working directory')),
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
2914 ('r', 'rev', [],
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
2915 _('a changeset you would like to have after cloning')),
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2916 ('', 'pull', None, _('use pull protocol to copy metadata')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2917 ('e', 'ssh', '', _('specify ssh command to use')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2918 ('', 'remotecmd', '',
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
2919 _('specify hg command to run on the remote side'))],
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2920 _('hg clone [OPTION]... SOURCE [DEST]')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2921 "^commit|ci":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2922 (commit,
2184
2477a7183a6f Add debugaddremove alias to addremove, so it doesn't show up in 'hg help'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2181
diff changeset
2923 [('A', 'addremove', None,
2477a7183a6f Add debugaddremove alias to addremove, so it doesn't show up in 'hg help'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2181
diff changeset
2924 _('mark new/missing files as added/removed before committing')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2925 ('m', 'message', '', _('use <text> as commit message')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2926 ('l', 'logfile', '', _('read the commit message from <file>')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2927 ('d', 'date', '', _('record datecode as commit date')),
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2928 ('u', 'user', '', _('record user as commiter')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2929 ('I', 'include', [], _('include names matching the given patterns')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2930 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2931 _('hg commit [OPTION]... [FILE]...')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2932 "copy|cp":
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2933 (copy,
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2934 [('A', 'after', None, _('record a copy that has already occurred')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2935 ('f', 'force', None,
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2936 _('forcibly copy over an existing managed file')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2937 ('I', 'include', [], _('include names matching the given patterns')),
2413
c1ec81319870 copy: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2412
diff changeset
2938 ('X', 'exclude', [], _('exclude names matching the given patterns')),
2416
04736f38d74f make description of -n option better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2415
diff changeset
2939 ('n', 'dry-run', None, _('do not perform actions, just print output'))],
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2940 _('hg copy [OPTION]... [SOURCE]... DEST')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2941 "debugancestor": (debugancestor, [], _('debugancestor INDEX REV1 REV2')),
2034
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
2942 "debugcomplete":
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
2943 (debugcomplete,
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
2944 [('o', 'options', None, _('show the command options'))],
5e7aff1b6ae1 add --options to debugcomplete and change bash_completion to use it
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2033
diff changeset
2945 _('debugcomplete [-o] CMD')),
1755
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
2946 "debugrebuildstate":
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
2947 (debugrebuildstate,
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2948 [('r', 'rev', '', _('revision to rebuild to'))],
1755
a8f7791e3680 add 'debugrebuildstate' to rebuild the dirstate from a given revision
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1754
diff changeset
2949 _('debugrebuildstate [-r REV] [REV]')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2950 "debugcheckstate": (debugcheckstate, [], _('debugcheckstate')),
2410
1e80d47b8581 debugconfig: allow to print by section and exact item name
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2407
diff changeset
2951 "debugconfig": (debugconfig, [], _('debugconfig [NAME]...')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2952 "debugsetparents": (debugsetparents, [], _('debugsetparents REV1 [REV2]')),
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2953 "debugstate": (debugstate, [], _('debugstate')),
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2954 "debugdata": (debugdata, [], _('debugdata FILE REV')),
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2955 "debugindex": (debugindex, [], _('debugindex FILE')),
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2956 "debugindexdot": (debugindexdot, [], _('debugindexdot FILE')),
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2957 "debugrename": (debugrename, [], _('debugrename FILE [REV]')),
841
03cc2ba291d1 Realigned command table again.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 840
diff changeset
2958 "debugwalk":
03cc2ba291d1 Realigned command table again.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 840
diff changeset
2959 (debugwalk,
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2960 [('I', 'include', [], _('include names matching the given patterns')),
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2961 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2962 _('debugwalk [OPTION]... [FILE]...')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2963 "^diff":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2964 (diff,
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2965 [('r', 'rev', [], _('revision')),
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2966 ('a', 'text', None, _('treat all files as text')),
1728
9b92b71d5dd7 add -w and -p options to diff. this is for issue 126.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1720
diff changeset
2967 ('p', 'show-function', None,
9b92b71d5dd7 add -w and -p options to diff. this is for issue 126.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1720
diff changeset
2968 _('show which function each change is in')),
9b92b71d5dd7 add -w and -p options to diff. this is for issue 126.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1720
diff changeset
2969 ('w', 'ignore-all-space', None,
9b92b71d5dd7 add -w and -p options to diff. this is for issue 126.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1720
diff changeset
2970 _('ignore white space when comparing lines')),
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2971 ('I', 'include', [], _('include names matching the given patterns')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2972 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2973 _('hg diff [-a] [-I] [-X] [-r REV1 [-r REV2]] [FILE]...')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2974 "^export":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
2975 (export,
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2976 [('o', 'output', '', _('print output to file with formatted name')),
1571
bcdc030c59f8 add a --switch-parent option to export against the other parent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1570
diff changeset
2977 ('a', 'text', None, _('treat all files as text')),
bcdc030c59f8 add a --switch-parent option to export against the other parent
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1570
diff changeset
2978 ('', 'switch-parent', None, _('diff against the second parent'))],
1812
a81f99dfaa2a fix the synopsis of some commands, mark rawcommit as deprecated in short help
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1811
diff changeset
2979 _('hg export [-a] [-o OUTFILESPEC] REV...')),
2140
6447a32aefce Make the deprecated forget an alias of debugforget.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2135
diff changeset
2980 "debugforget|forget":
841
03cc2ba291d1 Realigned command table again.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 840
diff changeset
2981 (forget,
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2982 [('I', 'include', [], _('include names matching the given patterns')),
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2983 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2984 _('hg forget [OPTION]... FILE...')),
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
2985 "grep":
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
2986 (grep,
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2987 [('0', 'print0', None, _('end fields with NUL')),
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2988 ('', 'all', None, _('print all revisions that match')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
2989 ('i', 'ignore-case', None, _('ignore case when matching')),
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
2990 ('l', 'files-with-matches', None,
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
2991 _('print only filenames and revs that match')),
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2992 ('n', 'line-number', None, _('print matching line numbers')),
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
2993 ('r', 'rev', [], _('search in given revision range')),
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2994 ('u', 'user', None, _('print user who committed change')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2995 ('I', 'include', [], _('include names matching the given patterns')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
2996 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
2997 _('hg grep [OPTION]... PATTERN [FILE]...')),
905
65763ff9fa53 Update online help of hg heads for new --branches option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 904
diff changeset
2998 "heads":
65763ff9fa53 Update online help of hg heads for new --branches option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 904
diff changeset
2999 (heads,
1763
fa34a74efc40 Make option --branch vs. --branches more consistent.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1762
diff changeset
3000 [('b', 'branches', None, _('show branches')),
1913
74cf2b2f43d4 fix some things people wanted to be cleaner.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1910
diff changeset
3001 ('', 'style', '', _('display using template map file')),
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
3002 ('r', 'rev', '', _('show only heads which are descendants of rev')),
1913
74cf2b2f43d4 fix some things people wanted to be cleaner.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1910
diff changeset
3003 ('', 'template', '', _('display with template'))],
1550
ccb9b62de892 add a -r/--rev option to heads to show only heads descendant from rev
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1547
diff changeset
3004 _('hg heads [-b] [-r <rev>]')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3005 "help": (help_, [], _('hg help [COMMAND]')),
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3006 "identify|id": (identify, [], _('hg identify')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3007 "import|patch":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3008 (import_,
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3009 [('p', 'strip', 1,
2125
3610d9468b1e Use string literal concatenation for optlist and import -p option
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2124
diff changeset
3010 _('directory strip option for patch. This has the same\n'
3610d9468b1e Use string literal concatenation for optlist and import -p option
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2124
diff changeset
3011 'meaning as the corresponding patch option')),
2458
9dd93deef3c9 change log message creation when using 'hg import'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2428
diff changeset
3012 ('m', 'message', '', _('use <text> as commit message')),
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3013 ('b', 'base', '', _('base path')),
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3014 ('f', 'force', None,
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3015 _('skip check for outstanding uncommitted changes'))],
2458
9dd93deef3c9 change log message creation when using 'hg import'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2428
diff changeset
3016 _('hg import [-p NUM] [-b BASE] [-m MESSAGE] [-f] PATCH...')),
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
3017 "incoming|in": (incoming,
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3018 [('M', 'no-merges', None, _('do not show merges')),
1959
d53a18f592be add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1948
diff changeset
3019 ('f', 'force', None,
d53a18f592be add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1948
diff changeset
3020 _('run even when remote repository is unrelated')),
1913
74cf2b2f43d4 fix some things people wanted to be cleaner.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1910
diff changeset
3021 ('', 'style', '', _('display using template map file')),
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
3022 ('n', 'newest-first', None, _('show newest record first')),
1944
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
3023 ('', 'bundle', '', _('file to store the bundles into')),
1439
65cbe22b03fa allow 'hg out' / 'hg in' to show newest commit first
Michal Kvasnica <kvasnica@gmail.com>
parents: 1437
diff changeset
3024 ('p', 'patch', None, _('show patch')),
1965
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
3025 ('', 'template', '', _('display with template')),
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
3026 ('e', 'ssh', '', _('specify ssh command to use')),
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
3027 ('', 'remotecmd', '',
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
3028 _('specify hg command to run on the remote side'))],
1944
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
3029 _('hg incoming [-p] [-n] [-M] [--bundle FILENAME] [SOURCE]')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3030 "^init": (init, [], _('hg init [DEST]')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3031 "locate":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3032 (locate,
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3033 [('r', 'rev', '', _('search the repository as it stood at rev')),
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3034 ('0', 'print0', None,
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3035 _('end filenames with NUL, for use with xargs')),
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3036 ('f', 'fullpath', None,
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3037 _('print complete paths from the filesystem root')),
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3038 ('I', 'include', [], _('include names matching the given patterns')),
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3039 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3040 _('hg locate [OPTION]... [PATTERN]...')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3041 "^log|history":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3042 (log,
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3043 [('b', 'branches', None, _('show branches')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3044 ('k', 'keyword', [], _('search for a keyword')),
1756
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
3045 ('l', 'limit', '', _('limit number of changes displayed')),
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3046 ('r', 'rev', [], _('show the specified revision or range')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3047 ('M', 'no-merges', None, _('do not show merges')),
1913
74cf2b2f43d4 fix some things people wanted to be cleaner.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1910
diff changeset
3048 ('', 'style', '', _('display using template map file')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3049 ('m', 'only-merges', None, _('show only merges')),
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3050 ('p', 'patch', None, _('show patch')),
1920
b7cc0f323a4c merge with crew.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1917 1894
diff changeset
3051 ('', 'template', '', _('display with template')),
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3052 ('I', 'include', [], _('include names matching the given patterns')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3053 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3054 _('hg log [OPTION]... [FILE]')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3055 "manifest": (manifest, [], _('hg manifest [REV]')),
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
3056 "merge":
2044
b343e7d454b4 Don't allow --style and --template for hg update and hg merge.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2043
diff changeset
3057 (merge,
b343e7d454b4 Don't allow --style and --template for hg update and hg merge.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2043
diff changeset
3058 [('b', 'branch', '', _('merge with head of a specific branch')),
b343e7d454b4 Don't allow --style and --template for hg update and hg merge.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2043
diff changeset
3059 ('f', 'force', None, _('force a merge with outstanding changes'))],
b343e7d454b4 Don't allow --style and --template for hg update and hg merge.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2043
diff changeset
3060 _('hg merge [-b TAG] [-f] [REV]')),
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
3061 "outgoing|out": (outgoing,
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3062 [('M', 'no-merges', None, _('do not show merges')),
1959
d53a18f592be add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1948
diff changeset
3063 ('f', 'force', None,
d53a18f592be add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1948
diff changeset
3064 _('run even when remote repository is unrelated')),
1439
65cbe22b03fa allow 'hg out' / 'hg in' to show newest commit first
Michal Kvasnica <kvasnica@gmail.com>
parents: 1437
diff changeset
3065 ('p', 'patch', None, _('show patch')),
1913
74cf2b2f43d4 fix some things people wanted to be cleaner.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1910
diff changeset
3066 ('', 'style', '', _('display using template map file')),
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
3067 ('n', 'newest-first', None, _('show newest record first')),
1965
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
3068 ('', 'template', '', _('display with template')),
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
3069 ('e', 'ssh', '', _('specify ssh command to use')),
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
3070 ('', 'remotecmd', '',
62aa1b90414f add remotecmd/ssh option support to incoming/outgoing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1959
diff changeset
3071 _('specify hg command to run on the remote side'))],
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3072 _('hg outgoing [-M] [-p] [-n] [DEST]')),
1724
5a36609f73a7 add a -b/--branch option to 'hg parents'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1720
diff changeset
3073 "^parents":
5a36609f73a7 add a -b/--branch option to 'hg parents'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1720
diff changeset
3074 (parents,
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
3075 [('b', 'branches', None, _('show branches')),
1913
74cf2b2f43d4 fix some things people wanted to be cleaner.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1910
diff changeset
3076 ('', 'style', '', _('display using template map file')),
74cf2b2f43d4 fix some things people wanted to be cleaner.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1910
diff changeset
3077 ('', 'template', '', _('display with template'))],
1724
5a36609f73a7 add a -b/--branch option to 'hg parents'
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1720
diff changeset
3078 _('hg parents [-b] [REV]')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3079 "paths": (paths, [], _('hg paths [NAME]')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3080 "^pull":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3081 (pull,
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3082 [('u', 'update', None,
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3083 _('update the working directory to tip after pull')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3084 ('e', 'ssh', '', _('specify ssh command to use')),
1959
d53a18f592be add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1948
diff changeset
3085 ('f', 'force', None,
d53a18f592be add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1948
diff changeset
3086 _('run even when remote repository is unrelated')),
1469
0847c45ffee6 Merge bundle -r work from Eric Hopper
Matt Mackall <mpm@selenic.com>
parents: 1456 1467
diff changeset
3087 ('r', 'rev', [], _('a specific revision you would like to pull')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3088 ('', 'remotecmd', '',
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3089 _('specify hg command to run on the remote side'))],
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3090 _('hg pull [-u] [-e FILE] [-r REV]... [--remotecmd FILE] [SOURCE]')),
818
eef752151556 Actually implement the -f switch for push
mpm@selenic.com
parents: 815
diff changeset
3091 "^push":
eef752151556 Actually implement the -f switch for push
mpm@selenic.com
parents: 815
diff changeset
3092 (push,
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3093 [('f', 'force', None, _('force push')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3094 ('e', 'ssh', '', _('specify ssh command to use')),
1781
284fc722c342 add an optional argument to push only the specified revisions (push -r)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1712
diff changeset
3095 ('r', 'rev', [], _('a specific revision you would like to push')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3096 ('', 'remotecmd', '',
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3097 _('specify hg command to run on the remote side'))],
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3098 _('hg push [-f] [-e FILE] [-r REV]... [--remotecmd FILE] [DEST]')),
1818
9bbc7b304c34 Make the deprecated rawcommit an alias of debugrawcommit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1816
diff changeset
3099 "debugrawcommit|rawcommit":
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3100 (rawcommit,
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3101 [('p', 'parent', [], _('parent')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3102 ('d', 'date', '', _('date code')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3103 ('u', 'user', '', _('user')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3104 ('F', 'files', '', _('file list')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3105 ('m', 'message', '', _('commit message')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3106 ('l', 'logfile', '', _('commit message file'))],
1818
9bbc7b304c34 Make the deprecated rawcommit an alias of debugrawcommit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1816
diff changeset
3107 _('hg debugrawcommit [OPTION]... [FILE]...')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3108 "recover": (recover, [], _('hg recover')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3109 "^remove|rm":
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3110 (remove,
2245
d2118a0926bd Added -A as an alias for --after to hg remove, like for other commands.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2241
diff changeset
3111 [('A', 'after', None, _('record remove that has already occurred')),
2179
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
3112 ('f', 'force', None, _('remove file even if modified')),
1869
42c76ec7a8d4 Reordered options for remove, fixed synopsis for rename.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1867
diff changeset
3113 ('I', 'include', [], _('include names matching the given patterns')),
42c76ec7a8d4 Reordered options for remove, fixed synopsis for rename.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1867
diff changeset
3114 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3115 _('hg remove [OPTION]... FILE...')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3116 "rename|mv":
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3117 (rename,
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3118 [('A', 'after', None, _('record a rename that has already occurred')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3119 ('f', 'force', None,
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3120 _('forcibly copy over an existing managed file')),
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3121 ('I', 'include', [], _('include names matching the given patterns')),
2414
86e07466bcfc remove: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2413
diff changeset
3122 ('X', 'exclude', [], _('exclude names matching the given patterns')),
2416
04736f38d74f make description of -n option better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2415
diff changeset
3123 ('n', 'dry-run', None, _('do not perform actions, just print output'))],
1869
42c76ec7a8d4 Reordered options for remove, fixed synopsis for rename.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1867
diff changeset
3124 _('hg rename [OPTION]... SOURCE... DEST')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3125 "^revert":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3126 (revert,
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3127 [('r', 'rev', '', _('revision to revert to')),
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
3128 ('', 'no-backup', None, _('do not save backup copies of files')),
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
3129 ('I', 'include', [], _('include names matching given patterns')),
2415
dec79ed61ee1 revert: add -n/--dry-run option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2414
diff changeset
3130 ('X', 'exclude', [], _('exclude names matching given patterns')),
2416
04736f38d74f make description of -n option better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2415
diff changeset
3131 ('n', 'dry-run', None, _('do not perform actions, just print output'))],
1816
08f4398bdb1a Updated help synopsises and reordered some options. Dropped [-n] from revert.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1812
diff changeset
3132 _('hg revert [-r REV] [NAME]...')),
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
3133 "rollback": (rollback, [], _('hg rollback')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3134 "root": (root, [], _('hg root')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3135 "^serve":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3136 (serve,
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3137 [('A', 'accesslog', '', _('name of access log file to write to')),
1740
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
3138 ('d', 'daemon', None, _('run server in background')),
1742
1e5bb6c929cd Added help string for --daemon-pipefds
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1741
diff changeset
3139 ('', 'daemon-pipefds', '', _('used internally by daemon mode')),
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3140 ('E', 'errorlog', '', _('name of error log file to write to')),
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3141 ('p', 'port', 0, _('port to use (default: 8000)')),
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3142 ('a', 'address', '', _('address to use')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3143 ('n', 'name', '',
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3144 _('name to show in web pages (default: working dir)')),
2124
27fd8b7a6c51 Cleaned trailing whitespace in hgweb.py, removed command line shortcut for webdir-conf.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents: 2122
diff changeset
3145 ('', 'webdir-conf', '', _('name of the webdir config file'
27fd8b7a6c51 Cleaned trailing whitespace in hgweb.py, removed command line shortcut for webdir-conf.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents: 2122
diff changeset
3146 ' (serve more than one repo)')),
1740
f95654385065 add --daemon option to serve command. for issue 45.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1736
diff changeset
3147 ('', 'pid-file', '', _('name of file to write process ID to')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3148 ('', 'stdio', None, _('for remote clients')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3149 ('t', 'templates', '', _('web templates to use')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3150 ('', 'style', '', _('template style to use')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3151 ('6', 'ipv6', None, _('use IPv6 in addition to IPv4'))],
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3152 _('hg serve [OPTION]...')),
1507
cd8fadd8c689 Add explicit 'st' alias for status
Matt Mackall <mpm@selenic.com>
parents: 1506
diff changeset
3153 "^status|st":
840
141744605b51 hg status: added options to select files by status.
tksoh@users.sourceforge.net
parents: 839
diff changeset
3154 (status,
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3155 [('m', 'modified', None, _('show only modified files')),
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3156 ('a', 'added', None, _('show only added files')),
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3157 ('r', 'removed', None, _('show only removed files')),
1619
1ba0d7041ac4 Distinguish removed and deleted files. Tests are not fixed yet.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1618
diff changeset
3158 ('d', 'deleted', None, _('show only deleted (but tracked) files')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3159 ('u', 'unknown', None, _('show only unknown (not tracked) files')),
2022
a59da8cc35e4 New option -i/--ignored for 'hg status' to show ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2020
diff changeset
3160 ('i', 'ignored', None, _('show ignored files')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3161 ('n', 'no-status', None, _('hide status prefix')),
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3162 ('0', 'print0', None,
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3163 _('end filenames with NUL, for use with xargs')),
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3164 ('I', 'include', [], _('include names matching the given patterns')),
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3165 ('X', 'exclude', [], _('exclude names matching the given patterns'))],
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3166 _('hg status [OPTION]... [FILE]...')),
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3167 "tag":
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3168 (tag,
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3169 [('l', 'local', None, _('make the tag local')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3170 ('m', 'message', '', _('message for tag commit log entry')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3171 ('d', 'date', '', _('record datecode as commit date')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3172 ('u', 'user', '', _('record user as commiter')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3173 ('r', 'rev', '', _('revision to tag'))],
1812
a81f99dfaa2a fix the synopsis of some commands, mark rawcommit as deprecated in short help
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1811
diff changeset
3174 _('hg tag [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3175 "tags": (tags, [], _('hg tags')),
1762
8eaa8e06a364 Add option -b/--branch to hg tip (as done for hg parents).
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1761
diff changeset
3176 "tip":
8eaa8e06a364 Add option -b/--branch to hg tip (as done for hg parents).
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1761
diff changeset
3177 (tip,
1763
fa34a74efc40 Make option --branch vs. --branches more consistent.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1762
diff changeset
3178 [('b', 'branches', None, _('show branches')),
1913
74cf2b2f43d4 fix some things people wanted to be cleaner.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1910
diff changeset
3179 ('', 'style', '', _('display using template map file')),
1907
7718885070b1 let commands that show changesets use templates.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1800
diff changeset
3180 ('p', 'patch', None, _('show patch')),
1913
74cf2b2f43d4 fix some things people wanted to be cleaner.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1910
diff changeset
3181 ('', 'template', '', _('display with template'))],
1811
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
3182 _('hg tip [-b] [-p]')),
1218
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
3183 "unbundle":
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
3184 (unbundle,
1601
a1b25fb2e764 Error handling for unbundle, fix option line wrapping
Matt Mackall <mpm@selenic.com>
parents: 1600
diff changeset
3185 [('u', 'update', None,
a1b25fb2e764 Error handling for unbundle, fix option line wrapping
Matt Mackall <mpm@selenic.com>
parents: 1600
diff changeset
3186 _('update the working directory to tip after unbundle'))],
1600
728fd9584993 add --update support to 'hg unbundle'
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1596
diff changeset
3187 _('hg unbundle [-u] FILE')),
2241
abd70a92e06f hide deprecated undo command by making it an alias for debugundo.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2238
diff changeset
3188 "debugundo|undo": (undo, [], _('hg undo')),
593
ca3c499e94c6 Shorten help
mpm@selenic.com
parents: 592
diff changeset
3189 "^update|up|checkout|co":
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3190 (update,
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3191 [('b', 'branch', '', _('checkout the head of a specific branch')),
2283
e506c14382fd deprecate 'update -m'. use 'merge' instead.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2272
diff changeset
3192 ('m', 'merge', None, _('allow merging of branches (DEPRECATED)')),
1581
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1571
diff changeset
3193 ('C', 'clean', None, _('overwrite locally modified files')),
2044
b343e7d454b4 Don't allow --style and --template for hg update and hg merge.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2043
diff changeset
3194 ('f', 'force', None, _('force a merge with outstanding changes'))],
1581
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1571
diff changeset
3195 _('hg update [-b TAG] [-m] [-C] [-f] [REV]')),
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3196 "verify": (verify, [], _('hg verify')),
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3197 "version": (show_version, [], _('hg version')),
1046
772507daaa17 Sort global options by topic: directories, ui, timing, other
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1044
diff changeset
3198 }
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
3199
1046
772507daaa17 Sort global options by topic: directories, ui, timing, other
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1044
diff changeset
3200 globalopts = [
1894
4c53aaf2d153 Allow symbolic path names in global -R/--repository parameter.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1893
diff changeset
3201 ('R', 'repository', '',
4c53aaf2d153 Allow symbolic path names in global -R/--repository parameter.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1893
diff changeset
3202 _('repository root directory or symbolic path name')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3203 ('', 'cwd', '', _('change working directory')),
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
3204 ('y', 'noninteractive', None,
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3205 _('do not prompt, assume \'yes\' for any required answers')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3206 ('q', 'quiet', None, _('suppress output')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3207 ('v', 'verbose', None, _('enable additional output')),
2293
3dc6f2501dbc add --config global option. allows to set hgrc option on command line.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2287
diff changeset
3208 ('', 'config', [], _('set/override config option')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3209 ('', 'debug', None, _('enable debugging output')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3210 ('', 'debugger', None, _('start debugger')),
2422
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3211 ('', 'lsprof', None, _('print improved command execution profile')),
1615
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3212 ('', 'traceback', None, _('print traceback on exception')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3213 ('', 'time', None, _('time how long the command takes')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3214 ('', 'profile', None, _('print command execution profile')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3215 ('', 'version', None, _('output version information and exit')),
83238c1db6de Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1607
diff changeset
3216 ('h', 'help', None, _('display help and exit')),
1046
772507daaa17 Sort global options by topic: directories, ui, timing, other
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1044
diff changeset
3217 ]
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3218
1887
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3219 norepo = ("clone init version help debugancestor debugcomplete debugdata"
1858
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
3220 " debugindex debugindexdot")
2127
8a85dbbadddf Allow 'hg serve --webdir-conf foo' to be run outside a repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2125
diff changeset
3221 optionalrepo = ("paths serve debugconfig")
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
3222
1887
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3223 def findpossible(cmd):
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3224 """
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3225 Return cmd -> (aliases, command table entry)
2049
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3226 for each matching command.
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3227 Return debug commands (or their aliases) only if no normal command matches.
1887
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3228 """
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3229 choice = {}
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3230 debugchoice = {}
212
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
3231 for e in table.keys():
1506
11c8b81f95fe if unambigious command name are passed, use them
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1505
diff changeset
3232 aliases = e.lstrip("^").split("|")
2049
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3233 found = None
1506
11c8b81f95fe if unambigious command name are passed, use them
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1505
diff changeset
3234 if cmd in aliases:
2049
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3235 found = cmd
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3236 else:
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3237 for a in aliases:
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3238 if a.startswith(cmd):
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3239 found = a
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3240 break
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3241 if found is not None:
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3242 if aliases[0].startswith("debug"):
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3243 debugchoice[found] = (aliases, table[e])
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3244 else:
f70952384ae7 Make completion for debugindex<tab><tab> show debugindexdot, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2045
diff changeset
3245 choice[found] = (aliases, table[e])
1739
57de7e1a81d2 AmbiguousCommand is raised too soon.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1736
diff changeset
3246
1850
05f6c0d1bad8 Hide debug commands in ambiguous command list, unless no normal command matches.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1849
diff changeset
3247 if not choice and debugchoice:
05f6c0d1bad8 Hide debug commands in ambiguous command list, unless no normal command matches.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1849
diff changeset
3248 choice = debugchoice
05f6c0d1bad8 Hide debug commands in ambiguous command list, unless no normal command matches.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1849
diff changeset
3249
1887
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3250 return choice
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3251
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3252 def find(cmd):
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3253 """Return (aliases, command table entry) for command string."""
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3254 choice = findpossible(cmd)
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3255
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3256 if choice.has_key(cmd):
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3257 return choice[cmd]
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3258
1848
bb70ffebe77b show choices on ambiguous commands
TK Soh <teekaysoh@yahoo.com>
parents: 1840
diff changeset
3259 if len(choice) > 1:
1887
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3260 clist = choice.keys()
1849
360d0f8d9d6f Show ambiguous aliases, if they are not simple abbreviations. Sort output.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1848
diff changeset
3261 clist.sort()
1848
bb70ffebe77b show choices on ambiguous commands
TK Soh <teekaysoh@yahoo.com>
parents: 1840
diff changeset
3262 raise AmbiguousCommand(cmd, clist)
1739
57de7e1a81d2 AmbiguousCommand is raised too soon.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1736
diff changeset
3263
1517
b582dbc16165 Canonicalize command when using aliases or prefix matching.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1507
diff changeset
3264 if choice:
1887
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1875
diff changeset
3265 return choice.values()[0]
212
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
3266
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
3267 raise UnknownCommand(cmd)
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
3268
214
2d60aa9bde0a catch TERM signal in command processor
mpm@selenic.com
parents: 213
diff changeset
3269 def catchterm(*args):
2153
635653cd73ab move SignalInterrupt class into util module.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2140
diff changeset
3270 raise util.SignalInterrupt
214
2d60aa9bde0a catch TERM signal in command processor
mpm@selenic.com
parents: 213
diff changeset
3271
249
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
3272 def run():
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
3273 sys.exit(dispatch(sys.argv[1:]))
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
3274
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3275 class ParseError(Exception):
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3276 """Exception raised on errors in parsing the command line."""
592
74175ce83378 Restructure option handling
mpm@selenic.com
parents: 591
diff changeset
3277
1453
6fbb13b7a59f get command defaults from hgrc
TK Soh <teekaysoh@yahoo.com>
parents: 1447
diff changeset
3278 def parse(ui, args):
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
3279 options = {}
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3280 cmdoptions = {}
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
3281
592
74175ce83378 Restructure option handling
mpm@selenic.com
parents: 591
diff changeset
3282 try:
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3283 args = fancyopts.fancyopts(args, globalopts, options)
592
74175ce83378 Restructure option handling
mpm@selenic.com
parents: 591
diff changeset
3284 except fancyopts.getopt.GetoptError, inst:
618
4051b78c53c7 Handle unrecognised options correctly.
Bryan O'Sullivan <bos@serpentine.com>
parents: 617
diff changeset
3285 raise ParseError(None, inst)
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
3286
1047
a0538ea1ac50 Moved special handling of --version and no hg command from parse to dispatch.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1046
diff changeset
3287 if args:
a0538ea1ac50 Moved special handling of --version and no hg command from parse to dispatch.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1046
diff changeset
3288 cmd, args = args[0], args[1:]
1567
b4956bbbadc9 make command defaults works for aliases
TK Soh <teekaysoh@yahoo.com>
parents: 1565
diff changeset
3289 aliases, i = find(cmd)
b4956bbbadc9 make command defaults works for aliases
TK Soh <teekaysoh@yahoo.com>
parents: 1565
diff changeset
3290 cmd = aliases[0]
1453
6fbb13b7a59f get command defaults from hgrc
TK Soh <teekaysoh@yahoo.com>
parents: 1447
diff changeset
3291 defaults = ui.config("defaults", cmd)
6fbb13b7a59f get command defaults from hgrc
TK Soh <teekaysoh@yahoo.com>
parents: 1447
diff changeset
3292 if defaults:
1526
c230939283c3 fix a bug where command defaults suppress global options
TK Soh <teekaysoh@yahoo.com>
parents: 1525
diff changeset
3293 args = defaults.split() + args
1047
a0538ea1ac50 Moved special handling of --version and no hg command from parse to dispatch.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1046
diff changeset
3294 c = list(i[1])
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
3295 else:
1047
a0538ea1ac50 Moved special handling of --version and no hg command from parse to dispatch.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1046
diff changeset
3296 cmd = None
a0538ea1ac50 Moved special handling of --version and no hg command from parse to dispatch.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1046
diff changeset
3297 c = []
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
3298
592
74175ce83378 Restructure option handling
mpm@selenic.com
parents: 591
diff changeset
3299 # combine global options into local
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3300 for o in globalopts:
592
74175ce83378 Restructure option handling
mpm@selenic.com
parents: 591
diff changeset
3301 c.append((o[0], o[1], options[o[1]], o[3]))
214
2d60aa9bde0a catch TERM signal in command processor
mpm@selenic.com
parents: 213
diff changeset
3302
293
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
3303 try:
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3304 args = fancyopts.fancyopts(args, c, cmdoptions)
293
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
3305 except fancyopts.getopt.GetoptError, inst:
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3306 raise ParseError(cmd, inst)
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
3307
592
74175ce83378 Restructure option handling
mpm@selenic.com
parents: 591
diff changeset
3308 # separate global options back out
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3309 for o in globalopts:
592
74175ce83378 Restructure option handling
mpm@selenic.com
parents: 591
diff changeset
3310 n = o[1]
74175ce83378 Restructure option handling
mpm@selenic.com
parents: 591
diff changeset
3311 options[n] = cmdoptions[n]
74175ce83378 Restructure option handling
mpm@selenic.com
parents: 591
diff changeset
3312 del cmdoptions[n]
74175ce83378 Restructure option handling
mpm@selenic.com
parents: 591
diff changeset
3313
1047
a0538ea1ac50 Moved special handling of --version and no hg command from parse to dispatch.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1046
diff changeset
3314 return (cmd, cmd and i[0] or None, args, options, cmdoptions)
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3315
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3316 def dispatch(args):
2112
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
3317 for name in 'SIGBREAK', 'SIGHUP', 'SIGTERM':
2092
1d3c6e63d703 catch SIGBREAK on windows.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2085
diff changeset
3318 num = getattr(signal, name, None)
1d3c6e63d703 catch SIGBREAK on windows.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2085
diff changeset
3319 if num: signal.signal(num, catchterm)
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3320
1483
a4ba63e04134 Fix traceback on bad system hgrc files
Soh Tk-r28629 <tksoh@freescale.com>
parents: 1475
diff changeset
3321 try:
2166
d0c02b4dce9a do not check sys.argv from localrepo when running hooks.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2160
diff changeset
3322 u = ui.ui(traceback='--traceback' in sys.argv[1:])
1483
a4ba63e04134 Fix traceback on bad system hgrc files
Soh Tk-r28629 <tksoh@freescale.com>
parents: 1475
diff changeset
3323 except util.Abort, inst:
a4ba63e04134 Fix traceback on bad system hgrc files
Soh Tk-r28629 <tksoh@freescale.com>
parents: 1475
diff changeset
3324 sys.stderr.write(_("abort: %s\n") % inst)
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3325 return -1
1483
a4ba63e04134 Fix traceback on bad system hgrc files
Soh Tk-r28629 <tksoh@freescale.com>
parents: 1475
diff changeset
3326
1071
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1068
diff changeset
3327 external = []
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1068
diff changeset
3328 for x in u.extensions():
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3329 try:
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3330 if x[1]:
2405
4593d09e534d pick a non-conflicting module name when loading an extension
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2400
diff changeset
3331 # the module will be loaded in sys.modules
4593d09e534d pick a non-conflicting module name when loading an extension
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2400
diff changeset
3332 # choose an unique name so that it doesn't
4593d09e534d pick a non-conflicting module name when loading an extension
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2400
diff changeset
3333 # conflicts with other modules
4593d09e534d pick a non-conflicting module name when loading an extension
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2400
diff changeset
3334 module_name = "hgext_%s" % x[0].replace('.', '_')
4593d09e534d pick a non-conflicting module name when loading an extension
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2400
diff changeset
3335 mod = imp.load_source(module_name, x[1])
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3336 else:
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3337 def importh(name):
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3338 mod = __import__(name)
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3339 components = name.split('.')
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3340 for comp in components[1:]:
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3341 mod = getattr(mod, comp)
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3342 return mod
1889
468730910353 Try to import extensions from the hgext module first.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1887
diff changeset
3343 try:
468730910353 Try to import extensions from the hgext module first.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1887
diff changeset
3344 mod = importh("hgext." + x[0])
468730910353 Try to import extensions from the hgext module first.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1887
diff changeset
3345 except ImportError:
468730910353 Try to import extensions from the hgext module first.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1887
diff changeset
3346 mod = importh(x[0])
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3347 external.append(mod)
2428
42b8a1ff46cf honor signals during load of extensions.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2422
diff changeset
3348 except (util.SignalInterrupt, KeyboardInterrupt):
42b8a1ff46cf honor signals during load of extensions.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2422
diff changeset
3349 raise
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3350 except Exception, inst:
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3351 u.warn(_("*** failed to import extension %s: %s\n") % (x[0], inst))
2335
f0680b2d1d64 add ui.print_exc(), make all traceback printing central.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2331
diff changeset
3352 if u.print_exc():
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3353 return 1
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3354
1071
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1068
diff changeset
3355 for x in external:
2330
b30aa02c85e7 add 'uisetup' function to extension module protocol.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2309
diff changeset
3356 uisetup = getattr(x, 'uisetup', None)
b30aa02c85e7 add 'uisetup' function to extension module protocol.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2309
diff changeset
3357 if uisetup:
b30aa02c85e7 add 'uisetup' function to extension module protocol.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2309
diff changeset
3358 uisetup(u)
1295
abcdf14449ea Make contract with extensions optional.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1285
diff changeset
3359 cmdtable = getattr(x, 'cmdtable', {})
abcdf14449ea Make contract with extensions optional.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1285
diff changeset
3360 for t in cmdtable:
1071
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1068
diff changeset
3361 if t in table:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3362 u.warn(_("module %s overrides %s\n") % (x.__name__, t))
1295
abcdf14449ea Make contract with extensions optional.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1285
diff changeset
3363 table.update(cmdtable)
1071
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1068
diff changeset
3364
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3365 try:
1453
6fbb13b7a59f get command defaults from hgrc
TK Soh <teekaysoh@yahoo.com>
parents: 1447
diff changeset
3366 cmd, func, args, options, cmdoptions = parse(u, args)
1875
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3367 if options["time"]:
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3368 def get_times():
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3369 t = os.times()
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3370 if t[4] == 0.0: # Windows leaves this as zero, so use time.clock()
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3371 t = (t[0], t[1], t[2], t[3], time.clock())
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3372 return t
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3373 s = get_times()
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3374 def print_time():
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3375 t = get_times()
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3376 u.warn(_("Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n") %
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3377 (t[4]-s[4], t[0]-s[0], t[2]-s[2], t[1]-s[1], t[3]-s[3]))
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3378 atexit.register(print_time)
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3379
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3380 u.updateopts(options["verbose"], options["debug"], options["quiet"],
2293
3dc6f2501dbc add --config global option. allows to set hgrc option on command line.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2287
diff changeset
3381 not options["noninteractive"], options["traceback"],
3dc6f2501dbc add --config global option. allows to set hgrc option on command line.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2287
diff changeset
3382 options["config"])
1875
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3383
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3384 # enter the debugger before command execution
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3385 if options['debugger']:
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3386 pdb.set_trace()
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3387
527
58790c83ce52 [PATCH] Add --traceback option
mpm@selenic.com
parents: 526
diff changeset
3388 try:
1859
39c46510ed25 Moved --cwd handling in front of -R handling again. Shorter code for initial -R.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1858
diff changeset
3389 if options['cwd']:
39c46510ed25 Moved --cwd handling in front of -R handling again. Shorter code for initial -R.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1858
diff changeset
3390 try:
39c46510ed25 Moved --cwd handling in front of -R handling again. Shorter code for initial -R.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1858
diff changeset
3391 os.chdir(options['cwd'])
39c46510ed25 Moved --cwd handling in front of -R handling again. Shorter code for initial -R.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1858
diff changeset
3392 except OSError, inst:
39c46510ed25 Moved --cwd handling in front of -R handling again. Shorter code for initial -R.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1858
diff changeset
3393 raise util.Abort('%s: %s' %
39c46510ed25 Moved --cwd handling in front of -R handling again. Shorter code for initial -R.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1858
diff changeset
3394 (options['cwd'], inst.strerror))
39c46510ed25 Moved --cwd handling in front of -R handling again. Shorter code for initial -R.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1858
diff changeset
3395
1894
4c53aaf2d153 Allow symbolic path names in global -R/--repository parameter.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1893
diff changeset
3396 path = u.expandpath(options["repository"]) or ""
1859
39c46510ed25 Moved --cwd handling in front of -R handling again. Shorter code for initial -R.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1858
diff changeset
3397 repo = path and hg.repository(u, path=path) or None
1857
848152a2e67f Always try to open the repository if -R/--repository is specified.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1851
diff changeset
3398
1048
7fbb440b2e63 Added options -h/--help.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1047
diff changeset
3399 if options['help']:
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3400 return help_(u, cmd, options['version'])
1048
7fbb440b2e63 Added options -h/--help.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1047
diff changeset
3401 elif options['version']:
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3402 return show_version(u)
1047
a0538ea1ac50 Moved special handling of --version and no hg command from parse to dispatch.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1046
diff changeset
3403 elif not cmd:
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3404 return help_(u, 'shortlist')
1047
a0538ea1ac50 Moved special handling of --version and no hg command from parse to dispatch.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1046
diff changeset
3405
527
58790c83ce52 [PATCH] Add --traceback option
mpm@selenic.com
parents: 526
diff changeset
3406 if cmd not in norepo.split():
1858
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
3407 try:
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
3408 if not repo:
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
3409 repo = hg.repository(u, path=path)
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
3410 u = repo.ui
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
3411 for x in external:
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
3412 if hasattr(x, 'reposetup'):
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
3413 x.reposetup(u, repo)
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
3414 except hg.RepoError:
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
3415 if cmd not in optionalrepo.split():
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
3416 raise
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3417 d = lambda: func(u, repo, *args, **cmdoptions)
527
58790c83ce52 [PATCH] Add --traceback option
mpm@selenic.com
parents: 526
diff changeset
3418 else:
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
3419 d = lambda: func(u, *args, **cmdoptions)
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
3420
1837
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3421 try:
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3422 if options['profile']:
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3423 import hotshot, hotshot.stats
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3424 prof = hotshot.Profile("hg.prof")
1832
7a58bf789965 generate profile even when exception raised.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1823
diff changeset
3425 try:
7a58bf789965 generate profile even when exception raised.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1823
diff changeset
3426 try:
1837
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3427 return prof.runcall(d)
1832
7a58bf789965 generate profile even when exception raised.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1823
diff changeset
3428 except:
1837
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3429 try:
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3430 u.warn(_('exception raised - generating '
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3431 'profile anyway\n'))
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3432 except:
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3433 pass
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3434 raise
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3435 finally:
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3436 prof.close()
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3437 stats = hotshot.stats.load("hg.prof")
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3438 stats.strip_dirs()
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3439 stats.sort_stats('time', 'calls')
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3440 stats.print_stats(40)
2422
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3441 elif options['lsprof']:
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3442 try:
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3443 from mercurial import lsprof
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3444 except ImportError:
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3445 raise util.Abort(_(
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3446 'lsprof not available - install from '
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3447 'http://codespeak.net/svn/user/arigo/hack/misc/lsprof/'))
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3448 p = lsprof.Profiler()
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3449 p.enable(subcalls=True)
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3450 try:
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3451 return d()
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3452 finally:
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3453 p.disable()
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3454 stats = lsprof.Stats(p.getstats())
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3455 stats.sort()
6aa75e77cafe add --lsprof option. 3x faster than --profile, more useful output.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2417
diff changeset
3456 stats.pprint(top=10, file=sys.stderr, climit=5)
1837
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3457 else:
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3458 return d()
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3459 finally:
6f67a4c93493 make ui flush output. this makes error happen if printing to /dev/full.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1835
diff changeset
3460 u.flush()
527
58790c83ce52 [PATCH] Add --traceback option
mpm@selenic.com
parents: 526
diff changeset
3461 except:
1225
ea90162e210c Add --debugger global option
mpm@selenic.com
parents: 1222
diff changeset
3462 # enter the debugger when we hit an exception
ea90162e210c Add --debugger global option
mpm@selenic.com
parents: 1222
diff changeset
3463 if options['debugger']:
ea90162e210c Add --debugger global option
mpm@selenic.com
parents: 1222
diff changeset
3464 pdb.post_mortem(sys.exc_info()[2])
2335
f0680b2d1d64 add ui.print_exc(), make all traceback printing central.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2331
diff changeset
3465 u.print_exc()
527
58790c83ce52 [PATCH] Add --traceback option
mpm@selenic.com
parents: 526
diff changeset
3466 raise
1875
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3467 except ParseError, inst:
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3468 if inst.args[0]:
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3469 u.warn(_("hg %s: %s\n") % (inst.args[0], inst.args[1]))
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3470 help_(u, inst.args[0])
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3471 else:
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3472 u.warn(_("hg: %s\n") % inst.args[1])
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3473 help_(u, 'shortlist')
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3474 except AmbiguousCommand, inst:
1920
b7cc0f323a4c merge with crew.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1917 1894
diff changeset
3475 u.warn(_("hg: command '%s' is ambiguous:\n %s\n") %
1875
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3476 (inst.args[0], " ".join(inst.args[1])))
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3477 except UnknownCommand, inst:
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3478 u.warn(_("hg: unknown command '%s'\n") % inst.args[0])
2f4a0734c100 Catch other exceptions (e.g. util.Abort) in parse(), too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1869
diff changeset
3479 help_(u, 'shortlist')
499
81c563a254be Add exception class for repository errors
mpm@selenic.com
parents: 496
diff changeset
3480 except hg.RepoError, inst:
2134
ef81e34ad674 write to stderr with a single write call.
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 2127
diff changeset
3481 u.warn(_("abort: %s!\n") % inst)
2016
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
3482 except lock.LockHeld, inst:
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
3483 if inst.errno == errno.ETIMEDOUT:
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
3484 reason = _('timed out waiting for lock held by %s') % inst.locker
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
3485 else:
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
3486 reason = _('lock held by %s') % inst.locker
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
3487 u.warn(_("abort: %s: %s\n") % (inst.desc or inst.filename, reason))
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
3488 except lock.LockUnavailable, inst:
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
3489 u.warn(_("abort: could not lock %s: %s\n") %
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
3490 (inst.desc or inst.filename, inst.strerror))
1214
34706a835d4a Smarter handling of revlog key errors
mpm@selenic.com
parents: 1212
diff changeset
3491 except revlog.RevlogError, inst:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3492 u.warn(_("abort: "), inst, "!\n")
2153
635653cd73ab move SignalInterrupt class into util module.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2140
diff changeset
3493 except util.SignalInterrupt:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3494 u.warn(_("killed!\n"))
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
3495 except KeyboardInterrupt:
832
b65773f7db41 Handle broken pipe on pressing Ctrl-C with e.g. 'hg log|grep something'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 818
diff changeset
3496 try:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3497 u.warn(_("interrupted!\n"))
832
b65773f7db41 Handle broken pipe on pressing Ctrl-C with e.g. 'hg log|grep something'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 818
diff changeset
3498 except IOError, inst:
b65773f7db41 Handle broken pipe on pressing Ctrl-C with e.g. 'hg log|grep something'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 818
diff changeset
3499 if inst.errno == errno.EPIPE:
b65773f7db41 Handle broken pipe on pressing Ctrl-C with e.g. 'hg log|grep something'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 818
diff changeset
3500 if u.debugflag:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3501 u.warn(_("\nbroken pipe\n"))
832
b65773f7db41 Handle broken pipe on pressing Ctrl-C with e.g. 'hg log|grep something'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 818
diff changeset
3502 else:
b65773f7db41 Handle broken pipe on pressing Ctrl-C with e.g. 'hg log|grep something'.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 818
diff changeset
3503 raise
250
45ee7c4cae4f Catch broken pipes in command interpreter
mpm@selenic.com
parents: 249
diff changeset
3504 except IOError, inst:
395
fbe8834923c5 commands: report http exceptions nicely
mpm@selenic.com
parents: 393
diff changeset
3505 if hasattr(inst, "code"):
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3506 u.warn(_("abort: %s\n") % inst)
395
fbe8834923c5 commands: report http exceptions nicely
mpm@selenic.com
parents: 393
diff changeset
3507 elif hasattr(inst, "reason"):
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3508 u.warn(_("abort: error: %s\n") % inst.reason[1])
395
fbe8834923c5 commands: report http exceptions nicely
mpm@selenic.com
parents: 393
diff changeset
3509 elif hasattr(inst, "args") and inst[0] == errno.EPIPE:
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3510 if u.debugflag:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3511 u.warn(_("broken pipe\n"))
1350
3729e2773cca Fix pipe error regression
Matt Mackall <mpm@selenic.com>
parents: 1342
diff changeset
3512 elif getattr(inst, "strerror", None):
1354
8cf364c65425 Made the abort message for IOError nicer when the filename is known.
Eric Hopper <hopper@omnifarious.org>
parents: 1350
diff changeset
3513 if getattr(inst, "filename", None):
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3514 u.warn(_("abort: %s - %s\n") % (inst.strerror, inst.filename))
1354
8cf364c65425 Made the abort message for IOError nicer when the filename is known.
Eric Hopper <hopper@omnifarious.org>
parents: 1350
diff changeset
3515 else:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3516 u.warn(_("abort: %s\n") % inst.strerror)
250
45ee7c4cae4f Catch broken pipes in command interpreter
mpm@selenic.com
parents: 249
diff changeset
3517 else:
45ee7c4cae4f Catch broken pipes in command interpreter
mpm@selenic.com
parents: 249
diff changeset
3518 raise
549
92b60cabf808 [PATCH] Catch OSError usefully
mpm@selenic.com
parents: 547
diff changeset
3519 except OSError, inst:
92b60cabf808 [PATCH] Catch OSError usefully
mpm@selenic.com
parents: 547
diff changeset
3520 if hasattr(inst, "filename"):
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3521 u.warn(_("abort: %s: %s\n") % (inst.strerror, inst.filename))
549
92b60cabf808 [PATCH] Catch OSError usefully
mpm@selenic.com
parents: 547
diff changeset
3522 else:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3523 u.warn(_("abort: %s\n") % inst.strerror)
870
a82eae840447 Teach walk code about absolute paths.
Bryan O'Sullivan <bos@serpentine.com>
parents: 868
diff changeset
3524 except util.Abort, inst:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3525 u.warn(_('abort: '), inst.args[0] % inst.args[1:], '\n')
212
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
3526 except TypeError, inst:
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
3527 # was this an argument error?
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
3528 tb = traceback.extract_tb(sys.exc_info()[2])
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
3529 if len(tb) > 2: # no
48398a5353e3 commands: better argument processing, per-command help
mpm@selenic.com
parents: 211
diff changeset
3530 raise
293
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
3531 u.debug(inst, "\n")
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3532 u.warn(_("%s: invalid arguments\n") % cmd)
697
cb1be2327220 Multiple cleanups of things detected by pylint.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 696
diff changeset
3533 help_(u, cmd)
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3534 except SystemExit, inst:
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3535 # Commands shouldn't sys.exit directly, but give a return code.
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3536 # Just in case catch this and and pass exit code to caller.
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3537 return inst.code
1215
8b4435aae40a Add reporting instructions to unknown exception backtraces
mpm@selenic.com
parents: 1214
diff changeset
3538 except:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3539 u.warn(_("** unknown exception encountered, details follow\n"))
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
3540 u.warn(_("** report bug details to mercurial@selenic.com\n"))
1552
7509fa02437f Added version information to "report bug" message for unknown exceptions.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1551
diff changeset
3541 u.warn(_("** Mercurial Distributed SCM (version %s)\n")
7509fa02437f Added version information to "report bug" message for unknown exceptions.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1551
diff changeset
3542 % version.get_version())
1215
8b4435aae40a Add reporting instructions to unknown exception backtraces
mpm@selenic.com
parents: 1214
diff changeset
3543 raise
293
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 290
diff changeset
3544
2057
fef2d653beaf Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2056
diff changeset
3545 return -1