##// END OF EJS Templates
warn about new heads on commit (issue842)
Dirkjan Ochtman -
r6336:4b0c9c67 default
parent child Browse files
Show More
@@ -0,0 +1,20 b''
1 hg init test
2 cd test
3 echo foo > a
4 hg ci -Ama
5
6 hg up -r0000
7 echo bar > a
8 echo % should issue warning
9 hg ci -Amb
10
11 hg up -r0000
12 echo stuffy > a
13 echo % should not issue warning
14 hg ci -q -Amc
15
16 hg up -r0000
17 echo crap > a
18 hg branch testing
19 echo % should not issue warning
20 hg ci -q -Amd
@@ -0,0 +1,10 b''
1 adding a
2 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
3 % should issue warning
4 adding a
5 created new head
6 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
7 % should not issue warning
8 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
9 marked working directory as branch testing
10 % should not issue warning
@@ -1,3219 +1,3223 b''
1 # commands.py - command processing for mercurial
1 # commands.py - command processing for mercurial
2 #
2 #
3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
4 #
4 #
5 # This software may be used and distributed according to the terms
5 # This software may be used and distributed according to the terms
6 # of the GNU General Public License, incorporated herein by reference.
6 # of the GNU General Public License, incorporated herein by reference.
7
7
8 from node import hex, nullid, nullrev, short
8 from node import hex, nullid, nullrev, short
9 from repo import RepoError
9 from repo import RepoError
10 from i18n import _
10 from i18n import _
11 import os, re, sys, urllib
11 import os, re, sys, urllib
12 import hg, util, revlog, bundlerepo, extensions, copies
12 import hg, util, revlog, bundlerepo, extensions, copies
13 import difflib, patch, time, help, mdiff, tempfile
13 import difflib, patch, time, help, mdiff, tempfile
14 import version, socket
14 import version, socket
15 import archival, changegroup, cmdutil, hgweb.server, sshserver, hbisect
15 import archival, changegroup, cmdutil, hgweb.server, sshserver, hbisect
16
16
17 # Commands start here, listed alphabetically
17 # Commands start here, listed alphabetically
18
18
19 def add(ui, repo, *pats, **opts):
19 def add(ui, repo, *pats, **opts):
20 """add the specified files on the next commit
20 """add the specified files on the next commit
21
21
22 Schedule files to be version controlled and added to the repository.
22 Schedule files to be version controlled and added to the repository.
23
23
24 The files will be added to the repository at the next commit. To
24 The files will be added to the repository at the next commit. To
25 undo an add before that, see hg revert.
25 undo an add before that, see hg revert.
26
26
27 If no names are given, add all files in the repository.
27 If no names are given, add all files in the repository.
28 """
28 """
29
29
30 rejected = None
30 rejected = None
31 exacts = {}
31 exacts = {}
32 names = []
32 names = []
33 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts,
33 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts,
34 badmatch=util.always):
34 badmatch=util.always):
35 if exact:
35 if exact:
36 if ui.verbose:
36 if ui.verbose:
37 ui.status(_('adding %s\n') % rel)
37 ui.status(_('adding %s\n') % rel)
38 names.append(abs)
38 names.append(abs)
39 exacts[abs] = 1
39 exacts[abs] = 1
40 elif abs not in repo.dirstate:
40 elif abs not in repo.dirstate:
41 ui.status(_('adding %s\n') % rel)
41 ui.status(_('adding %s\n') % rel)
42 names.append(abs)
42 names.append(abs)
43 if not opts.get('dry_run'):
43 if not opts.get('dry_run'):
44 rejected = repo.add(names)
44 rejected = repo.add(names)
45 rejected = [p for p in rejected if p in exacts]
45 rejected = [p for p in rejected if p in exacts]
46 return rejected and 1 or 0
46 return rejected and 1 or 0
47
47
48 def addremove(ui, repo, *pats, **opts):
48 def addremove(ui, repo, *pats, **opts):
49 """add all new files, delete all missing files
49 """add all new files, delete all missing files
50
50
51 Add all new files and remove all missing files from the repository.
51 Add all new files and remove all missing files from the repository.
52
52
53 New files are ignored if they match any of the patterns in .hgignore. As
53 New files are ignored if they match any of the patterns in .hgignore. As
54 with add, these changes take effect at the next commit.
54 with add, these changes take effect at the next commit.
55
55
56 Use the -s option to detect renamed files. With a parameter > 0,
56 Use the -s option to detect renamed files. With a parameter > 0,
57 this compares every removed file with every added file and records
57 this compares every removed file with every added file and records
58 those similar enough as renames. This option takes a percentage
58 those similar enough as renames. This option takes a percentage
59 between 0 (disabled) and 100 (files must be identical) as its
59 between 0 (disabled) and 100 (files must be identical) as its
60 parameter. Detecting renamed files this way can be expensive.
60 parameter. Detecting renamed files this way can be expensive.
61 """
61 """
62 try:
62 try:
63 sim = float(opts.get('similarity') or 0)
63 sim = float(opts.get('similarity') or 0)
64 except ValueError:
64 except ValueError:
65 raise util.Abort(_('similarity must be a number'))
65 raise util.Abort(_('similarity must be a number'))
66 if sim < 0 or sim > 100:
66 if sim < 0 or sim > 100:
67 raise util.Abort(_('similarity must be between 0 and 100'))
67 raise util.Abort(_('similarity must be between 0 and 100'))
68 return cmdutil.addremove(repo, pats, opts, similarity=sim/100.)
68 return cmdutil.addremove(repo, pats, opts, similarity=sim/100.)
69
69
70 def annotate(ui, repo, *pats, **opts):
70 def annotate(ui, repo, *pats, **opts):
71 """show changeset information per file line
71 """show changeset information per file line
72
72
73 List changes in files, showing the revision id responsible for each line
73 List changes in files, showing the revision id responsible for each line
74
74
75 This command is useful to discover who did a change or when a change took
75 This command is useful to discover who did a change or when a change took
76 place.
76 place.
77
77
78 Without the -a option, annotate will avoid processing files it
78 Without the -a option, annotate will avoid processing files it
79 detects as binary. With -a, annotate will generate an annotation
79 detects as binary. With -a, annotate will generate an annotation
80 anyway, probably with undesirable results.
80 anyway, probably with undesirable results.
81 """
81 """
82 datefunc = ui.quiet and util.shortdate or util.datestr
82 datefunc = ui.quiet and util.shortdate or util.datestr
83 getdate = util.cachefunc(lambda x: datefunc(x[0].date()))
83 getdate = util.cachefunc(lambda x: datefunc(x[0].date()))
84
84
85 if not pats:
85 if not pats:
86 raise util.Abort(_('at least one file name or pattern required'))
86 raise util.Abort(_('at least one file name or pattern required'))
87
87
88 opmap = [('user', lambda x: ui.shortuser(x[0].user())),
88 opmap = [('user', lambda x: ui.shortuser(x[0].user())),
89 ('number', lambda x: str(x[0].rev())),
89 ('number', lambda x: str(x[0].rev())),
90 ('changeset', lambda x: short(x[0].node())),
90 ('changeset', lambda x: short(x[0].node())),
91 ('date', getdate),
91 ('date', getdate),
92 ('follow', lambda x: x[0].path()),
92 ('follow', lambda x: x[0].path()),
93 ]
93 ]
94
94
95 if (not opts['user'] and not opts['changeset'] and not opts['date']
95 if (not opts['user'] and not opts['changeset'] and not opts['date']
96 and not opts['follow']):
96 and not opts['follow']):
97 opts['number'] = 1
97 opts['number'] = 1
98
98
99 linenumber = opts.get('line_number') is not None
99 linenumber = opts.get('line_number') is not None
100 if (linenumber and (not opts['changeset']) and (not opts['number'])):
100 if (linenumber and (not opts['changeset']) and (not opts['number'])):
101 raise util.Abort(_('at least one of -n/-c is required for -l'))
101 raise util.Abort(_('at least one of -n/-c is required for -l'))
102
102
103 funcmap = [func for op, func in opmap if opts.get(op)]
103 funcmap = [func for op, func in opmap if opts.get(op)]
104 if linenumber:
104 if linenumber:
105 lastfunc = funcmap[-1]
105 lastfunc = funcmap[-1]
106 funcmap[-1] = lambda x: "%s:%s" % (lastfunc(x), x[1])
106 funcmap[-1] = lambda x: "%s:%s" % (lastfunc(x), x[1])
107
107
108 ctx = repo.changectx(opts['rev'])
108 ctx = repo.changectx(opts['rev'])
109
109
110 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts,
110 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts,
111 node=ctx.node()):
111 node=ctx.node()):
112 fctx = ctx.filectx(abs)
112 fctx = ctx.filectx(abs)
113 if not opts['text'] and util.binary(fctx.data()):
113 if not opts['text'] and util.binary(fctx.data()):
114 ui.write(_("%s: binary file\n") % ((pats and rel) or abs))
114 ui.write(_("%s: binary file\n") % ((pats and rel) or abs))
115 continue
115 continue
116
116
117 lines = fctx.annotate(follow=opts.get('follow'),
117 lines = fctx.annotate(follow=opts.get('follow'),
118 linenumber=linenumber)
118 linenumber=linenumber)
119 pieces = []
119 pieces = []
120
120
121 for f in funcmap:
121 for f in funcmap:
122 l = [f(n) for n, dummy in lines]
122 l = [f(n) for n, dummy in lines]
123 if l:
123 if l:
124 m = max(map(len, l))
124 m = max(map(len, l))
125 pieces.append(["%*s" % (m, x) for x in l])
125 pieces.append(["%*s" % (m, x) for x in l])
126
126
127 if pieces:
127 if pieces:
128 for p, l in zip(zip(*pieces), lines):
128 for p, l in zip(zip(*pieces), lines):
129 ui.write("%s: %s" % (" ".join(p), l[1]))
129 ui.write("%s: %s" % (" ".join(p), l[1]))
130
130
131 def archive(ui, repo, dest, **opts):
131 def archive(ui, repo, dest, **opts):
132 '''create unversioned archive of a repository revision
132 '''create unversioned archive of a repository revision
133
133
134 By default, the revision used is the parent of the working
134 By default, the revision used is the parent of the working
135 directory; use "-r" to specify a different revision.
135 directory; use "-r" to specify a different revision.
136
136
137 To specify the type of archive to create, use "-t". Valid
137 To specify the type of archive to create, use "-t". Valid
138 types are:
138 types are:
139
139
140 "files" (default): a directory full of files
140 "files" (default): a directory full of files
141 "tar": tar archive, uncompressed
141 "tar": tar archive, uncompressed
142 "tbz2": tar archive, compressed using bzip2
142 "tbz2": tar archive, compressed using bzip2
143 "tgz": tar archive, compressed using gzip
143 "tgz": tar archive, compressed using gzip
144 "uzip": zip archive, uncompressed
144 "uzip": zip archive, uncompressed
145 "zip": zip archive, compressed using deflate
145 "zip": zip archive, compressed using deflate
146
146
147 The exact name of the destination archive or directory is given
147 The exact name of the destination archive or directory is given
148 using a format string; see "hg help export" for details.
148 using a format string; see "hg help export" for details.
149
149
150 Each member added to an archive file has a directory prefix
150 Each member added to an archive file has a directory prefix
151 prepended. Use "-p" to specify a format string for the prefix.
151 prepended. Use "-p" to specify a format string for the prefix.
152 The default is the basename of the archive, with suffixes removed.
152 The default is the basename of the archive, with suffixes removed.
153 '''
153 '''
154
154
155 ctx = repo.changectx(opts['rev'])
155 ctx = repo.changectx(opts['rev'])
156 if not ctx:
156 if not ctx:
157 raise util.Abort(_('repository has no revisions'))
157 raise util.Abort(_('repository has no revisions'))
158 node = ctx.node()
158 node = ctx.node()
159 dest = cmdutil.make_filename(repo, dest, node)
159 dest = cmdutil.make_filename(repo, dest, node)
160 if os.path.realpath(dest) == repo.root:
160 if os.path.realpath(dest) == repo.root:
161 raise util.Abort(_('repository root cannot be destination'))
161 raise util.Abort(_('repository root cannot be destination'))
162 dummy, matchfn, dummy = cmdutil.matchpats(repo, [], opts)
162 dummy, matchfn, dummy = cmdutil.matchpats(repo, [], opts)
163 kind = opts.get('type') or 'files'
163 kind = opts.get('type') or 'files'
164 prefix = opts['prefix']
164 prefix = opts['prefix']
165 if dest == '-':
165 if dest == '-':
166 if kind == 'files':
166 if kind == 'files':
167 raise util.Abort(_('cannot archive plain files to stdout'))
167 raise util.Abort(_('cannot archive plain files to stdout'))
168 dest = sys.stdout
168 dest = sys.stdout
169 if not prefix: prefix = os.path.basename(repo.root) + '-%h'
169 if not prefix: prefix = os.path.basename(repo.root) + '-%h'
170 prefix = cmdutil.make_filename(repo, prefix, node)
170 prefix = cmdutil.make_filename(repo, prefix, node)
171 archival.archive(repo, dest, node, kind, not opts['no_decode'],
171 archival.archive(repo, dest, node, kind, not opts['no_decode'],
172 matchfn, prefix)
172 matchfn, prefix)
173
173
174 def backout(ui, repo, node=None, rev=None, **opts):
174 def backout(ui, repo, node=None, rev=None, **opts):
175 '''reverse effect of earlier changeset
175 '''reverse effect of earlier changeset
176
176
177 Commit the backed out changes as a new changeset. The new
177 Commit the backed out changes as a new changeset. The new
178 changeset is a child of the backed out changeset.
178 changeset is a child of the backed out changeset.
179
179
180 If you back out a changeset other than the tip, a new head is
180 If you back out a changeset other than the tip, a new head is
181 created. This head will be the new tip and you should merge this
181 created. This head will be the new tip and you should merge this
182 backout changeset with another head (current one by default).
182 backout changeset with another head (current one by default).
183
183
184 The --merge option remembers the parent of the working directory
184 The --merge option remembers the parent of the working directory
185 before starting the backout, then merges the new head with that
185 before starting the backout, then merges the new head with that
186 changeset afterwards. This saves you from doing the merge by
186 changeset afterwards. This saves you from doing the merge by
187 hand. The result of this merge is not committed, as for a normal
187 hand. The result of this merge is not committed, as for a normal
188 merge.
188 merge.
189
189
190 See 'hg help dates' for a list of formats valid for -d/--date.
190 See 'hg help dates' for a list of formats valid for -d/--date.
191 '''
191 '''
192 if rev and node:
192 if rev and node:
193 raise util.Abort(_("please specify just one revision"))
193 raise util.Abort(_("please specify just one revision"))
194
194
195 if not rev:
195 if not rev:
196 rev = node
196 rev = node
197
197
198 if not rev:
198 if not rev:
199 raise util.Abort(_("please specify a revision to backout"))
199 raise util.Abort(_("please specify a revision to backout"))
200
200
201 date = opts.get('date')
201 date = opts.get('date')
202 if date:
202 if date:
203 opts['date'] = util.parsedate(date)
203 opts['date'] = util.parsedate(date)
204
204
205 cmdutil.bail_if_changed(repo)
205 cmdutil.bail_if_changed(repo)
206 node = repo.lookup(rev)
206 node = repo.lookup(rev)
207
207
208 op1, op2 = repo.dirstate.parents()
208 op1, op2 = repo.dirstate.parents()
209 a = repo.changelog.ancestor(op1, node)
209 a = repo.changelog.ancestor(op1, node)
210 if a != node:
210 if a != node:
211 raise util.Abort(_('cannot back out change on a different branch'))
211 raise util.Abort(_('cannot back out change on a different branch'))
212
212
213 p1, p2 = repo.changelog.parents(node)
213 p1, p2 = repo.changelog.parents(node)
214 if p1 == nullid:
214 if p1 == nullid:
215 raise util.Abort(_('cannot back out a change with no parents'))
215 raise util.Abort(_('cannot back out a change with no parents'))
216 if p2 != nullid:
216 if p2 != nullid:
217 if not opts['parent']:
217 if not opts['parent']:
218 raise util.Abort(_('cannot back out a merge changeset without '
218 raise util.Abort(_('cannot back out a merge changeset without '
219 '--parent'))
219 '--parent'))
220 p = repo.lookup(opts['parent'])
220 p = repo.lookup(opts['parent'])
221 if p not in (p1, p2):
221 if p not in (p1, p2):
222 raise util.Abort(_('%s is not a parent of %s') %
222 raise util.Abort(_('%s is not a parent of %s') %
223 (short(p), short(node)))
223 (short(p), short(node)))
224 parent = p
224 parent = p
225 else:
225 else:
226 if opts['parent']:
226 if opts['parent']:
227 raise util.Abort(_('cannot use --parent on non-merge changeset'))
227 raise util.Abort(_('cannot use --parent on non-merge changeset'))
228 parent = p1
228 parent = p1
229
229
230 hg.clean(repo, node, show_stats=False)
230 hg.clean(repo, node, show_stats=False)
231 revert_opts = opts.copy()
231 revert_opts = opts.copy()
232 revert_opts['date'] = None
232 revert_opts['date'] = None
233 revert_opts['all'] = True
233 revert_opts['all'] = True
234 revert_opts['rev'] = hex(parent)
234 revert_opts['rev'] = hex(parent)
235 revert_opts['no_backup'] = None
235 revert_opts['no_backup'] = None
236 revert(ui, repo, **revert_opts)
236 revert(ui, repo, **revert_opts)
237 commit_opts = opts.copy()
237 commit_opts = opts.copy()
238 commit_opts['addremove'] = False
238 commit_opts['addremove'] = False
239 if not commit_opts['message'] and not commit_opts['logfile']:
239 if not commit_opts['message'] and not commit_opts['logfile']:
240 commit_opts['message'] = _("Backed out changeset %s") % (short(node))
240 commit_opts['message'] = _("Backed out changeset %s") % (short(node))
241 commit_opts['force_editor'] = True
241 commit_opts['force_editor'] = True
242 commit(ui, repo, **commit_opts)
242 commit(ui, repo, **commit_opts)
243 def nice(node):
243 def nice(node):
244 return '%d:%s' % (repo.changelog.rev(node), short(node))
244 return '%d:%s' % (repo.changelog.rev(node), short(node))
245 ui.status(_('changeset %s backs out changeset %s\n') %
245 ui.status(_('changeset %s backs out changeset %s\n') %
246 (nice(repo.changelog.tip()), nice(node)))
246 (nice(repo.changelog.tip()), nice(node)))
247 if op1 != node:
247 if op1 != node:
248 hg.clean(repo, op1, show_stats=False)
248 hg.clean(repo, op1, show_stats=False)
249 if opts['merge']:
249 if opts['merge']:
250 ui.status(_('merging with changeset %s\n') % nice(repo.changelog.tip()))
250 ui.status(_('merging with changeset %s\n') % nice(repo.changelog.tip()))
251 hg.merge(repo, hex(repo.changelog.tip()))
251 hg.merge(repo, hex(repo.changelog.tip()))
252 else:
252 else:
253 ui.status(_('the backout changeset is a new head - '
253 ui.status(_('the backout changeset is a new head - '
254 'do not forget to merge\n'))
254 'do not forget to merge\n'))
255 ui.status(_('(use "backout --merge" '
255 ui.status(_('(use "backout --merge" '
256 'if you want to auto-merge)\n'))
256 'if you want to auto-merge)\n'))
257
257
258 def bisect(ui, repo, rev=None, extra=None,
258 def bisect(ui, repo, rev=None, extra=None,
259 reset=None, good=None, bad=None, skip=None, noupdate=None):
259 reset=None, good=None, bad=None, skip=None, noupdate=None):
260 """subdivision search of changesets
260 """subdivision search of changesets
261
261
262 This command helps to find changesets which introduce problems.
262 This command helps to find changesets which introduce problems.
263 To use, mark the earliest changeset you know exhibits the problem
263 To use, mark the earliest changeset you know exhibits the problem
264 as bad, then mark the latest changeset which is free from the
264 as bad, then mark the latest changeset which is free from the
265 problem as good. Bisect will update your working directory to a
265 problem as good. Bisect will update your working directory to a
266 revision for testing. Once you have performed tests, mark the
266 revision for testing. Once you have performed tests, mark the
267 working directory as bad or good and bisect will either update to
267 working directory as bad or good and bisect will either update to
268 another candidate changeset or announce that it has found the bad
268 another candidate changeset or announce that it has found the bad
269 revision.
269 revision.
270 """
270 """
271 # backward compatibility
271 # backward compatibility
272 if rev in "good bad reset init".split():
272 if rev in "good bad reset init".split():
273 ui.warn(_("(use of 'hg bisect <cmd>' is deprecated)\n"))
273 ui.warn(_("(use of 'hg bisect <cmd>' is deprecated)\n"))
274 cmd, rev, extra = rev, extra, None
274 cmd, rev, extra = rev, extra, None
275 if cmd == "good":
275 if cmd == "good":
276 good = True
276 good = True
277 elif cmd == "bad":
277 elif cmd == "bad":
278 bad = True
278 bad = True
279 else:
279 else:
280 reset = True
280 reset = True
281 elif extra or good + bad + skip + reset > 1:
281 elif extra or good + bad + skip + reset > 1:
282 raise util.Abort("Incompatible arguments")
282 raise util.Abort("Incompatible arguments")
283
283
284 if reset:
284 if reset:
285 p = repo.join("bisect.state")
285 p = repo.join("bisect.state")
286 if os.path.exists(p):
286 if os.path.exists(p):
287 os.unlink(p)
287 os.unlink(p)
288 return
288 return
289
289
290 # load state
290 # load state
291 state = {'good': [], 'bad': [], 'skip': []}
291 state = {'good': [], 'bad': [], 'skip': []}
292 if os.path.exists(repo.join("bisect.state")):
292 if os.path.exists(repo.join("bisect.state")):
293 for l in repo.opener("bisect.state"):
293 for l in repo.opener("bisect.state"):
294 kind, node = l[:-1].split()
294 kind, node = l[:-1].split()
295 node = repo.lookup(node)
295 node = repo.lookup(node)
296 if kind not in state:
296 if kind not in state:
297 raise util.Abort(_("unknown bisect kind %s") % kind)
297 raise util.Abort(_("unknown bisect kind %s") % kind)
298 state[kind].append(node)
298 state[kind].append(node)
299
299
300 # update state
300 # update state
301 node = repo.lookup(rev or '.')
301 node = repo.lookup(rev or '.')
302 if good:
302 if good:
303 state['good'].append(node)
303 state['good'].append(node)
304 elif bad:
304 elif bad:
305 state['bad'].append(node)
305 state['bad'].append(node)
306 elif skip:
306 elif skip:
307 state['skip'].append(node)
307 state['skip'].append(node)
308
308
309 # save state
309 # save state
310 f = repo.opener("bisect.state", "w", atomictemp=True)
310 f = repo.opener("bisect.state", "w", atomictemp=True)
311 wlock = repo.wlock()
311 wlock = repo.wlock()
312 try:
312 try:
313 for kind in state:
313 for kind in state:
314 for node in state[kind]:
314 for node in state[kind]:
315 f.write("%s %s\n" % (kind, hex(node)))
315 f.write("%s %s\n" % (kind, hex(node)))
316 f.rename()
316 f.rename()
317 finally:
317 finally:
318 del wlock
318 del wlock
319
319
320 if not state['good'] or not state['bad']:
320 if not state['good'] or not state['bad']:
321 return
321 return
322
322
323 # actually bisect
323 # actually bisect
324 node, changesets, good = hbisect.bisect(repo.changelog, state)
324 node, changesets, good = hbisect.bisect(repo.changelog, state)
325 if changesets == 0:
325 if changesets == 0:
326 ui.write(_("The first %s revision is:\n") % (good and "good" or "bad"))
326 ui.write(_("The first %s revision is:\n") % (good and "good" or "bad"))
327 displayer = cmdutil.show_changeset(ui, repo, {})
327 displayer = cmdutil.show_changeset(ui, repo, {})
328 displayer.show(changenode=node)
328 displayer.show(changenode=node)
329 elif node is not None:
329 elif node is not None:
330 # compute the approximate number of remaining tests
330 # compute the approximate number of remaining tests
331 tests, size = 0, 2
331 tests, size = 0, 2
332 while size <= changesets:
332 while size <= changesets:
333 tests, size = tests + 1, size * 2
333 tests, size = tests + 1, size * 2
334 rev = repo.changelog.rev(node)
334 rev = repo.changelog.rev(node)
335 ui.write(_("Testing changeset %s:%s "
335 ui.write(_("Testing changeset %s:%s "
336 "(%s changesets remaining, ~%s tests)\n")
336 "(%s changesets remaining, ~%s tests)\n")
337 % (rev, short(node), changesets, tests))
337 % (rev, short(node), changesets, tests))
338 if not noupdate:
338 if not noupdate:
339 cmdutil.bail_if_changed(repo)
339 cmdutil.bail_if_changed(repo)
340 return hg.clean(repo, node)
340 return hg.clean(repo, node)
341
341
342 def branch(ui, repo, label=None, **opts):
342 def branch(ui, repo, label=None, **opts):
343 """set or show the current branch name
343 """set or show the current branch name
344
344
345 With no argument, show the current branch name. With one argument,
345 With no argument, show the current branch name. With one argument,
346 set the working directory branch name (the branch does not exist in
346 set the working directory branch name (the branch does not exist in
347 the repository until the next commit).
347 the repository until the next commit).
348
348
349 Unless --force is specified, branch will not let you set a
349 Unless --force is specified, branch will not let you set a
350 branch name that shadows an existing branch.
350 branch name that shadows an existing branch.
351
351
352 Use the command 'hg update' to switch to an existing branch.
352 Use the command 'hg update' to switch to an existing branch.
353 """
353 """
354
354
355 if label:
355 if label:
356 if not opts.get('force') and label in repo.branchtags():
356 if not opts.get('force') and label in repo.branchtags():
357 if label not in [p.branch() for p in repo.workingctx().parents()]:
357 if label not in [p.branch() for p in repo.workingctx().parents()]:
358 raise util.Abort(_('a branch of the same name already exists'
358 raise util.Abort(_('a branch of the same name already exists'
359 ' (use --force to override)'))
359 ' (use --force to override)'))
360 repo.dirstate.setbranch(util.fromlocal(label))
360 repo.dirstate.setbranch(util.fromlocal(label))
361 ui.status(_('marked working directory as branch %s\n') % label)
361 ui.status(_('marked working directory as branch %s\n') % label)
362 else:
362 else:
363 ui.write("%s\n" % util.tolocal(repo.dirstate.branch()))
363 ui.write("%s\n" % util.tolocal(repo.dirstate.branch()))
364
364
365 def branches(ui, repo, active=False):
365 def branches(ui, repo, active=False):
366 """list repository named branches
366 """list repository named branches
367
367
368 List the repository's named branches, indicating which ones are
368 List the repository's named branches, indicating which ones are
369 inactive. If active is specified, only show active branches.
369 inactive. If active is specified, only show active branches.
370
370
371 A branch is considered active if it contains unmerged heads.
371 A branch is considered active if it contains unmerged heads.
372
372
373 Use the command 'hg update' to switch to an existing branch.
373 Use the command 'hg update' to switch to an existing branch.
374 """
374 """
375 b = repo.branchtags()
375 b = repo.branchtags()
376 heads = dict.fromkeys(repo.heads(), 1)
376 heads = dict.fromkeys(repo.heads(), 1)
377 l = [((n in heads), repo.changelog.rev(n), n, t) for t, n in b.items()]
377 l = [((n in heads), repo.changelog.rev(n), n, t) for t, n in b.items()]
378 l.sort()
378 l.sort()
379 l.reverse()
379 l.reverse()
380 for ishead, r, n, t in l:
380 for ishead, r, n, t in l:
381 if active and not ishead:
381 if active and not ishead:
382 # If we're only displaying active branches, abort the loop on
382 # If we're only displaying active branches, abort the loop on
383 # encountering the first inactive head
383 # encountering the first inactive head
384 break
384 break
385 else:
385 else:
386 hexfunc = ui.debugflag and hex or short
386 hexfunc = ui.debugflag and hex or short
387 if ui.quiet:
387 if ui.quiet:
388 ui.write("%s\n" % t)
388 ui.write("%s\n" % t)
389 else:
389 else:
390 spaces = " " * (30 - util.locallen(t))
390 spaces = " " * (30 - util.locallen(t))
391 # The code only gets here if inactive branches are being
391 # The code only gets here if inactive branches are being
392 # displayed or the branch is active.
392 # displayed or the branch is active.
393 isinactive = ((not ishead) and " (inactive)") or ''
393 isinactive = ((not ishead) and " (inactive)") or ''
394 ui.write("%s%s %s:%s%s\n" % (t, spaces, r, hexfunc(n), isinactive))
394 ui.write("%s%s %s:%s%s\n" % (t, spaces, r, hexfunc(n), isinactive))
395
395
396 def bundle(ui, repo, fname, dest=None, **opts):
396 def bundle(ui, repo, fname, dest=None, **opts):
397 """create a changegroup file
397 """create a changegroup file
398
398
399 Generate a compressed changegroup file collecting changesets not
399 Generate a compressed changegroup file collecting changesets not
400 found in the other repository.
400 found in the other repository.
401
401
402 If no destination repository is specified the destination is
402 If no destination repository is specified the destination is
403 assumed to have all the nodes specified by one or more --base
403 assumed to have all the nodes specified by one or more --base
404 parameters. To create a bundle containing all changesets, use
404 parameters. To create a bundle containing all changesets, use
405 --all (or --base null).
405 --all (or --base null).
406
406
407 The bundle file can then be transferred using conventional means and
407 The bundle file can then be transferred using conventional means and
408 applied to another repository with the unbundle or pull command.
408 applied to another repository with the unbundle or pull command.
409 This is useful when direct push and pull are not available or when
409 This is useful when direct push and pull are not available or when
410 exporting an entire repository is undesirable.
410 exporting an entire repository is undesirable.
411
411
412 Applying bundles preserves all changeset contents including
412 Applying bundles preserves all changeset contents including
413 permissions, copy/rename information, and revision history.
413 permissions, copy/rename information, and revision history.
414 """
414 """
415 revs = opts.get('rev') or None
415 revs = opts.get('rev') or None
416 if revs:
416 if revs:
417 revs = [repo.lookup(rev) for rev in revs]
417 revs = [repo.lookup(rev) for rev in revs]
418 if opts.get('all'):
418 if opts.get('all'):
419 base = ['null']
419 base = ['null']
420 else:
420 else:
421 base = opts.get('base')
421 base = opts.get('base')
422 if base:
422 if base:
423 if dest:
423 if dest:
424 raise util.Abort(_("--base is incompatible with specifiying "
424 raise util.Abort(_("--base is incompatible with specifiying "
425 "a destination"))
425 "a destination"))
426 base = [repo.lookup(rev) for rev in base]
426 base = [repo.lookup(rev) for rev in base]
427 # create the right base
427 # create the right base
428 # XXX: nodesbetween / changegroup* should be "fixed" instead
428 # XXX: nodesbetween / changegroup* should be "fixed" instead
429 o = []
429 o = []
430 has = {nullid: None}
430 has = {nullid: None}
431 for n in base:
431 for n in base:
432 has.update(repo.changelog.reachable(n))
432 has.update(repo.changelog.reachable(n))
433 if revs:
433 if revs:
434 visit = list(revs)
434 visit = list(revs)
435 else:
435 else:
436 visit = repo.changelog.heads()
436 visit = repo.changelog.heads()
437 seen = {}
437 seen = {}
438 while visit:
438 while visit:
439 n = visit.pop(0)
439 n = visit.pop(0)
440 parents = [p for p in repo.changelog.parents(n) if p not in has]
440 parents = [p for p in repo.changelog.parents(n) if p not in has]
441 if len(parents) == 0:
441 if len(parents) == 0:
442 o.insert(0, n)
442 o.insert(0, n)
443 else:
443 else:
444 for p in parents:
444 for p in parents:
445 if p not in seen:
445 if p not in seen:
446 seen[p] = 1
446 seen[p] = 1
447 visit.append(p)
447 visit.append(p)
448 else:
448 else:
449 cmdutil.setremoteconfig(ui, opts)
449 cmdutil.setremoteconfig(ui, opts)
450 dest, revs, checkout = hg.parseurl(
450 dest, revs, checkout = hg.parseurl(
451 ui.expandpath(dest or 'default-push', dest or 'default'), revs)
451 ui.expandpath(dest or 'default-push', dest or 'default'), revs)
452 other = hg.repository(ui, dest)
452 other = hg.repository(ui, dest)
453 o = repo.findoutgoing(other, force=opts['force'])
453 o = repo.findoutgoing(other, force=opts['force'])
454
454
455 if revs:
455 if revs:
456 cg = repo.changegroupsubset(o, revs, 'bundle')
456 cg = repo.changegroupsubset(o, revs, 'bundle')
457 else:
457 else:
458 cg = repo.changegroup(o, 'bundle')
458 cg = repo.changegroup(o, 'bundle')
459 changegroup.writebundle(cg, fname, "HG10BZ")
459 changegroup.writebundle(cg, fname, "HG10BZ")
460
460
461 def cat(ui, repo, file1, *pats, **opts):
461 def cat(ui, repo, file1, *pats, **opts):
462 """output the current or given revision of files
462 """output the current or given revision of files
463
463
464 Print the specified files as they were at the given revision.
464 Print the specified files as they were at the given revision.
465 If no revision is given, the parent of the working directory is used,
465 If no revision is given, the parent of the working directory is used,
466 or tip if no revision is checked out.
466 or tip if no revision is checked out.
467
467
468 Output may be to a file, in which case the name of the file is
468 Output may be to a file, in which case the name of the file is
469 given using a format string. The formatting rules are the same as
469 given using a format string. The formatting rules are the same as
470 for the export command, with the following additions:
470 for the export command, with the following additions:
471
471
472 %s basename of file being printed
472 %s basename of file being printed
473 %d dirname of file being printed, or '.' if in repo root
473 %d dirname of file being printed, or '.' if in repo root
474 %p root-relative path name of file being printed
474 %p root-relative path name of file being printed
475 """
475 """
476 ctx = repo.changectx(opts['rev'])
476 ctx = repo.changectx(opts['rev'])
477 err = 1
477 err = 1
478 for src, abs, rel, exact in cmdutil.walk(repo, (file1,) + pats, opts,
478 for src, abs, rel, exact in cmdutil.walk(repo, (file1,) + pats, opts,
479 ctx.node()):
479 ctx.node()):
480 fp = cmdutil.make_file(repo, opts['output'], ctx.node(), pathname=abs)
480 fp = cmdutil.make_file(repo, opts['output'], ctx.node(), pathname=abs)
481 data = ctx.filectx(abs).data()
481 data = ctx.filectx(abs).data()
482 if opts.get('decode'):
482 if opts.get('decode'):
483 data = repo.wwritedata(abs, data)
483 data = repo.wwritedata(abs, data)
484 fp.write(data)
484 fp.write(data)
485 err = 0
485 err = 0
486 return err
486 return err
487
487
488 def clone(ui, source, dest=None, **opts):
488 def clone(ui, source, dest=None, **opts):
489 """make a copy of an existing repository
489 """make a copy of an existing repository
490
490
491 Create a copy of an existing repository in a new directory.
491 Create a copy of an existing repository in a new directory.
492
492
493 If no destination directory name is specified, it defaults to the
493 If no destination directory name is specified, it defaults to the
494 basename of the source.
494 basename of the source.
495
495
496 The location of the source is added to the new repository's
496 The location of the source is added to the new repository's
497 .hg/hgrc file, as the default to be used for future pulls.
497 .hg/hgrc file, as the default to be used for future pulls.
498
498
499 For efficiency, hardlinks are used for cloning whenever the source
499 For efficiency, hardlinks are used for cloning whenever the source
500 and destination are on the same filesystem (note this applies only
500 and destination are on the same filesystem (note this applies only
501 to the repository data, not to the checked out files). Some
501 to the repository data, not to the checked out files). Some
502 filesystems, such as AFS, implement hardlinking incorrectly, but
502 filesystems, such as AFS, implement hardlinking incorrectly, but
503 do not report errors. In these cases, use the --pull option to
503 do not report errors. In these cases, use the --pull option to
504 avoid hardlinking.
504 avoid hardlinking.
505
505
506 You can safely clone repositories and checked out files using full
506 You can safely clone repositories and checked out files using full
507 hardlinks with
507 hardlinks with
508
508
509 $ cp -al REPO REPOCLONE
509 $ cp -al REPO REPOCLONE
510
510
511 which is the fastest way to clone. However, the operation is not
511 which is the fastest way to clone. However, the operation is not
512 atomic (making sure REPO is not modified during the operation is
512 atomic (making sure REPO is not modified during the operation is
513 up to you) and you have to make sure your editor breaks hardlinks
513 up to you) and you have to make sure your editor breaks hardlinks
514 (Emacs and most Linux Kernel tools do so).
514 (Emacs and most Linux Kernel tools do so).
515
515
516 If you use the -r option to clone up to a specific revision, no
516 If you use the -r option to clone up to a specific revision, no
517 subsequent revisions will be present in the cloned repository.
517 subsequent revisions will be present in the cloned repository.
518 This option implies --pull, even on local repositories.
518 This option implies --pull, even on local repositories.
519
519
520 See pull for valid source format details.
520 See pull for valid source format details.
521
521
522 It is possible to specify an ssh:// URL as the destination, but no
522 It is possible to specify an ssh:// URL as the destination, but no
523 .hg/hgrc and working directory will be created on the remote side.
523 .hg/hgrc and working directory will be created on the remote side.
524 Look at the help text for the pull command for important details
524 Look at the help text for the pull command for important details
525 about ssh:// URLs.
525 about ssh:// URLs.
526 """
526 """
527 cmdutil.setremoteconfig(ui, opts)
527 cmdutil.setremoteconfig(ui, opts)
528 hg.clone(ui, source, dest,
528 hg.clone(ui, source, dest,
529 pull=opts['pull'],
529 pull=opts['pull'],
530 stream=opts['uncompressed'],
530 stream=opts['uncompressed'],
531 rev=opts['rev'],
531 rev=opts['rev'],
532 update=not opts['noupdate'])
532 update=not opts['noupdate'])
533
533
534 def commit(ui, repo, *pats, **opts):
534 def commit(ui, repo, *pats, **opts):
535 """commit the specified files or all outstanding changes
535 """commit the specified files or all outstanding changes
536
536
537 Commit changes to the given files into the repository.
537 Commit changes to the given files into the repository.
538
538
539 If a list of files is omitted, all changes reported by "hg status"
539 If a list of files is omitted, all changes reported by "hg status"
540 will be committed.
540 will be committed.
541
541
542 If no commit message is specified, the configured editor is started to
542 If no commit message is specified, the configured editor is started to
543 enter a message.
543 enter a message.
544
544
545 See 'hg help dates' for a list of formats valid for -d/--date.
545 See 'hg help dates' for a list of formats valid for -d/--date.
546 """
546 """
547 def commitfunc(ui, repo, files, message, match, opts):
547 def commitfunc(ui, repo, files, message, match, opts):
548 return repo.commit(files, message, opts['user'], opts['date'], match,
548 return repo.commit(files, message, opts['user'], opts['date'], match,
549 force_editor=opts.get('force_editor'))
549 force_editor=opts.get('force_editor'))
550
551 heads = repo.changelog.heads()
550 cmdutil.commit(ui, repo, commitfunc, pats, opts)
552 cmdutil.commit(ui, repo, commitfunc, pats, opts)
553 if len(repo.changelog.heads()) > len(heads):
554 ui.status(_('created new head\n'))
551
555
552 def copy(ui, repo, *pats, **opts):
556 def copy(ui, repo, *pats, **opts):
553 """mark files as copied for the next commit
557 """mark files as copied for the next commit
554
558
555 Mark dest as having copies of source files. If dest is a
559 Mark dest as having copies of source files. If dest is a
556 directory, copies are put in that directory. If dest is a file,
560 directory, copies are put in that directory. If dest is a file,
557 there can only be one source.
561 there can only be one source.
558
562
559 By default, this command copies the contents of files as they
563 By default, this command copies the contents of files as they
560 stand in the working directory. If invoked with --after, the
564 stand in the working directory. If invoked with --after, the
561 operation is recorded, but no copying is performed.
565 operation is recorded, but no copying is performed.
562
566
563 This command takes effect in the next commit. To undo a copy
567 This command takes effect in the next commit. To undo a copy
564 before that, see hg revert.
568 before that, see hg revert.
565 """
569 """
566 wlock = repo.wlock(False)
570 wlock = repo.wlock(False)
567 try:
571 try:
568 return cmdutil.copy(ui, repo, pats, opts)
572 return cmdutil.copy(ui, repo, pats, opts)
569 finally:
573 finally:
570 del wlock
574 del wlock
571
575
572 def debugancestor(ui, repo, *args):
576 def debugancestor(ui, repo, *args):
573 """find the ancestor revision of two revisions in a given index"""
577 """find the ancestor revision of two revisions in a given index"""
574 if len(args) == 3:
578 if len(args) == 3:
575 index, rev1, rev2 = args
579 index, rev1, rev2 = args
576 r = revlog.revlog(util.opener(os.getcwd(), audit=False), index)
580 r = revlog.revlog(util.opener(os.getcwd(), audit=False), index)
577 lookup = r.lookup
581 lookup = r.lookup
578 elif len(args) == 2:
582 elif len(args) == 2:
579 if not repo:
583 if not repo:
580 raise util.Abort(_("There is no Mercurial repository here "
584 raise util.Abort(_("There is no Mercurial repository here "
581 "(.hg not found)"))
585 "(.hg not found)"))
582 rev1, rev2 = args
586 rev1, rev2 = args
583 r = repo.changelog
587 r = repo.changelog
584 lookup = repo.lookup
588 lookup = repo.lookup
585 else:
589 else:
586 raise util.Abort(_('either two or three arguments required'))
590 raise util.Abort(_('either two or three arguments required'))
587 a = r.ancestor(lookup(rev1), lookup(rev2))
591 a = r.ancestor(lookup(rev1), lookup(rev2))
588 ui.write("%d:%s\n" % (r.rev(a), hex(a)))
592 ui.write("%d:%s\n" % (r.rev(a), hex(a)))
589
593
590 def debugcomplete(ui, cmd='', **opts):
594 def debugcomplete(ui, cmd='', **opts):
591 """returns the completion list associated with the given command"""
595 """returns the completion list associated with the given command"""
592
596
593 if opts['options']:
597 if opts['options']:
594 options = []
598 options = []
595 otables = [globalopts]
599 otables = [globalopts]
596 if cmd:
600 if cmd:
597 aliases, entry = cmdutil.findcmd(ui, cmd, table)
601 aliases, entry = cmdutil.findcmd(ui, cmd, table)
598 otables.append(entry[1])
602 otables.append(entry[1])
599 for t in otables:
603 for t in otables:
600 for o in t:
604 for o in t:
601 if o[0]:
605 if o[0]:
602 options.append('-%s' % o[0])
606 options.append('-%s' % o[0])
603 options.append('--%s' % o[1])
607 options.append('--%s' % o[1])
604 ui.write("%s\n" % "\n".join(options))
608 ui.write("%s\n" % "\n".join(options))
605 return
609 return
606
610
607 clist = cmdutil.findpossible(ui, cmd, table).keys()
611 clist = cmdutil.findpossible(ui, cmd, table).keys()
608 clist.sort()
612 clist.sort()
609 ui.write("%s\n" % "\n".join(clist))
613 ui.write("%s\n" % "\n".join(clist))
610
614
611 def debugfsinfo(ui, path = "."):
615 def debugfsinfo(ui, path = "."):
612 file('.debugfsinfo', 'w').write('')
616 file('.debugfsinfo', 'w').write('')
613 ui.write('exec: %s\n' % (util.checkexec(path) and 'yes' or 'no'))
617 ui.write('exec: %s\n' % (util.checkexec(path) and 'yes' or 'no'))
614 ui.write('symlink: %s\n' % (util.checklink(path) and 'yes' or 'no'))
618 ui.write('symlink: %s\n' % (util.checklink(path) and 'yes' or 'no'))
615 ui.write('case-sensitive: %s\n' % (util.checkfolding('.debugfsinfo')
619 ui.write('case-sensitive: %s\n' % (util.checkfolding('.debugfsinfo')
616 and 'yes' or 'no'))
620 and 'yes' or 'no'))
617 os.unlink('.debugfsinfo')
621 os.unlink('.debugfsinfo')
618
622
619 def debugrebuildstate(ui, repo, rev=""):
623 def debugrebuildstate(ui, repo, rev=""):
620 """rebuild the dirstate as it would look like for the given revision"""
624 """rebuild the dirstate as it would look like for the given revision"""
621 if rev == "":
625 if rev == "":
622 rev = repo.changelog.tip()
626 rev = repo.changelog.tip()
623 ctx = repo.changectx(rev)
627 ctx = repo.changectx(rev)
624 files = ctx.manifest()
628 files = ctx.manifest()
625 wlock = repo.wlock()
629 wlock = repo.wlock()
626 try:
630 try:
627 repo.dirstate.rebuild(rev, files)
631 repo.dirstate.rebuild(rev, files)
628 finally:
632 finally:
629 del wlock
633 del wlock
630
634
631 def debugcheckstate(ui, repo):
635 def debugcheckstate(ui, repo):
632 """validate the correctness of the current dirstate"""
636 """validate the correctness of the current dirstate"""
633 parent1, parent2 = repo.dirstate.parents()
637 parent1, parent2 = repo.dirstate.parents()
634 m1 = repo.changectx(parent1).manifest()
638 m1 = repo.changectx(parent1).manifest()
635 m2 = repo.changectx(parent2).manifest()
639 m2 = repo.changectx(parent2).manifest()
636 errors = 0
640 errors = 0
637 for f in repo.dirstate:
641 for f in repo.dirstate:
638 state = repo.dirstate[f]
642 state = repo.dirstate[f]
639 if state in "nr" and f not in m1:
643 if state in "nr" and f not in m1:
640 ui.warn(_("%s in state %s, but not in manifest1\n") % (f, state))
644 ui.warn(_("%s in state %s, but not in manifest1\n") % (f, state))
641 errors += 1
645 errors += 1
642 if state in "a" and f in m1:
646 if state in "a" and f in m1:
643 ui.warn(_("%s in state %s, but also in manifest1\n") % (f, state))
647 ui.warn(_("%s in state %s, but also in manifest1\n") % (f, state))
644 errors += 1
648 errors += 1
645 if state in "m" and f not in m1 and f not in m2:
649 if state in "m" and f not in m1 and f not in m2:
646 ui.warn(_("%s in state %s, but not in either manifest\n") %
650 ui.warn(_("%s in state %s, but not in either manifest\n") %
647 (f, state))
651 (f, state))
648 errors += 1
652 errors += 1
649 for f in m1:
653 for f in m1:
650 state = repo.dirstate[f]
654 state = repo.dirstate[f]
651 if state not in "nrm":
655 if state not in "nrm":
652 ui.warn(_("%s in manifest1, but listed as state %s") % (f, state))
656 ui.warn(_("%s in manifest1, but listed as state %s") % (f, state))
653 errors += 1
657 errors += 1
654 if errors:
658 if errors:
655 error = _(".hg/dirstate inconsistent with current parent's manifest")
659 error = _(".hg/dirstate inconsistent with current parent's manifest")
656 raise util.Abort(error)
660 raise util.Abort(error)
657
661
658 def showconfig(ui, repo, *values, **opts):
662 def showconfig(ui, repo, *values, **opts):
659 """show combined config settings from all hgrc files
663 """show combined config settings from all hgrc files
660
664
661 With no args, print names and values of all config items.
665 With no args, print names and values of all config items.
662
666
663 With one arg of the form section.name, print just the value of
667 With one arg of the form section.name, print just the value of
664 that config item.
668 that config item.
665
669
666 With multiple args, print names and values of all config items
670 With multiple args, print names and values of all config items
667 with matching section names."""
671 with matching section names."""
668
672
669 untrusted = bool(opts.get('untrusted'))
673 untrusted = bool(opts.get('untrusted'))
670 if values:
674 if values:
671 if len([v for v in values if '.' in v]) > 1:
675 if len([v for v in values if '.' in v]) > 1:
672 raise util.Abort(_('only one config item permitted'))
676 raise util.Abort(_('only one config item permitted'))
673 for section, name, value in ui.walkconfig(untrusted=untrusted):
677 for section, name, value in ui.walkconfig(untrusted=untrusted):
674 sectname = section + '.' + name
678 sectname = section + '.' + name
675 if values:
679 if values:
676 for v in values:
680 for v in values:
677 if v == section:
681 if v == section:
678 ui.write('%s=%s\n' % (sectname, value))
682 ui.write('%s=%s\n' % (sectname, value))
679 elif v == sectname:
683 elif v == sectname:
680 ui.write(value, '\n')
684 ui.write(value, '\n')
681 else:
685 else:
682 ui.write('%s=%s\n' % (sectname, value))
686 ui.write('%s=%s\n' % (sectname, value))
683
687
684 def debugsetparents(ui, repo, rev1, rev2=None):
688 def debugsetparents(ui, repo, rev1, rev2=None):
685 """manually set the parents of the current working directory
689 """manually set the parents of the current working directory
686
690
687 This is useful for writing repository conversion tools, but should
691 This is useful for writing repository conversion tools, but should
688 be used with care.
692 be used with care.
689 """
693 """
690
694
691 if not rev2:
695 if not rev2:
692 rev2 = hex(nullid)
696 rev2 = hex(nullid)
693
697
694 wlock = repo.wlock()
698 wlock = repo.wlock()
695 try:
699 try:
696 repo.dirstate.setparents(repo.lookup(rev1), repo.lookup(rev2))
700 repo.dirstate.setparents(repo.lookup(rev1), repo.lookup(rev2))
697 finally:
701 finally:
698 del wlock
702 del wlock
699
703
700 def debugstate(ui, repo, nodates=None):
704 def debugstate(ui, repo, nodates=None):
701 """show the contents of the current dirstate"""
705 """show the contents of the current dirstate"""
702 k = repo.dirstate._map.items()
706 k = repo.dirstate._map.items()
703 k.sort()
707 k.sort()
704 timestr = ""
708 timestr = ""
705 showdate = not nodates
709 showdate = not nodates
706 for file_, ent in k:
710 for file_, ent in k:
707 if showdate:
711 if showdate:
708 if ent[3] == -1:
712 if ent[3] == -1:
709 # Pad or slice to locale representation
713 # Pad or slice to locale representation
710 locale_len = len(time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime(0)))
714 locale_len = len(time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime(0)))
711 timestr = 'unset'
715 timestr = 'unset'
712 timestr = timestr[:locale_len] + ' '*(locale_len - len(timestr))
716 timestr = timestr[:locale_len] + ' '*(locale_len - len(timestr))
713 else:
717 else:
714 timestr = time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime(ent[3]))
718 timestr = time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime(ent[3]))
715 if ent[1] & 020000:
719 if ent[1] & 020000:
716 mode = 'lnk'
720 mode = 'lnk'
717 else:
721 else:
718 mode = '%3o' % (ent[1] & 0777)
722 mode = '%3o' % (ent[1] & 0777)
719 ui.write("%c %s %10d %s%s\n" % (ent[0], mode, ent[2], timestr, file_))
723 ui.write("%c %s %10d %s%s\n" % (ent[0], mode, ent[2], timestr, file_))
720 for f in repo.dirstate.copies():
724 for f in repo.dirstate.copies():
721 ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f))
725 ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f))
722
726
723 def debugdata(ui, file_, rev):
727 def debugdata(ui, file_, rev):
724 """dump the contents of a data file revision"""
728 """dump the contents of a data file revision"""
725 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_[:-2] + ".i")
729 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_[:-2] + ".i")
726 try:
730 try:
727 ui.write(r.revision(r.lookup(rev)))
731 ui.write(r.revision(r.lookup(rev)))
728 except KeyError:
732 except KeyError:
729 raise util.Abort(_('invalid revision identifier %s') % rev)
733 raise util.Abort(_('invalid revision identifier %s') % rev)
730
734
731 def debugdate(ui, date, range=None, **opts):
735 def debugdate(ui, date, range=None, **opts):
732 """parse and display a date"""
736 """parse and display a date"""
733 if opts["extended"]:
737 if opts["extended"]:
734 d = util.parsedate(date, util.extendeddateformats)
738 d = util.parsedate(date, util.extendeddateformats)
735 else:
739 else:
736 d = util.parsedate(date)
740 d = util.parsedate(date)
737 ui.write("internal: %s %s\n" % d)
741 ui.write("internal: %s %s\n" % d)
738 ui.write("standard: %s\n" % util.datestr(d))
742 ui.write("standard: %s\n" % util.datestr(d))
739 if range:
743 if range:
740 m = util.matchdate(range)
744 m = util.matchdate(range)
741 ui.write("match: %s\n" % m(d[0]))
745 ui.write("match: %s\n" % m(d[0]))
742
746
743 def debugindex(ui, file_):
747 def debugindex(ui, file_):
744 """dump the contents of an index file"""
748 """dump the contents of an index file"""
745 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_)
749 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_)
746 ui.write(" rev offset length base linkrev" +
750 ui.write(" rev offset length base linkrev" +
747 " nodeid p1 p2\n")
751 " nodeid p1 p2\n")
748 for i in xrange(r.count()):
752 for i in xrange(r.count()):
749 node = r.node(i)
753 node = r.node(i)
750 try:
754 try:
751 pp = r.parents(node)
755 pp = r.parents(node)
752 except:
756 except:
753 pp = [nullid, nullid]
757 pp = [nullid, nullid]
754 ui.write("% 6d % 9d % 7d % 6d % 7d %s %s %s\n" % (
758 ui.write("% 6d % 9d % 7d % 6d % 7d %s %s %s\n" % (
755 i, r.start(i), r.length(i), r.base(i), r.linkrev(node),
759 i, r.start(i), r.length(i), r.base(i), r.linkrev(node),
756 short(node), short(pp[0]), short(pp[1])))
760 short(node), short(pp[0]), short(pp[1])))
757
761
758 def debugindexdot(ui, file_):
762 def debugindexdot(ui, file_):
759 """dump an index DAG as a .dot file"""
763 """dump an index DAG as a .dot file"""
760 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_)
764 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_)
761 ui.write("digraph G {\n")
765 ui.write("digraph G {\n")
762 for i in xrange(r.count()):
766 for i in xrange(r.count()):
763 node = r.node(i)
767 node = r.node(i)
764 pp = r.parents(node)
768 pp = r.parents(node)
765 ui.write("\t%d -> %d\n" % (r.rev(pp[0]), i))
769 ui.write("\t%d -> %d\n" % (r.rev(pp[0]), i))
766 if pp[1] != nullid:
770 if pp[1] != nullid:
767 ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i))
771 ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i))
768 ui.write("}\n")
772 ui.write("}\n")
769
773
770 def debuginstall(ui):
774 def debuginstall(ui):
771 '''test Mercurial installation'''
775 '''test Mercurial installation'''
772
776
773 def writetemp(contents):
777 def writetemp(contents):
774 (fd, name) = tempfile.mkstemp(prefix="hg-debuginstall-")
778 (fd, name) = tempfile.mkstemp(prefix="hg-debuginstall-")
775 f = os.fdopen(fd, "wb")
779 f = os.fdopen(fd, "wb")
776 f.write(contents)
780 f.write(contents)
777 f.close()
781 f.close()
778 return name
782 return name
779
783
780 problems = 0
784 problems = 0
781
785
782 # encoding
786 # encoding
783 ui.status(_("Checking encoding (%s)...\n") % util._encoding)
787 ui.status(_("Checking encoding (%s)...\n") % util._encoding)
784 try:
788 try:
785 util.fromlocal("test")
789 util.fromlocal("test")
786 except util.Abort, inst:
790 except util.Abort, inst:
787 ui.write(" %s\n" % inst)
791 ui.write(" %s\n" % inst)
788 ui.write(_(" (check that your locale is properly set)\n"))
792 ui.write(_(" (check that your locale is properly set)\n"))
789 problems += 1
793 problems += 1
790
794
791 # compiled modules
795 # compiled modules
792 ui.status(_("Checking extensions...\n"))
796 ui.status(_("Checking extensions...\n"))
793 try:
797 try:
794 import bdiff, mpatch, base85
798 import bdiff, mpatch, base85
795 except Exception, inst:
799 except Exception, inst:
796 ui.write(" %s\n" % inst)
800 ui.write(" %s\n" % inst)
797 ui.write(_(" One or more extensions could not be found"))
801 ui.write(_(" One or more extensions could not be found"))
798 ui.write(_(" (check that you compiled the extensions)\n"))
802 ui.write(_(" (check that you compiled the extensions)\n"))
799 problems += 1
803 problems += 1
800
804
801 # templates
805 # templates
802 ui.status(_("Checking templates...\n"))
806 ui.status(_("Checking templates...\n"))
803 try:
807 try:
804 import templater
808 import templater
805 t = templater.templater(templater.templatepath("map-cmdline.default"))
809 t = templater.templater(templater.templatepath("map-cmdline.default"))
806 except Exception, inst:
810 except Exception, inst:
807 ui.write(" %s\n" % inst)
811 ui.write(" %s\n" % inst)
808 ui.write(_(" (templates seem to have been installed incorrectly)\n"))
812 ui.write(_(" (templates seem to have been installed incorrectly)\n"))
809 problems += 1
813 problems += 1
810
814
811 # patch
815 # patch
812 ui.status(_("Checking patch...\n"))
816 ui.status(_("Checking patch...\n"))
813 patchproblems = 0
817 patchproblems = 0
814 a = "1\n2\n3\n4\n"
818 a = "1\n2\n3\n4\n"
815 b = "1\n2\n3\ninsert\n4\n"
819 b = "1\n2\n3\ninsert\n4\n"
816 fa = writetemp(a)
820 fa = writetemp(a)
817 d = mdiff.unidiff(a, None, b, None, os.path.basename(fa),
821 d = mdiff.unidiff(a, None, b, None, os.path.basename(fa),
818 os.path.basename(fa))
822 os.path.basename(fa))
819 fd = writetemp(d)
823 fd = writetemp(d)
820
824
821 files = {}
825 files = {}
822 try:
826 try:
823 patch.patch(fd, ui, cwd=os.path.dirname(fa), files=files)
827 patch.patch(fd, ui, cwd=os.path.dirname(fa), files=files)
824 except util.Abort, e:
828 except util.Abort, e:
825 ui.write(_(" patch call failed:\n"))
829 ui.write(_(" patch call failed:\n"))
826 ui.write(" " + str(e) + "\n")
830 ui.write(" " + str(e) + "\n")
827 patchproblems += 1
831 patchproblems += 1
828 else:
832 else:
829 if list(files) != [os.path.basename(fa)]:
833 if list(files) != [os.path.basename(fa)]:
830 ui.write(_(" unexpected patch output!\n"))
834 ui.write(_(" unexpected patch output!\n"))
831 patchproblems += 1
835 patchproblems += 1
832 a = file(fa).read()
836 a = file(fa).read()
833 if a != b:
837 if a != b:
834 ui.write(_(" patch test failed!\n"))
838 ui.write(_(" patch test failed!\n"))
835 patchproblems += 1
839 patchproblems += 1
836
840
837 if patchproblems:
841 if patchproblems:
838 if ui.config('ui', 'patch'):
842 if ui.config('ui', 'patch'):
839 ui.write(_(" (Current patch tool may be incompatible with patch,"
843 ui.write(_(" (Current patch tool may be incompatible with patch,"
840 " or misconfigured. Please check your .hgrc file)\n"))
844 " or misconfigured. Please check your .hgrc file)\n"))
841 else:
845 else:
842 ui.write(_(" Internal patcher failure, please report this error"
846 ui.write(_(" Internal patcher failure, please report this error"
843 " to http://www.selenic.com/mercurial/bts\n"))
847 " to http://www.selenic.com/mercurial/bts\n"))
844 problems += patchproblems
848 problems += patchproblems
845
849
846 os.unlink(fa)
850 os.unlink(fa)
847 os.unlink(fd)
851 os.unlink(fd)
848
852
849 # editor
853 # editor
850 ui.status(_("Checking commit editor...\n"))
854 ui.status(_("Checking commit editor...\n"))
851 editor = ui.geteditor()
855 editor = ui.geteditor()
852 cmdpath = util.find_exe(editor) or util.find_exe(editor.split()[0])
856 cmdpath = util.find_exe(editor) or util.find_exe(editor.split()[0])
853 if not cmdpath:
857 if not cmdpath:
854 if editor == 'vi':
858 if editor == 'vi':
855 ui.write(_(" No commit editor set and can't find vi in PATH\n"))
859 ui.write(_(" No commit editor set and can't find vi in PATH\n"))
856 ui.write(_(" (specify a commit editor in your .hgrc file)\n"))
860 ui.write(_(" (specify a commit editor in your .hgrc file)\n"))
857 else:
861 else:
858 ui.write(_(" Can't find editor '%s' in PATH\n") % editor)
862 ui.write(_(" Can't find editor '%s' in PATH\n") % editor)
859 ui.write(_(" (specify a commit editor in your .hgrc file)\n"))
863 ui.write(_(" (specify a commit editor in your .hgrc file)\n"))
860 problems += 1
864 problems += 1
861
865
862 # check username
866 # check username
863 ui.status(_("Checking username...\n"))
867 ui.status(_("Checking username...\n"))
864 user = os.environ.get("HGUSER")
868 user = os.environ.get("HGUSER")
865 if user is None:
869 if user is None:
866 user = ui.config("ui", "username")
870 user = ui.config("ui", "username")
867 if user is None:
871 if user is None:
868 user = os.environ.get("EMAIL")
872 user = os.environ.get("EMAIL")
869 if not user:
873 if not user:
870 ui.warn(" ")
874 ui.warn(" ")
871 ui.username()
875 ui.username()
872 ui.write(_(" (specify a username in your .hgrc file)\n"))
876 ui.write(_(" (specify a username in your .hgrc file)\n"))
873
877
874 if not problems:
878 if not problems:
875 ui.status(_("No problems detected\n"))
879 ui.status(_("No problems detected\n"))
876 else:
880 else:
877 ui.write(_("%s problems detected,"
881 ui.write(_("%s problems detected,"
878 " please check your install!\n") % problems)
882 " please check your install!\n") % problems)
879
883
880 return problems
884 return problems
881
885
882 def debugrename(ui, repo, file1, *pats, **opts):
886 def debugrename(ui, repo, file1, *pats, **opts):
883 """dump rename information"""
887 """dump rename information"""
884
888
885 ctx = repo.changectx(opts.get('rev', 'tip'))
889 ctx = repo.changectx(opts.get('rev', 'tip'))
886 for src, abs, rel, exact in cmdutil.walk(repo, (file1,) + pats, opts,
890 for src, abs, rel, exact in cmdutil.walk(repo, (file1,) + pats, opts,
887 ctx.node()):
891 ctx.node()):
888 fctx = ctx.filectx(abs)
892 fctx = ctx.filectx(abs)
889 m = fctx.filelog().renamed(fctx.filenode())
893 m = fctx.filelog().renamed(fctx.filenode())
890 if m:
894 if m:
891 ui.write(_("%s renamed from %s:%s\n") % (rel, m[0], hex(m[1])))
895 ui.write(_("%s renamed from %s:%s\n") % (rel, m[0], hex(m[1])))
892 else:
896 else:
893 ui.write(_("%s not renamed\n") % rel)
897 ui.write(_("%s not renamed\n") % rel)
894
898
895 def debugwalk(ui, repo, *pats, **opts):
899 def debugwalk(ui, repo, *pats, **opts):
896 """show how files match on given patterns"""
900 """show how files match on given patterns"""
897 items = list(cmdutil.walk(repo, pats, opts))
901 items = list(cmdutil.walk(repo, pats, opts))
898 if not items:
902 if not items:
899 return
903 return
900 fmt = '%%s %%-%ds %%-%ds %%s' % (
904 fmt = '%%s %%-%ds %%-%ds %%s' % (
901 max([len(abs) for (src, abs, rel, exact) in items]),
905 max([len(abs) for (src, abs, rel, exact) in items]),
902 max([len(rel) for (src, abs, rel, exact) in items]))
906 max([len(rel) for (src, abs, rel, exact) in items]))
903 for src, abs, rel, exact in items:
907 for src, abs, rel, exact in items:
904 line = fmt % (src, abs, rel, exact and 'exact' or '')
908 line = fmt % (src, abs, rel, exact and 'exact' or '')
905 ui.write("%s\n" % line.rstrip())
909 ui.write("%s\n" % line.rstrip())
906
910
907 def diff(ui, repo, *pats, **opts):
911 def diff(ui, repo, *pats, **opts):
908 """diff repository (or selected files)
912 """diff repository (or selected files)
909
913
910 Show differences between revisions for the specified files.
914 Show differences between revisions for the specified files.
911
915
912 Differences between files are shown using the unified diff format.
916 Differences between files are shown using the unified diff format.
913
917
914 NOTE: diff may generate unexpected results for merges, as it will
918 NOTE: diff may generate unexpected results for merges, as it will
915 default to comparing against the working directory's first parent
919 default to comparing against the working directory's first parent
916 changeset if no revisions are specified.
920 changeset if no revisions are specified.
917
921
918 When two revision arguments are given, then changes are shown
922 When two revision arguments are given, then changes are shown
919 between those revisions. If only one revision is specified then
923 between those revisions. If only one revision is specified then
920 that revision is compared to the working directory, and, when no
924 that revision is compared to the working directory, and, when no
921 revisions are specified, the working directory files are compared
925 revisions are specified, the working directory files are compared
922 to its parent.
926 to its parent.
923
927
924 Without the -a option, diff will avoid generating diffs of files
928 Without the -a option, diff will avoid generating diffs of files
925 it detects as binary. With -a, diff will generate a diff anyway,
929 it detects as binary. With -a, diff will generate a diff anyway,
926 probably with undesirable results.
930 probably with undesirable results.
927 """
931 """
928 node1, node2 = cmdutil.revpair(repo, opts['rev'])
932 node1, node2 = cmdutil.revpair(repo, opts['rev'])
929
933
930 fns, matchfn, anypats = cmdutil.matchpats(repo, pats, opts)
934 fns, matchfn, anypats = cmdutil.matchpats(repo, pats, opts)
931
935
932 patch.diff(repo, node1, node2, fns, match=matchfn,
936 patch.diff(repo, node1, node2, fns, match=matchfn,
933 opts=patch.diffopts(ui, opts))
937 opts=patch.diffopts(ui, opts))
934
938
935 def export(ui, repo, *changesets, **opts):
939 def export(ui, repo, *changesets, **opts):
936 """dump the header and diffs for one or more changesets
940 """dump the header and diffs for one or more changesets
937
941
938 Print the changeset header and diffs for one or more revisions.
942 Print the changeset header and diffs for one or more revisions.
939
943
940 The information shown in the changeset header is: author,
944 The information shown in the changeset header is: author,
941 changeset hash, parent(s) and commit comment.
945 changeset hash, parent(s) and commit comment.
942
946
943 NOTE: export may generate unexpected diff output for merge changesets,
947 NOTE: export may generate unexpected diff output for merge changesets,
944 as it will compare the merge changeset against its first parent only.
948 as it will compare the merge changeset against its first parent only.
945
949
946 Output may be to a file, in which case the name of the file is
950 Output may be to a file, in which case the name of the file is
947 given using a format string. The formatting rules are as follows:
951 given using a format string. The formatting rules are as follows:
948
952
949 %% literal "%" character
953 %% literal "%" character
950 %H changeset hash (40 bytes of hexadecimal)
954 %H changeset hash (40 bytes of hexadecimal)
951 %N number of patches being generated
955 %N number of patches being generated
952 %R changeset revision number
956 %R changeset revision number
953 %b basename of the exporting repository
957 %b basename of the exporting repository
954 %h short-form changeset hash (12 bytes of hexadecimal)
958 %h short-form changeset hash (12 bytes of hexadecimal)
955 %n zero-padded sequence number, starting at 1
959 %n zero-padded sequence number, starting at 1
956 %r zero-padded changeset revision number
960 %r zero-padded changeset revision number
957
961
958 Without the -a option, export will avoid generating diffs of files
962 Without the -a option, export will avoid generating diffs of files
959 it detects as binary. With -a, export will generate a diff anyway,
963 it detects as binary. With -a, export will generate a diff anyway,
960 probably with undesirable results.
964 probably with undesirable results.
961
965
962 With the --switch-parent option, the diff will be against the second
966 With the --switch-parent option, the diff will be against the second
963 parent. It can be useful to review a merge.
967 parent. It can be useful to review a merge.
964 """
968 """
965 if not changesets:
969 if not changesets:
966 raise util.Abort(_("export requires at least one changeset"))
970 raise util.Abort(_("export requires at least one changeset"))
967 revs = cmdutil.revrange(repo, changesets)
971 revs = cmdutil.revrange(repo, changesets)
968 if len(revs) > 1:
972 if len(revs) > 1:
969 ui.note(_('exporting patches:\n'))
973 ui.note(_('exporting patches:\n'))
970 else:
974 else:
971 ui.note(_('exporting patch:\n'))
975 ui.note(_('exporting patch:\n'))
972 patch.export(repo, revs, template=opts['output'],
976 patch.export(repo, revs, template=opts['output'],
973 switch_parent=opts['switch_parent'],
977 switch_parent=opts['switch_parent'],
974 opts=patch.diffopts(ui, opts))
978 opts=patch.diffopts(ui, opts))
975
979
976 def grep(ui, repo, pattern, *pats, **opts):
980 def grep(ui, repo, pattern, *pats, **opts):
977 """search for a pattern in specified files and revisions
981 """search for a pattern in specified files and revisions
978
982
979 Search revisions of files for a regular expression.
983 Search revisions of files for a regular expression.
980
984
981 This command behaves differently than Unix grep. It only accepts
985 This command behaves differently than Unix grep. It only accepts
982 Python/Perl regexps. It searches repository history, not the
986 Python/Perl regexps. It searches repository history, not the
983 working directory. It always prints the revision number in which
987 working directory. It always prints the revision number in which
984 a match appears.
988 a match appears.
985
989
986 By default, grep only prints output for the first revision of a
990 By default, grep only prints output for the first revision of a
987 file in which it finds a match. To get it to print every revision
991 file in which it finds a match. To get it to print every revision
988 that contains a change in match status ("-" for a match that
992 that contains a change in match status ("-" for a match that
989 becomes a non-match, or "+" for a non-match that becomes a match),
993 becomes a non-match, or "+" for a non-match that becomes a match),
990 use the --all flag.
994 use the --all flag.
991 """
995 """
992 reflags = 0
996 reflags = 0
993 if opts['ignore_case']:
997 if opts['ignore_case']:
994 reflags |= re.I
998 reflags |= re.I
995 try:
999 try:
996 regexp = re.compile(pattern, reflags)
1000 regexp = re.compile(pattern, reflags)
997 except Exception, inst:
1001 except Exception, inst:
998 ui.warn(_("grep: invalid match pattern: %s\n") % inst)
1002 ui.warn(_("grep: invalid match pattern: %s\n") % inst)
999 return None
1003 return None
1000 sep, eol = ':', '\n'
1004 sep, eol = ':', '\n'
1001 if opts['print0']:
1005 if opts['print0']:
1002 sep = eol = '\0'
1006 sep = eol = '\0'
1003
1007
1004 fcache = {}
1008 fcache = {}
1005 def getfile(fn):
1009 def getfile(fn):
1006 if fn not in fcache:
1010 if fn not in fcache:
1007 fcache[fn] = repo.file(fn)
1011 fcache[fn] = repo.file(fn)
1008 return fcache[fn]
1012 return fcache[fn]
1009
1013
1010 def matchlines(body):
1014 def matchlines(body):
1011 begin = 0
1015 begin = 0
1012 linenum = 0
1016 linenum = 0
1013 while True:
1017 while True:
1014 match = regexp.search(body, begin)
1018 match = regexp.search(body, begin)
1015 if not match:
1019 if not match:
1016 break
1020 break
1017 mstart, mend = match.span()
1021 mstart, mend = match.span()
1018 linenum += body.count('\n', begin, mstart) + 1
1022 linenum += body.count('\n', begin, mstart) + 1
1019 lstart = body.rfind('\n', begin, mstart) + 1 or begin
1023 lstart = body.rfind('\n', begin, mstart) + 1 or begin
1020 lend = body.find('\n', mend)
1024 lend = body.find('\n', mend)
1021 yield linenum, mstart - lstart, mend - lstart, body[lstart:lend]
1025 yield linenum, mstart - lstart, mend - lstart, body[lstart:lend]
1022 begin = lend + 1
1026 begin = lend + 1
1023
1027
1024 class linestate(object):
1028 class linestate(object):
1025 def __init__(self, line, linenum, colstart, colend):
1029 def __init__(self, line, linenum, colstart, colend):
1026 self.line = line
1030 self.line = line
1027 self.linenum = linenum
1031 self.linenum = linenum
1028 self.colstart = colstart
1032 self.colstart = colstart
1029 self.colend = colend
1033 self.colend = colend
1030
1034
1031 def __eq__(self, other):
1035 def __eq__(self, other):
1032 return self.line == other.line
1036 return self.line == other.line
1033
1037
1034 matches = {}
1038 matches = {}
1035 copies = {}
1039 copies = {}
1036 def grepbody(fn, rev, body):
1040 def grepbody(fn, rev, body):
1037 matches[rev].setdefault(fn, [])
1041 matches[rev].setdefault(fn, [])
1038 m = matches[rev][fn]
1042 m = matches[rev][fn]
1039 for lnum, cstart, cend, line in matchlines(body):
1043 for lnum, cstart, cend, line in matchlines(body):
1040 s = linestate(line, lnum, cstart, cend)
1044 s = linestate(line, lnum, cstart, cend)
1041 m.append(s)
1045 m.append(s)
1042
1046
1043 def difflinestates(a, b):
1047 def difflinestates(a, b):
1044 sm = difflib.SequenceMatcher(None, a, b)
1048 sm = difflib.SequenceMatcher(None, a, b)
1045 for tag, alo, ahi, blo, bhi in sm.get_opcodes():
1049 for tag, alo, ahi, blo, bhi in sm.get_opcodes():
1046 if tag == 'insert':
1050 if tag == 'insert':
1047 for i in xrange(blo, bhi):
1051 for i in xrange(blo, bhi):
1048 yield ('+', b[i])
1052 yield ('+', b[i])
1049 elif tag == 'delete':
1053 elif tag == 'delete':
1050 for i in xrange(alo, ahi):
1054 for i in xrange(alo, ahi):
1051 yield ('-', a[i])
1055 yield ('-', a[i])
1052 elif tag == 'replace':
1056 elif tag == 'replace':
1053 for i in xrange(alo, ahi):
1057 for i in xrange(alo, ahi):
1054 yield ('-', a[i])
1058 yield ('-', a[i])
1055 for i in xrange(blo, bhi):
1059 for i in xrange(blo, bhi):
1056 yield ('+', b[i])
1060 yield ('+', b[i])
1057
1061
1058 prev = {}
1062 prev = {}
1059 def display(fn, rev, states, prevstates):
1063 def display(fn, rev, states, prevstates):
1060 datefunc = ui.quiet and util.shortdate or util.datestr
1064 datefunc = ui.quiet and util.shortdate or util.datestr
1061 found = False
1065 found = False
1062 filerevmatches = {}
1066 filerevmatches = {}
1063 r = prev.get(fn, -1)
1067 r = prev.get(fn, -1)
1064 if opts['all']:
1068 if opts['all']:
1065 iter = difflinestates(states, prevstates)
1069 iter = difflinestates(states, prevstates)
1066 else:
1070 else:
1067 iter = [('', l) for l in prevstates]
1071 iter = [('', l) for l in prevstates]
1068 for change, l in iter:
1072 for change, l in iter:
1069 cols = [fn, str(r)]
1073 cols = [fn, str(r)]
1070 if opts['line_number']:
1074 if opts['line_number']:
1071 cols.append(str(l.linenum))
1075 cols.append(str(l.linenum))
1072 if opts['all']:
1076 if opts['all']:
1073 cols.append(change)
1077 cols.append(change)
1074 if opts['user']:
1078 if opts['user']:
1075 cols.append(ui.shortuser(get(r)[1]))
1079 cols.append(ui.shortuser(get(r)[1]))
1076 if opts.get('date'):
1080 if opts.get('date'):
1077 cols.append(datefunc(get(r)[2]))
1081 cols.append(datefunc(get(r)[2]))
1078 if opts['files_with_matches']:
1082 if opts['files_with_matches']:
1079 c = (fn, r)
1083 c = (fn, r)
1080 if c in filerevmatches:
1084 if c in filerevmatches:
1081 continue
1085 continue
1082 filerevmatches[c] = 1
1086 filerevmatches[c] = 1
1083 else:
1087 else:
1084 cols.append(l.line)
1088 cols.append(l.line)
1085 ui.write(sep.join(cols), eol)
1089 ui.write(sep.join(cols), eol)
1086 found = True
1090 found = True
1087 return found
1091 return found
1088
1092
1089 fstate = {}
1093 fstate = {}
1090 skip = {}
1094 skip = {}
1091 get = util.cachefunc(lambda r: repo.changectx(r).changeset())
1095 get = util.cachefunc(lambda r: repo.changectx(r).changeset())
1092 changeiter, matchfn = cmdutil.walkchangerevs(ui, repo, pats, get, opts)
1096 changeiter, matchfn = cmdutil.walkchangerevs(ui, repo, pats, get, opts)
1093 found = False
1097 found = False
1094 follow = opts.get('follow')
1098 follow = opts.get('follow')
1095 for st, rev, fns in changeiter:
1099 for st, rev, fns in changeiter:
1096 if st == 'window':
1100 if st == 'window':
1097 matches.clear()
1101 matches.clear()
1098 elif st == 'add':
1102 elif st == 'add':
1099 ctx = repo.changectx(rev)
1103 ctx = repo.changectx(rev)
1100 matches[rev] = {}
1104 matches[rev] = {}
1101 for fn in fns:
1105 for fn in fns:
1102 if fn in skip:
1106 if fn in skip:
1103 continue
1107 continue
1104 try:
1108 try:
1105 grepbody(fn, rev, getfile(fn).read(ctx.filenode(fn)))
1109 grepbody(fn, rev, getfile(fn).read(ctx.filenode(fn)))
1106 fstate.setdefault(fn, [])
1110 fstate.setdefault(fn, [])
1107 if follow:
1111 if follow:
1108 copied = getfile(fn).renamed(ctx.filenode(fn))
1112 copied = getfile(fn).renamed(ctx.filenode(fn))
1109 if copied:
1113 if copied:
1110 copies.setdefault(rev, {})[fn] = copied[0]
1114 copies.setdefault(rev, {})[fn] = copied[0]
1111 except revlog.LookupError:
1115 except revlog.LookupError:
1112 pass
1116 pass
1113 elif st == 'iter':
1117 elif st == 'iter':
1114 states = matches[rev].items()
1118 states = matches[rev].items()
1115 states.sort()
1119 states.sort()
1116 for fn, m in states:
1120 for fn, m in states:
1117 copy = copies.get(rev, {}).get(fn)
1121 copy = copies.get(rev, {}).get(fn)
1118 if fn in skip:
1122 if fn in skip:
1119 if copy:
1123 if copy:
1120 skip[copy] = True
1124 skip[copy] = True
1121 continue
1125 continue
1122 if fn in prev or fstate[fn]:
1126 if fn in prev or fstate[fn]:
1123 r = display(fn, rev, m, fstate[fn])
1127 r = display(fn, rev, m, fstate[fn])
1124 found = found or r
1128 found = found or r
1125 if r and not opts['all']:
1129 if r and not opts['all']:
1126 skip[fn] = True
1130 skip[fn] = True
1127 if copy:
1131 if copy:
1128 skip[copy] = True
1132 skip[copy] = True
1129 fstate[fn] = m
1133 fstate[fn] = m
1130 if copy:
1134 if copy:
1131 fstate[copy] = m
1135 fstate[copy] = m
1132 prev[fn] = rev
1136 prev[fn] = rev
1133
1137
1134 fstate = fstate.items()
1138 fstate = fstate.items()
1135 fstate.sort()
1139 fstate.sort()
1136 for fn, state in fstate:
1140 for fn, state in fstate:
1137 if fn in skip:
1141 if fn in skip:
1138 continue
1142 continue
1139 if fn not in copies.get(prev[fn], {}):
1143 if fn not in copies.get(prev[fn], {}):
1140 found = display(fn, rev, {}, state) or found
1144 found = display(fn, rev, {}, state) or found
1141 return (not found and 1) or 0
1145 return (not found and 1) or 0
1142
1146
1143 def heads(ui, repo, *branchrevs, **opts):
1147 def heads(ui, repo, *branchrevs, **opts):
1144 """show current repository heads or show branch heads
1148 """show current repository heads or show branch heads
1145
1149
1146 With no arguments, show all repository head changesets.
1150 With no arguments, show all repository head changesets.
1147
1151
1148 If branch or revisions names are given this will show the heads of
1152 If branch or revisions names are given this will show the heads of
1149 the specified branches or the branches those revisions are tagged
1153 the specified branches or the branches those revisions are tagged
1150 with.
1154 with.
1151
1155
1152 Repository "heads" are changesets that don't have child
1156 Repository "heads" are changesets that don't have child
1153 changesets. They are where development generally takes place and
1157 changesets. They are where development generally takes place and
1154 are the usual targets for update and merge operations.
1158 are the usual targets for update and merge operations.
1155
1159
1156 Branch heads are changesets that have a given branch tag, but have
1160 Branch heads are changesets that have a given branch tag, but have
1157 no child changesets with that tag. They are usually where
1161 no child changesets with that tag. They are usually where
1158 development on the given branch takes place.
1162 development on the given branch takes place.
1159 """
1163 """
1160 if opts['rev']:
1164 if opts['rev']:
1161 start = repo.lookup(opts['rev'])
1165 start = repo.lookup(opts['rev'])
1162 else:
1166 else:
1163 start = None
1167 start = None
1164 if not branchrevs:
1168 if not branchrevs:
1165 # Assume we're looking repo-wide heads if no revs were specified.
1169 # Assume we're looking repo-wide heads if no revs were specified.
1166 heads = repo.heads(start)
1170 heads = repo.heads(start)
1167 else:
1171 else:
1168 heads = []
1172 heads = []
1169 visitedset = util.set()
1173 visitedset = util.set()
1170 for branchrev in branchrevs:
1174 for branchrev in branchrevs:
1171 branch = repo.changectx(branchrev).branch()
1175 branch = repo.changectx(branchrev).branch()
1172 if branch in visitedset:
1176 if branch in visitedset:
1173 continue
1177 continue
1174 visitedset.add(branch)
1178 visitedset.add(branch)
1175 bheads = repo.branchheads(branch, start)
1179 bheads = repo.branchheads(branch, start)
1176 if not bheads:
1180 if not bheads:
1177 if branch != branchrev:
1181 if branch != branchrev:
1178 ui.warn(_("no changes on branch %s containing %s are "
1182 ui.warn(_("no changes on branch %s containing %s are "
1179 "reachable from %s\n")
1183 "reachable from %s\n")
1180 % (branch, branchrev, opts['rev']))
1184 % (branch, branchrev, opts['rev']))
1181 else:
1185 else:
1182 ui.warn(_("no changes on branch %s are reachable from %s\n")
1186 ui.warn(_("no changes on branch %s are reachable from %s\n")
1183 % (branch, opts['rev']))
1187 % (branch, opts['rev']))
1184 heads.extend(bheads)
1188 heads.extend(bheads)
1185 if not heads:
1189 if not heads:
1186 return 1
1190 return 1
1187 displayer = cmdutil.show_changeset(ui, repo, opts)
1191 displayer = cmdutil.show_changeset(ui, repo, opts)
1188 for n in heads:
1192 for n in heads:
1189 displayer.show(changenode=n)
1193 displayer.show(changenode=n)
1190
1194
1191 def help_(ui, name=None, with_version=False):
1195 def help_(ui, name=None, with_version=False):
1192 """show help for a command, extension, or list of commands
1196 """show help for a command, extension, or list of commands
1193
1197
1194 With no arguments, print a list of commands and short help.
1198 With no arguments, print a list of commands and short help.
1195
1199
1196 Given a command name, print help for that command.
1200 Given a command name, print help for that command.
1197
1201
1198 Given an extension name, print help for that extension, and the
1202 Given an extension name, print help for that extension, and the
1199 commands it provides."""
1203 commands it provides."""
1200 option_lists = []
1204 option_lists = []
1201
1205
1202 def addglobalopts(aliases):
1206 def addglobalopts(aliases):
1203 if ui.verbose:
1207 if ui.verbose:
1204 option_lists.append((_("global options:"), globalopts))
1208 option_lists.append((_("global options:"), globalopts))
1205 if name == 'shortlist':
1209 if name == 'shortlist':
1206 option_lists.append((_('use "hg help" for the full list '
1210 option_lists.append((_('use "hg help" for the full list '
1207 'of commands'), ()))
1211 'of commands'), ()))
1208 else:
1212 else:
1209 if name == 'shortlist':
1213 if name == 'shortlist':
1210 msg = _('use "hg help" for the full list of commands '
1214 msg = _('use "hg help" for the full list of commands '
1211 'or "hg -v" for details')
1215 'or "hg -v" for details')
1212 elif aliases:
1216 elif aliases:
1213 msg = _('use "hg -v help%s" to show aliases and '
1217 msg = _('use "hg -v help%s" to show aliases and '
1214 'global options') % (name and " " + name or "")
1218 'global options') % (name and " " + name or "")
1215 else:
1219 else:
1216 msg = _('use "hg -v help %s" to show global options') % name
1220 msg = _('use "hg -v help %s" to show global options') % name
1217 option_lists.append((msg, ()))
1221 option_lists.append((msg, ()))
1218
1222
1219 def helpcmd(name):
1223 def helpcmd(name):
1220 if with_version:
1224 if with_version:
1221 version_(ui)
1225 version_(ui)
1222 ui.write('\n')
1226 ui.write('\n')
1223 aliases, i = cmdutil.findcmd(ui, name, table)
1227 aliases, i = cmdutil.findcmd(ui, name, table)
1224 # synopsis
1228 # synopsis
1225 ui.write("%s\n" % i[2])
1229 ui.write("%s\n" % i[2])
1226
1230
1227 # aliases
1231 # aliases
1228 if not ui.quiet and len(aliases) > 1:
1232 if not ui.quiet and len(aliases) > 1:
1229 ui.write(_("\naliases: %s\n") % ', '.join(aliases[1:]))
1233 ui.write(_("\naliases: %s\n") % ', '.join(aliases[1:]))
1230
1234
1231 # description
1235 # description
1232 doc = i[0].__doc__
1236 doc = i[0].__doc__
1233 if not doc:
1237 if not doc:
1234 doc = _("(No help text available)")
1238 doc = _("(No help text available)")
1235 if ui.quiet:
1239 if ui.quiet:
1236 doc = doc.splitlines(0)[0]
1240 doc = doc.splitlines(0)[0]
1237 ui.write("\n%s\n" % doc.rstrip())
1241 ui.write("\n%s\n" % doc.rstrip())
1238
1242
1239 if not ui.quiet:
1243 if not ui.quiet:
1240 # options
1244 # options
1241 if i[1]:
1245 if i[1]:
1242 option_lists.append((_("options:\n"), i[1]))
1246 option_lists.append((_("options:\n"), i[1]))
1243
1247
1244 addglobalopts(False)
1248 addglobalopts(False)
1245
1249
1246 def helplist(header, select=None):
1250 def helplist(header, select=None):
1247 h = {}
1251 h = {}
1248 cmds = {}
1252 cmds = {}
1249 for c, e in table.items():
1253 for c, e in table.items():
1250 f = c.split("|", 1)[0]
1254 f = c.split("|", 1)[0]
1251 if select and not select(f):
1255 if select and not select(f):
1252 continue
1256 continue
1253 if name == "shortlist" and not f.startswith("^"):
1257 if name == "shortlist" and not f.startswith("^"):
1254 continue
1258 continue
1255 f = f.lstrip("^")
1259 f = f.lstrip("^")
1256 if not ui.debugflag and f.startswith("debug"):
1260 if not ui.debugflag and f.startswith("debug"):
1257 continue
1261 continue
1258 doc = e[0].__doc__
1262 doc = e[0].__doc__
1259 if not doc:
1263 if not doc:
1260 doc = _("(No help text available)")
1264 doc = _("(No help text available)")
1261 h[f] = doc.splitlines(0)[0].rstrip()
1265 h[f] = doc.splitlines(0)[0].rstrip()
1262 cmds[f] = c.lstrip("^")
1266 cmds[f] = c.lstrip("^")
1263
1267
1264 if not h:
1268 if not h:
1265 ui.status(_('no commands defined\n'))
1269 ui.status(_('no commands defined\n'))
1266 return
1270 return
1267
1271
1268 ui.status(header)
1272 ui.status(header)
1269 fns = h.keys()
1273 fns = h.keys()
1270 fns.sort()
1274 fns.sort()
1271 m = max(map(len, fns))
1275 m = max(map(len, fns))
1272 for f in fns:
1276 for f in fns:
1273 if ui.verbose:
1277 if ui.verbose:
1274 commands = cmds[f].replace("|",", ")
1278 commands = cmds[f].replace("|",", ")
1275 ui.write(" %s:\n %s\n"%(commands, h[f]))
1279 ui.write(" %s:\n %s\n"%(commands, h[f]))
1276 else:
1280 else:
1277 ui.write(' %-*s %s\n' % (m, f, h[f]))
1281 ui.write(' %-*s %s\n' % (m, f, h[f]))
1278
1282
1279 if not ui.quiet:
1283 if not ui.quiet:
1280 addglobalopts(True)
1284 addglobalopts(True)
1281
1285
1282 def helptopic(name):
1286 def helptopic(name):
1283 v = None
1287 v = None
1284 for i in help.helptable:
1288 for i in help.helptable:
1285 l = i.split('|')
1289 l = i.split('|')
1286 if name in l:
1290 if name in l:
1287 v = i
1291 v = i
1288 header = l[-1]
1292 header = l[-1]
1289 if not v:
1293 if not v:
1290 raise cmdutil.UnknownCommand(name)
1294 raise cmdutil.UnknownCommand(name)
1291
1295
1292 # description
1296 # description
1293 doc = help.helptable[v]
1297 doc = help.helptable[v]
1294 if not doc:
1298 if not doc:
1295 doc = _("(No help text available)")
1299 doc = _("(No help text available)")
1296 if callable(doc):
1300 if callable(doc):
1297 doc = doc()
1301 doc = doc()
1298
1302
1299 ui.write("%s\n" % header)
1303 ui.write("%s\n" % header)
1300 ui.write("%s\n" % doc.rstrip())
1304 ui.write("%s\n" % doc.rstrip())
1301
1305
1302 def helpext(name):
1306 def helpext(name):
1303 try:
1307 try:
1304 mod = extensions.find(name)
1308 mod = extensions.find(name)
1305 except KeyError:
1309 except KeyError:
1306 raise cmdutil.UnknownCommand(name)
1310 raise cmdutil.UnknownCommand(name)
1307
1311
1308 doc = (mod.__doc__ or _('No help text available')).splitlines(0)
1312 doc = (mod.__doc__ or _('No help text available')).splitlines(0)
1309 ui.write(_('%s extension - %s\n') % (name.split('.')[-1], doc[0]))
1313 ui.write(_('%s extension - %s\n') % (name.split('.')[-1], doc[0]))
1310 for d in doc[1:]:
1314 for d in doc[1:]:
1311 ui.write(d, '\n')
1315 ui.write(d, '\n')
1312
1316
1313 ui.status('\n')
1317 ui.status('\n')
1314
1318
1315 try:
1319 try:
1316 ct = mod.cmdtable
1320 ct = mod.cmdtable
1317 except AttributeError:
1321 except AttributeError:
1318 ct = {}
1322 ct = {}
1319
1323
1320 modcmds = dict.fromkeys([c.split('|', 1)[0] for c in ct])
1324 modcmds = dict.fromkeys([c.split('|', 1)[0] for c in ct])
1321 helplist(_('list of commands:\n\n'), modcmds.has_key)
1325 helplist(_('list of commands:\n\n'), modcmds.has_key)
1322
1326
1323 if name and name != 'shortlist':
1327 if name and name != 'shortlist':
1324 i = None
1328 i = None
1325 for f in (helpcmd, helptopic, helpext):
1329 for f in (helpcmd, helptopic, helpext):
1326 try:
1330 try:
1327 f(name)
1331 f(name)
1328 i = None
1332 i = None
1329 break
1333 break
1330 except cmdutil.UnknownCommand, inst:
1334 except cmdutil.UnknownCommand, inst:
1331 i = inst
1335 i = inst
1332 if i:
1336 if i:
1333 raise i
1337 raise i
1334
1338
1335 else:
1339 else:
1336 # program name
1340 # program name
1337 if ui.verbose or with_version:
1341 if ui.verbose or with_version:
1338 version_(ui)
1342 version_(ui)
1339 else:
1343 else:
1340 ui.status(_("Mercurial Distributed SCM\n"))
1344 ui.status(_("Mercurial Distributed SCM\n"))
1341 ui.status('\n')
1345 ui.status('\n')
1342
1346
1343 # list of commands
1347 # list of commands
1344 if name == "shortlist":
1348 if name == "shortlist":
1345 header = _('basic commands:\n\n')
1349 header = _('basic commands:\n\n')
1346 else:
1350 else:
1347 header = _('list of commands:\n\n')
1351 header = _('list of commands:\n\n')
1348
1352
1349 helplist(header)
1353 helplist(header)
1350
1354
1351 # list all option lists
1355 # list all option lists
1352 opt_output = []
1356 opt_output = []
1353 for title, options in option_lists:
1357 for title, options in option_lists:
1354 opt_output.append(("\n%s" % title, None))
1358 opt_output.append(("\n%s" % title, None))
1355 for shortopt, longopt, default, desc in options:
1359 for shortopt, longopt, default, desc in options:
1356 if "DEPRECATED" in desc and not ui.verbose: continue
1360 if "DEPRECATED" in desc and not ui.verbose: continue
1357 opt_output.append(("%2s%s" % (shortopt and "-%s" % shortopt,
1361 opt_output.append(("%2s%s" % (shortopt and "-%s" % shortopt,
1358 longopt and " --%s" % longopt),
1362 longopt and " --%s" % longopt),
1359 "%s%s" % (desc,
1363 "%s%s" % (desc,
1360 default
1364 default
1361 and _(" (default: %s)") % default
1365 and _(" (default: %s)") % default
1362 or "")))
1366 or "")))
1363
1367
1364 if opt_output:
1368 if opt_output:
1365 opts_len = max([len(line[0]) for line in opt_output if line[1]] or [0])
1369 opts_len = max([len(line[0]) for line in opt_output if line[1]] or [0])
1366 for first, second in opt_output:
1370 for first, second in opt_output:
1367 if second:
1371 if second:
1368 ui.write(" %-*s %s\n" % (opts_len, first, second))
1372 ui.write(" %-*s %s\n" % (opts_len, first, second))
1369 else:
1373 else:
1370 ui.write("%s\n" % first)
1374 ui.write("%s\n" % first)
1371
1375
1372 def identify(ui, repo, source=None,
1376 def identify(ui, repo, source=None,
1373 rev=None, num=None, id=None, branch=None, tags=None):
1377 rev=None, num=None, id=None, branch=None, tags=None):
1374 """identify the working copy or specified revision
1378 """identify the working copy or specified revision
1375
1379
1376 With no revision, print a summary of the current state of the repo.
1380 With no revision, print a summary of the current state of the repo.
1377
1381
1378 With a path, do a lookup in another repository.
1382 With a path, do a lookup in another repository.
1379
1383
1380 This summary identifies the repository state using one or two parent
1384 This summary identifies the repository state using one or two parent
1381 hash identifiers, followed by a "+" if there are uncommitted changes
1385 hash identifiers, followed by a "+" if there are uncommitted changes
1382 in the working directory, a list of tags for this revision and a branch
1386 in the working directory, a list of tags for this revision and a branch
1383 name for non-default branches.
1387 name for non-default branches.
1384 """
1388 """
1385
1389
1386 if not repo and not source:
1390 if not repo and not source:
1387 raise util.Abort(_("There is no Mercurial repository here "
1391 raise util.Abort(_("There is no Mercurial repository here "
1388 "(.hg not found)"))
1392 "(.hg not found)"))
1389
1393
1390 hexfunc = ui.debugflag and hex or short
1394 hexfunc = ui.debugflag and hex or short
1391 default = not (num or id or branch or tags)
1395 default = not (num or id or branch or tags)
1392 output = []
1396 output = []
1393
1397
1394 if source:
1398 if source:
1395 source, revs, checkout = hg.parseurl(ui.expandpath(source), [])
1399 source, revs, checkout = hg.parseurl(ui.expandpath(source), [])
1396 srepo = hg.repository(ui, source)
1400 srepo = hg.repository(ui, source)
1397 if not rev and revs:
1401 if not rev and revs:
1398 rev = revs[0]
1402 rev = revs[0]
1399 if not rev:
1403 if not rev:
1400 rev = "tip"
1404 rev = "tip"
1401 if num or branch or tags:
1405 if num or branch or tags:
1402 raise util.Abort(
1406 raise util.Abort(
1403 "can't query remote revision number, branch, or tags")
1407 "can't query remote revision number, branch, or tags")
1404 output = [hexfunc(srepo.lookup(rev))]
1408 output = [hexfunc(srepo.lookup(rev))]
1405 elif not rev:
1409 elif not rev:
1406 ctx = repo.workingctx()
1410 ctx = repo.workingctx()
1407 parents = ctx.parents()
1411 parents = ctx.parents()
1408 changed = False
1412 changed = False
1409 if default or id or num:
1413 if default or id or num:
1410 changed = ctx.files() + ctx.deleted()
1414 changed = ctx.files() + ctx.deleted()
1411 if default or id:
1415 if default or id:
1412 output = ["%s%s" % ('+'.join([hexfunc(p.node()) for p in parents]),
1416 output = ["%s%s" % ('+'.join([hexfunc(p.node()) for p in parents]),
1413 (changed) and "+" or "")]
1417 (changed) and "+" or "")]
1414 if num:
1418 if num:
1415 output.append("%s%s" % ('+'.join([str(p.rev()) for p in parents]),
1419 output.append("%s%s" % ('+'.join([str(p.rev()) for p in parents]),
1416 (changed) and "+" or ""))
1420 (changed) and "+" or ""))
1417 else:
1421 else:
1418 ctx = repo.changectx(rev)
1422 ctx = repo.changectx(rev)
1419 if default or id:
1423 if default or id:
1420 output = [hexfunc(ctx.node())]
1424 output = [hexfunc(ctx.node())]
1421 if num:
1425 if num:
1422 output.append(str(ctx.rev()))
1426 output.append(str(ctx.rev()))
1423
1427
1424 if not source and default and not ui.quiet:
1428 if not source and default and not ui.quiet:
1425 b = util.tolocal(ctx.branch())
1429 b = util.tolocal(ctx.branch())
1426 if b != 'default':
1430 if b != 'default':
1427 output.append("(%s)" % b)
1431 output.append("(%s)" % b)
1428
1432
1429 # multiple tags for a single parent separated by '/'
1433 # multiple tags for a single parent separated by '/'
1430 t = "/".join(ctx.tags())
1434 t = "/".join(ctx.tags())
1431 if t:
1435 if t:
1432 output.append(t)
1436 output.append(t)
1433
1437
1434 if branch:
1438 if branch:
1435 output.append(util.tolocal(ctx.branch()))
1439 output.append(util.tolocal(ctx.branch()))
1436
1440
1437 if tags:
1441 if tags:
1438 output.extend(ctx.tags())
1442 output.extend(ctx.tags())
1439
1443
1440 ui.write("%s\n" % ' '.join(output))
1444 ui.write("%s\n" % ' '.join(output))
1441
1445
1442 def import_(ui, repo, patch1, *patches, **opts):
1446 def import_(ui, repo, patch1, *patches, **opts):
1443 """import an ordered set of patches
1447 """import an ordered set of patches
1444
1448
1445 Import a list of patches and commit them individually.
1449 Import a list of patches and commit them individually.
1446
1450
1447 If there are outstanding changes in the working directory, import
1451 If there are outstanding changes in the working directory, import
1448 will abort unless given the -f flag.
1452 will abort unless given the -f flag.
1449
1453
1450 You can import a patch straight from a mail message. Even patches
1454 You can import a patch straight from a mail message. Even patches
1451 as attachments work (body part must be type text/plain or
1455 as attachments work (body part must be type text/plain or
1452 text/x-patch to be used). From and Subject headers of email
1456 text/x-patch to be used). From and Subject headers of email
1453 message are used as default committer and commit message. All
1457 message are used as default committer and commit message. All
1454 text/plain body parts before first diff are added to commit
1458 text/plain body parts before first diff are added to commit
1455 message.
1459 message.
1456
1460
1457 If the imported patch was generated by hg export, user and description
1461 If the imported patch was generated by hg export, user and description
1458 from patch override values from message headers and body. Values
1462 from patch override values from message headers and body. Values
1459 given on command line with -m and -u override these.
1463 given on command line with -m and -u override these.
1460
1464
1461 If --exact is specified, import will set the working directory
1465 If --exact is specified, import will set the working directory
1462 to the parent of each patch before applying it, and will abort
1466 to the parent of each patch before applying it, and will abort
1463 if the resulting changeset has a different ID than the one
1467 if the resulting changeset has a different ID than the one
1464 recorded in the patch. This may happen due to character set
1468 recorded in the patch. This may happen due to character set
1465 problems or other deficiencies in the text patch format.
1469 problems or other deficiencies in the text patch format.
1466
1470
1467 To read a patch from standard input, use patch name "-".
1471 To read a patch from standard input, use patch name "-".
1468 See 'hg help dates' for a list of formats valid for -d/--date.
1472 See 'hg help dates' for a list of formats valid for -d/--date.
1469 """
1473 """
1470 patches = (patch1,) + patches
1474 patches = (patch1,) + patches
1471
1475
1472 date = opts.get('date')
1476 date = opts.get('date')
1473 if date:
1477 if date:
1474 opts['date'] = util.parsedate(date)
1478 opts['date'] = util.parsedate(date)
1475
1479
1476 if opts.get('exact') or not opts['force']:
1480 if opts.get('exact') or not opts['force']:
1477 cmdutil.bail_if_changed(repo)
1481 cmdutil.bail_if_changed(repo)
1478
1482
1479 d = opts["base"]
1483 d = opts["base"]
1480 strip = opts["strip"]
1484 strip = opts["strip"]
1481 wlock = lock = None
1485 wlock = lock = None
1482 try:
1486 try:
1483 wlock = repo.wlock()
1487 wlock = repo.wlock()
1484 lock = repo.lock()
1488 lock = repo.lock()
1485 for p in patches:
1489 for p in patches:
1486 pf = os.path.join(d, p)
1490 pf = os.path.join(d, p)
1487
1491
1488 if pf == '-':
1492 if pf == '-':
1489 ui.status(_("applying patch from stdin\n"))
1493 ui.status(_("applying patch from stdin\n"))
1490 data = patch.extract(ui, sys.stdin)
1494 data = patch.extract(ui, sys.stdin)
1491 else:
1495 else:
1492 ui.status(_("applying %s\n") % p)
1496 ui.status(_("applying %s\n") % p)
1493 if os.path.exists(pf):
1497 if os.path.exists(pf):
1494 data = patch.extract(ui, file(pf, 'rb'))
1498 data = patch.extract(ui, file(pf, 'rb'))
1495 else:
1499 else:
1496 data = patch.extract(ui, urllib.urlopen(pf))
1500 data = patch.extract(ui, urllib.urlopen(pf))
1497 tmpname, message, user, date, branch, nodeid, p1, p2 = data
1501 tmpname, message, user, date, branch, nodeid, p1, p2 = data
1498
1502
1499 if tmpname is None:
1503 if tmpname is None:
1500 raise util.Abort(_('no diffs found'))
1504 raise util.Abort(_('no diffs found'))
1501
1505
1502 try:
1506 try:
1503 cmdline_message = cmdutil.logmessage(opts)
1507 cmdline_message = cmdutil.logmessage(opts)
1504 if cmdline_message:
1508 if cmdline_message:
1505 # pickup the cmdline msg
1509 # pickup the cmdline msg
1506 message = cmdline_message
1510 message = cmdline_message
1507 elif message:
1511 elif message:
1508 # pickup the patch msg
1512 # pickup the patch msg
1509 message = message.strip()
1513 message = message.strip()
1510 else:
1514 else:
1511 # launch the editor
1515 # launch the editor
1512 message = None
1516 message = None
1513 ui.debug(_('message:\n%s\n') % message)
1517 ui.debug(_('message:\n%s\n') % message)
1514
1518
1515 wp = repo.workingctx().parents()
1519 wp = repo.workingctx().parents()
1516 if opts.get('exact'):
1520 if opts.get('exact'):
1517 if not nodeid or not p1:
1521 if not nodeid or not p1:
1518 raise util.Abort(_('not a mercurial patch'))
1522 raise util.Abort(_('not a mercurial patch'))
1519 p1 = repo.lookup(p1)
1523 p1 = repo.lookup(p1)
1520 p2 = repo.lookup(p2 or hex(nullid))
1524 p2 = repo.lookup(p2 or hex(nullid))
1521
1525
1522 if p1 != wp[0].node():
1526 if p1 != wp[0].node():
1523 hg.clean(repo, p1)
1527 hg.clean(repo, p1)
1524 repo.dirstate.setparents(p1, p2)
1528 repo.dirstate.setparents(p1, p2)
1525 elif p2:
1529 elif p2:
1526 try:
1530 try:
1527 p1 = repo.lookup(p1)
1531 p1 = repo.lookup(p1)
1528 p2 = repo.lookup(p2)
1532 p2 = repo.lookup(p2)
1529 if p1 == wp[0].node():
1533 if p1 == wp[0].node():
1530 repo.dirstate.setparents(p1, p2)
1534 repo.dirstate.setparents(p1, p2)
1531 except RepoError:
1535 except RepoError:
1532 pass
1536 pass
1533 if opts.get('exact') or opts.get('import_branch'):
1537 if opts.get('exact') or opts.get('import_branch'):
1534 repo.dirstate.setbranch(branch or 'default')
1538 repo.dirstate.setbranch(branch or 'default')
1535
1539
1536 files = {}
1540 files = {}
1537 try:
1541 try:
1538 fuzz = patch.patch(tmpname, ui, strip=strip, cwd=repo.root,
1542 fuzz = patch.patch(tmpname, ui, strip=strip, cwd=repo.root,
1539 files=files)
1543 files=files)
1540 finally:
1544 finally:
1541 files = patch.updatedir(ui, repo, files)
1545 files = patch.updatedir(ui, repo, files)
1542 if not opts.get('no_commit'):
1546 if not opts.get('no_commit'):
1543 n = repo.commit(files, message, opts.get('user') or user,
1547 n = repo.commit(files, message, opts.get('user') or user,
1544 opts.get('date') or date)
1548 opts.get('date') or date)
1545 if opts.get('exact'):
1549 if opts.get('exact'):
1546 if hex(n) != nodeid:
1550 if hex(n) != nodeid:
1547 repo.rollback()
1551 repo.rollback()
1548 raise util.Abort(_('patch is damaged'
1552 raise util.Abort(_('patch is damaged'
1549 ' or loses information'))
1553 ' or loses information'))
1550 # Force a dirstate write so that the next transaction
1554 # Force a dirstate write so that the next transaction
1551 # backups an up-do-date file.
1555 # backups an up-do-date file.
1552 repo.dirstate.write()
1556 repo.dirstate.write()
1553 finally:
1557 finally:
1554 os.unlink(tmpname)
1558 os.unlink(tmpname)
1555 finally:
1559 finally:
1556 del lock, wlock
1560 del lock, wlock
1557
1561
1558 def incoming(ui, repo, source="default", **opts):
1562 def incoming(ui, repo, source="default", **opts):
1559 """show new changesets found in source
1563 """show new changesets found in source
1560
1564
1561 Show new changesets found in the specified path/URL or the default
1565 Show new changesets found in the specified path/URL or the default
1562 pull location. These are the changesets that would be pulled if a pull
1566 pull location. These are the changesets that would be pulled if a pull
1563 was requested.
1567 was requested.
1564
1568
1565 For remote repository, using --bundle avoids downloading the changesets
1569 For remote repository, using --bundle avoids downloading the changesets
1566 twice if the incoming is followed by a pull.
1570 twice if the incoming is followed by a pull.
1567
1571
1568 See pull for valid source format details.
1572 See pull for valid source format details.
1569 """
1573 """
1570 limit = cmdutil.loglimit(opts)
1574 limit = cmdutil.loglimit(opts)
1571 source, revs, checkout = hg.parseurl(ui.expandpath(source), opts['rev'])
1575 source, revs, checkout = hg.parseurl(ui.expandpath(source), opts['rev'])
1572 cmdutil.setremoteconfig(ui, opts)
1576 cmdutil.setremoteconfig(ui, opts)
1573
1577
1574 other = hg.repository(ui, source)
1578 other = hg.repository(ui, source)
1575 ui.status(_('comparing with %s\n') % util.hidepassword(source))
1579 ui.status(_('comparing with %s\n') % util.hidepassword(source))
1576 if revs:
1580 if revs:
1577 revs = [other.lookup(rev) for rev in revs]
1581 revs = [other.lookup(rev) for rev in revs]
1578 incoming = repo.findincoming(other, heads=revs, force=opts["force"])
1582 incoming = repo.findincoming(other, heads=revs, force=opts["force"])
1579 if not incoming:
1583 if not incoming:
1580 try:
1584 try:
1581 os.unlink(opts["bundle"])
1585 os.unlink(opts["bundle"])
1582 except:
1586 except:
1583 pass
1587 pass
1584 ui.status(_("no changes found\n"))
1588 ui.status(_("no changes found\n"))
1585 return 1
1589 return 1
1586
1590
1587 cleanup = None
1591 cleanup = None
1588 try:
1592 try:
1589 fname = opts["bundle"]
1593 fname = opts["bundle"]
1590 if fname or not other.local():
1594 if fname or not other.local():
1591 # create a bundle (uncompressed if other repo is not local)
1595 # create a bundle (uncompressed if other repo is not local)
1592 if revs is None:
1596 if revs is None:
1593 cg = other.changegroup(incoming, "incoming")
1597 cg = other.changegroup(incoming, "incoming")
1594 else:
1598 else:
1595 cg = other.changegroupsubset(incoming, revs, 'incoming')
1599 cg = other.changegroupsubset(incoming, revs, 'incoming')
1596 bundletype = other.local() and "HG10BZ" or "HG10UN"
1600 bundletype = other.local() and "HG10BZ" or "HG10UN"
1597 fname = cleanup = changegroup.writebundle(cg, fname, bundletype)
1601 fname = cleanup = changegroup.writebundle(cg, fname, bundletype)
1598 # keep written bundle?
1602 # keep written bundle?
1599 if opts["bundle"]:
1603 if opts["bundle"]:
1600 cleanup = None
1604 cleanup = None
1601 if not other.local():
1605 if not other.local():
1602 # use the created uncompressed bundlerepo
1606 # use the created uncompressed bundlerepo
1603 other = bundlerepo.bundlerepository(ui, repo.root, fname)
1607 other = bundlerepo.bundlerepository(ui, repo.root, fname)
1604
1608
1605 o = other.changelog.nodesbetween(incoming, revs)[0]
1609 o = other.changelog.nodesbetween(incoming, revs)[0]
1606 if opts['newest_first']:
1610 if opts['newest_first']:
1607 o.reverse()
1611 o.reverse()
1608 displayer = cmdutil.show_changeset(ui, other, opts)
1612 displayer = cmdutil.show_changeset(ui, other, opts)
1609 count = 0
1613 count = 0
1610 for n in o:
1614 for n in o:
1611 if count >= limit:
1615 if count >= limit:
1612 break
1616 break
1613 parents = [p for p in other.changelog.parents(n) if p != nullid]
1617 parents = [p for p in other.changelog.parents(n) if p != nullid]
1614 if opts['no_merges'] and len(parents) == 2:
1618 if opts['no_merges'] and len(parents) == 2:
1615 continue
1619 continue
1616 count += 1
1620 count += 1
1617 displayer.show(changenode=n)
1621 displayer.show(changenode=n)
1618 finally:
1622 finally:
1619 if hasattr(other, 'close'):
1623 if hasattr(other, 'close'):
1620 other.close()
1624 other.close()
1621 if cleanup:
1625 if cleanup:
1622 os.unlink(cleanup)
1626 os.unlink(cleanup)
1623
1627
1624 def init(ui, dest=".", **opts):
1628 def init(ui, dest=".", **opts):
1625 """create a new repository in the given directory
1629 """create a new repository in the given directory
1626
1630
1627 Initialize a new repository in the given directory. If the given
1631 Initialize a new repository in the given directory. If the given
1628 directory does not exist, it is created.
1632 directory does not exist, it is created.
1629
1633
1630 If no directory is given, the current directory is used.
1634 If no directory is given, the current directory is used.
1631
1635
1632 It is possible to specify an ssh:// URL as the destination.
1636 It is possible to specify an ssh:// URL as the destination.
1633 Look at the help text for the pull command for important details
1637 Look at the help text for the pull command for important details
1634 about ssh:// URLs.
1638 about ssh:// URLs.
1635 """
1639 """
1636 cmdutil.setremoteconfig(ui, opts)
1640 cmdutil.setremoteconfig(ui, opts)
1637 hg.repository(ui, dest, create=1)
1641 hg.repository(ui, dest, create=1)
1638
1642
1639 def locate(ui, repo, *pats, **opts):
1643 def locate(ui, repo, *pats, **opts):
1640 """locate files matching specific patterns
1644 """locate files matching specific patterns
1641
1645
1642 Print all files under Mercurial control whose names match the
1646 Print all files under Mercurial control whose names match the
1643 given patterns.
1647 given patterns.
1644
1648
1645 This command searches the entire repository by default. To search
1649 This command searches the entire repository by default. To search
1646 just the current directory and its subdirectories, use
1650 just the current directory and its subdirectories, use
1647 "--include .".
1651 "--include .".
1648
1652
1649 If no patterns are given to match, this command prints all file
1653 If no patterns are given to match, this command prints all file
1650 names.
1654 names.
1651
1655
1652 If you want to feed the output of this command into the "xargs"
1656 If you want to feed the output of this command into the "xargs"
1653 command, use the "-0" option to both this command and "xargs".
1657 command, use the "-0" option to both this command and "xargs".
1654 This will avoid the problem of "xargs" treating single filenames
1658 This will avoid the problem of "xargs" treating single filenames
1655 that contain white space as multiple filenames.
1659 that contain white space as multiple filenames.
1656 """
1660 """
1657 end = opts['print0'] and '\0' or '\n'
1661 end = opts['print0'] and '\0' or '\n'
1658 rev = opts['rev']
1662 rev = opts['rev']
1659 if rev:
1663 if rev:
1660 node = repo.lookup(rev)
1664 node = repo.lookup(rev)
1661 else:
1665 else:
1662 node = None
1666 node = None
1663
1667
1664 ret = 1
1668 ret = 1
1665 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts, node=node,
1669 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts, node=node,
1666 badmatch=util.always,
1670 badmatch=util.always,
1667 default='relglob'):
1671 default='relglob'):
1668 if src == 'b':
1672 if src == 'b':
1669 continue
1673 continue
1670 if not node and abs not in repo.dirstate:
1674 if not node and abs not in repo.dirstate:
1671 continue
1675 continue
1672 if opts['fullpath']:
1676 if opts['fullpath']:
1673 ui.write(os.path.join(repo.root, abs), end)
1677 ui.write(os.path.join(repo.root, abs), end)
1674 else:
1678 else:
1675 ui.write(((pats and rel) or abs), end)
1679 ui.write(((pats and rel) or abs), end)
1676 ret = 0
1680 ret = 0
1677
1681
1678 return ret
1682 return ret
1679
1683
1680 def log(ui, repo, *pats, **opts):
1684 def log(ui, repo, *pats, **opts):
1681 """show revision history of entire repository or files
1685 """show revision history of entire repository or files
1682
1686
1683 Print the revision history of the specified files or the entire
1687 Print the revision history of the specified files or the entire
1684 project.
1688 project.
1685
1689
1686 File history is shown without following rename or copy history of
1690 File history is shown without following rename or copy history of
1687 files. Use -f/--follow with a file name to follow history across
1691 files. Use -f/--follow with a file name to follow history across
1688 renames and copies. --follow without a file name will only show
1692 renames and copies. --follow without a file name will only show
1689 ancestors or descendants of the starting revision. --follow-first
1693 ancestors or descendants of the starting revision. --follow-first
1690 only follows the first parent of merge revisions.
1694 only follows the first parent of merge revisions.
1691
1695
1692 If no revision range is specified, the default is tip:0 unless
1696 If no revision range is specified, the default is tip:0 unless
1693 --follow is set, in which case the working directory parent is
1697 --follow is set, in which case the working directory parent is
1694 used as the starting revision.
1698 used as the starting revision.
1695
1699
1696 See 'hg help dates' for a list of formats valid for -d/--date.
1700 See 'hg help dates' for a list of formats valid for -d/--date.
1697
1701
1698 By default this command outputs: changeset id and hash, tags,
1702 By default this command outputs: changeset id and hash, tags,
1699 non-trivial parents, user, date and time, and a summary for each
1703 non-trivial parents, user, date and time, and a summary for each
1700 commit. When the -v/--verbose switch is used, the list of changed
1704 commit. When the -v/--verbose switch is used, the list of changed
1701 files and full commit message is shown.
1705 files and full commit message is shown.
1702
1706
1703 NOTE: log -p may generate unexpected diff output for merge
1707 NOTE: log -p may generate unexpected diff output for merge
1704 changesets, as it will compare the merge changeset against its
1708 changesets, as it will compare the merge changeset against its
1705 first parent only. Also, the files: list will only reflect files
1709 first parent only. Also, the files: list will only reflect files
1706 that are different from BOTH parents.
1710 that are different from BOTH parents.
1707
1711
1708 """
1712 """
1709
1713
1710 get = util.cachefunc(lambda r: repo.changectx(r).changeset())
1714 get = util.cachefunc(lambda r: repo.changectx(r).changeset())
1711 changeiter, matchfn = cmdutil.walkchangerevs(ui, repo, pats, get, opts)
1715 changeiter, matchfn = cmdutil.walkchangerevs(ui, repo, pats, get, opts)
1712
1716
1713 limit = cmdutil.loglimit(opts)
1717 limit = cmdutil.loglimit(opts)
1714 count = 0
1718 count = 0
1715
1719
1716 if opts['copies'] and opts['rev']:
1720 if opts['copies'] and opts['rev']:
1717 endrev = max(cmdutil.revrange(repo, opts['rev'])) + 1
1721 endrev = max(cmdutil.revrange(repo, opts['rev'])) + 1
1718 else:
1722 else:
1719 endrev = repo.changelog.count()
1723 endrev = repo.changelog.count()
1720 rcache = {}
1724 rcache = {}
1721 ncache = {}
1725 ncache = {}
1722 def getrenamed(fn, rev):
1726 def getrenamed(fn, rev):
1723 '''looks up all renames for a file (up to endrev) the first
1727 '''looks up all renames for a file (up to endrev) the first
1724 time the file is given. It indexes on the changerev and only
1728 time the file is given. It indexes on the changerev and only
1725 parses the manifest if linkrev != changerev.
1729 parses the manifest if linkrev != changerev.
1726 Returns rename info for fn at changerev rev.'''
1730 Returns rename info for fn at changerev rev.'''
1727 if fn not in rcache:
1731 if fn not in rcache:
1728 rcache[fn] = {}
1732 rcache[fn] = {}
1729 ncache[fn] = {}
1733 ncache[fn] = {}
1730 fl = repo.file(fn)
1734 fl = repo.file(fn)
1731 for i in xrange(fl.count()):
1735 for i in xrange(fl.count()):
1732 node = fl.node(i)
1736 node = fl.node(i)
1733 lr = fl.linkrev(node)
1737 lr = fl.linkrev(node)
1734 renamed = fl.renamed(node)
1738 renamed = fl.renamed(node)
1735 rcache[fn][lr] = renamed
1739 rcache[fn][lr] = renamed
1736 if renamed:
1740 if renamed:
1737 ncache[fn][node] = renamed
1741 ncache[fn][node] = renamed
1738 if lr >= endrev:
1742 if lr >= endrev:
1739 break
1743 break
1740 if rev in rcache[fn]:
1744 if rev in rcache[fn]:
1741 return rcache[fn][rev]
1745 return rcache[fn][rev]
1742
1746
1743 # If linkrev != rev (i.e. rev not found in rcache) fallback to
1747 # If linkrev != rev (i.e. rev not found in rcache) fallback to
1744 # filectx logic.
1748 # filectx logic.
1745
1749
1746 try:
1750 try:
1747 return repo.changectx(rev).filectx(fn).renamed()
1751 return repo.changectx(rev).filectx(fn).renamed()
1748 except revlog.LookupError:
1752 except revlog.LookupError:
1749 pass
1753 pass
1750 return None
1754 return None
1751
1755
1752 df = False
1756 df = False
1753 if opts["date"]:
1757 if opts["date"]:
1754 df = util.matchdate(opts["date"])
1758 df = util.matchdate(opts["date"])
1755
1759
1756 only_branches = opts['only_branch']
1760 only_branches = opts['only_branch']
1757
1761
1758 displayer = cmdutil.show_changeset(ui, repo, opts, True, matchfn)
1762 displayer = cmdutil.show_changeset(ui, repo, opts, True, matchfn)
1759 for st, rev, fns in changeiter:
1763 for st, rev, fns in changeiter:
1760 if st == 'add':
1764 if st == 'add':
1761 changenode = repo.changelog.node(rev)
1765 changenode = repo.changelog.node(rev)
1762 parents = [p for p in repo.changelog.parentrevs(rev)
1766 parents = [p for p in repo.changelog.parentrevs(rev)
1763 if p != nullrev]
1767 if p != nullrev]
1764 if opts['no_merges'] and len(parents) == 2:
1768 if opts['no_merges'] and len(parents) == 2:
1765 continue
1769 continue
1766 if opts['only_merges'] and len(parents) != 2:
1770 if opts['only_merges'] and len(parents) != 2:
1767 continue
1771 continue
1768
1772
1769 if only_branches:
1773 if only_branches:
1770 revbranch = get(rev)[5]['branch']
1774 revbranch = get(rev)[5]['branch']
1771 if revbranch not in only_branches:
1775 if revbranch not in only_branches:
1772 continue
1776 continue
1773
1777
1774 if df:
1778 if df:
1775 changes = get(rev)
1779 changes = get(rev)
1776 if not df(changes[2][0]):
1780 if not df(changes[2][0]):
1777 continue
1781 continue
1778
1782
1779 if opts['keyword']:
1783 if opts['keyword']:
1780 changes = get(rev)
1784 changes = get(rev)
1781 miss = 0
1785 miss = 0
1782 for k in [kw.lower() for kw in opts['keyword']]:
1786 for k in [kw.lower() for kw in opts['keyword']]:
1783 if not (k in changes[1].lower() or
1787 if not (k in changes[1].lower() or
1784 k in changes[4].lower() or
1788 k in changes[4].lower() or
1785 k in " ".join(changes[3]).lower()):
1789 k in " ".join(changes[3]).lower()):
1786 miss = 1
1790 miss = 1
1787 break
1791 break
1788 if miss:
1792 if miss:
1789 continue
1793 continue
1790
1794
1791 copies = []
1795 copies = []
1792 if opts.get('copies') and rev:
1796 if opts.get('copies') and rev:
1793 for fn in get(rev)[3]:
1797 for fn in get(rev)[3]:
1794 rename = getrenamed(fn, rev)
1798 rename = getrenamed(fn, rev)
1795 if rename:
1799 if rename:
1796 copies.append((fn, rename[0]))
1800 copies.append((fn, rename[0]))
1797 displayer.show(rev, changenode, copies=copies)
1801 displayer.show(rev, changenode, copies=copies)
1798 elif st == 'iter':
1802 elif st == 'iter':
1799 if count == limit: break
1803 if count == limit: break
1800 if displayer.flush(rev):
1804 if displayer.flush(rev):
1801 count += 1
1805 count += 1
1802
1806
1803 def manifest(ui, repo, node=None, rev=None):
1807 def manifest(ui, repo, node=None, rev=None):
1804 """output the current or given revision of the project manifest
1808 """output the current or given revision of the project manifest
1805
1809
1806 Print a list of version controlled files for the given revision.
1810 Print a list of version controlled files for the given revision.
1807 If no revision is given, the parent of the working directory is used,
1811 If no revision is given, the parent of the working directory is used,
1808 or tip if no revision is checked out.
1812 or tip if no revision is checked out.
1809
1813
1810 The manifest is the list of files being version controlled. If no revision
1814 The manifest is the list of files being version controlled. If no revision
1811 is given then the first parent of the working directory is used.
1815 is given then the first parent of the working directory is used.
1812
1816
1813 With -v flag, print file permissions, symlink and executable bits. With
1817 With -v flag, print file permissions, symlink and executable bits. With
1814 --debug flag, print file revision hashes.
1818 --debug flag, print file revision hashes.
1815 """
1819 """
1816
1820
1817 if rev and node:
1821 if rev and node:
1818 raise util.Abort(_("please specify just one revision"))
1822 raise util.Abort(_("please specify just one revision"))
1819
1823
1820 if not node:
1824 if not node:
1821 node = rev
1825 node = rev
1822
1826
1823 m = repo.changectx(node).manifest()
1827 m = repo.changectx(node).manifest()
1824 files = m.keys()
1828 files = m.keys()
1825 files.sort()
1829 files.sort()
1826
1830
1827 for f in files:
1831 for f in files:
1828 if ui.debugflag:
1832 if ui.debugflag:
1829 ui.write("%40s " % hex(m[f]))
1833 ui.write("%40s " % hex(m[f]))
1830 if ui.verbose:
1834 if ui.verbose:
1831 type = m.execf(f) and "*" or m.linkf(f) and "@" or " "
1835 type = m.execf(f) and "*" or m.linkf(f) and "@" or " "
1832 perm = m.execf(f) and "755" or "644"
1836 perm = m.execf(f) and "755" or "644"
1833 ui.write("%3s %1s " % (perm, type))
1837 ui.write("%3s %1s " % (perm, type))
1834 ui.write("%s\n" % f)
1838 ui.write("%s\n" % f)
1835
1839
1836 def merge(ui, repo, node=None, force=None, rev=None):
1840 def merge(ui, repo, node=None, force=None, rev=None):
1837 """merge working directory with another revision
1841 """merge working directory with another revision
1838
1842
1839 Merge the contents of the current working directory and the
1843 Merge the contents of the current working directory and the
1840 requested revision. Files that changed between either parent are
1844 requested revision. Files that changed between either parent are
1841 marked as changed for the next commit and a commit must be
1845 marked as changed for the next commit and a commit must be
1842 performed before any further updates are allowed.
1846 performed before any further updates are allowed.
1843
1847
1844 If no revision is specified, the working directory's parent is a
1848 If no revision is specified, the working directory's parent is a
1845 head revision, and the repository contains exactly one other head,
1849 head revision, and the repository contains exactly one other head,
1846 the other head is merged with by default. Otherwise, an explicit
1850 the other head is merged with by default. Otherwise, an explicit
1847 revision to merge with must be provided.
1851 revision to merge with must be provided.
1848 """
1852 """
1849
1853
1850 if rev and node:
1854 if rev and node:
1851 raise util.Abort(_("please specify just one revision"))
1855 raise util.Abort(_("please specify just one revision"))
1852 if not node:
1856 if not node:
1853 node = rev
1857 node = rev
1854
1858
1855 if not node:
1859 if not node:
1856 heads = repo.heads()
1860 heads = repo.heads()
1857 if len(heads) > 2:
1861 if len(heads) > 2:
1858 raise util.Abort(_('repo has %d heads - '
1862 raise util.Abort(_('repo has %d heads - '
1859 'please merge with an explicit rev') %
1863 'please merge with an explicit rev') %
1860 len(heads))
1864 len(heads))
1861 parent = repo.dirstate.parents()[0]
1865 parent = repo.dirstate.parents()[0]
1862 if len(heads) == 1:
1866 if len(heads) == 1:
1863 msg = _('there is nothing to merge')
1867 msg = _('there is nothing to merge')
1864 if parent != repo.lookup(repo.workingctx().branch()):
1868 if parent != repo.lookup(repo.workingctx().branch()):
1865 msg = _('%s - use "hg update" instead') % msg
1869 msg = _('%s - use "hg update" instead') % msg
1866 raise util.Abort(msg)
1870 raise util.Abort(msg)
1867
1871
1868 if parent not in heads:
1872 if parent not in heads:
1869 raise util.Abort(_('working dir not at a head rev - '
1873 raise util.Abort(_('working dir not at a head rev - '
1870 'use "hg update" or merge with an explicit rev'))
1874 'use "hg update" or merge with an explicit rev'))
1871 node = parent == heads[0] and heads[-1] or heads[0]
1875 node = parent == heads[0] and heads[-1] or heads[0]
1872 return hg.merge(repo, node, force=force)
1876 return hg.merge(repo, node, force=force)
1873
1877
1874 def outgoing(ui, repo, dest=None, **opts):
1878 def outgoing(ui, repo, dest=None, **opts):
1875 """show changesets not found in destination
1879 """show changesets not found in destination
1876
1880
1877 Show changesets not found in the specified destination repository or
1881 Show changesets not found in the specified destination repository or
1878 the default push location. These are the changesets that would be pushed
1882 the default push location. These are the changesets that would be pushed
1879 if a push was requested.
1883 if a push was requested.
1880
1884
1881 See pull for valid destination format details.
1885 See pull for valid destination format details.
1882 """
1886 """
1883 limit = cmdutil.loglimit(opts)
1887 limit = cmdutil.loglimit(opts)
1884 dest, revs, checkout = hg.parseurl(
1888 dest, revs, checkout = hg.parseurl(
1885 ui.expandpath(dest or 'default-push', dest or 'default'), opts['rev'])
1889 ui.expandpath(dest or 'default-push', dest or 'default'), opts['rev'])
1886 cmdutil.setremoteconfig(ui, opts)
1890 cmdutil.setremoteconfig(ui, opts)
1887 if revs:
1891 if revs:
1888 revs = [repo.lookup(rev) for rev in revs]
1892 revs = [repo.lookup(rev) for rev in revs]
1889
1893
1890 other = hg.repository(ui, dest)
1894 other = hg.repository(ui, dest)
1891 ui.status(_('comparing with %s\n') % util.hidepassword(dest))
1895 ui.status(_('comparing with %s\n') % util.hidepassword(dest))
1892 o = repo.findoutgoing(other, force=opts['force'])
1896 o = repo.findoutgoing(other, force=opts['force'])
1893 if not o:
1897 if not o:
1894 ui.status(_("no changes found\n"))
1898 ui.status(_("no changes found\n"))
1895 return 1
1899 return 1
1896 o = repo.changelog.nodesbetween(o, revs)[0]
1900 o = repo.changelog.nodesbetween(o, revs)[0]
1897 if opts['newest_first']:
1901 if opts['newest_first']:
1898 o.reverse()
1902 o.reverse()
1899 displayer = cmdutil.show_changeset(ui, repo, opts)
1903 displayer = cmdutil.show_changeset(ui, repo, opts)
1900 count = 0
1904 count = 0
1901 for n in o:
1905 for n in o:
1902 if count >= limit:
1906 if count >= limit:
1903 break
1907 break
1904 parents = [p for p in repo.changelog.parents(n) if p != nullid]
1908 parents = [p for p in repo.changelog.parents(n) if p != nullid]
1905 if opts['no_merges'] and len(parents) == 2:
1909 if opts['no_merges'] and len(parents) == 2:
1906 continue
1910 continue
1907 count += 1
1911 count += 1
1908 displayer.show(changenode=n)
1912 displayer.show(changenode=n)
1909
1913
1910 def parents(ui, repo, file_=None, **opts):
1914 def parents(ui, repo, file_=None, **opts):
1911 """show the parents of the working dir or revision
1915 """show the parents of the working dir or revision
1912
1916
1913 Print the working directory's parent revisions. If a
1917 Print the working directory's parent revisions. If a
1914 revision is given via --rev, the parent of that revision
1918 revision is given via --rev, the parent of that revision
1915 will be printed. If a file argument is given, revision in
1919 will be printed. If a file argument is given, revision in
1916 which the file was last changed (before the working directory
1920 which the file was last changed (before the working directory
1917 revision or the argument to --rev if given) is printed.
1921 revision or the argument to --rev if given) is printed.
1918 """
1922 """
1919 rev = opts.get('rev')
1923 rev = opts.get('rev')
1920 if rev:
1924 if rev:
1921 ctx = repo.changectx(rev)
1925 ctx = repo.changectx(rev)
1922 else:
1926 else:
1923 ctx = repo.workingctx()
1927 ctx = repo.workingctx()
1924
1928
1925 if file_:
1929 if file_:
1926 files, match, anypats = cmdutil.matchpats(repo, (file_,), opts)
1930 files, match, anypats = cmdutil.matchpats(repo, (file_,), opts)
1927 if anypats or len(files) != 1:
1931 if anypats or len(files) != 1:
1928 raise util.Abort(_('can only specify an explicit file name'))
1932 raise util.Abort(_('can only specify an explicit file name'))
1929 file_ = files[0]
1933 file_ = files[0]
1930 filenodes = []
1934 filenodes = []
1931 for cp in ctx.parents():
1935 for cp in ctx.parents():
1932 if not cp:
1936 if not cp:
1933 continue
1937 continue
1934 try:
1938 try:
1935 filenodes.append(cp.filenode(file_))
1939 filenodes.append(cp.filenode(file_))
1936 except revlog.LookupError:
1940 except revlog.LookupError:
1937 pass
1941 pass
1938 if not filenodes:
1942 if not filenodes:
1939 raise util.Abort(_("'%s' not found in manifest!") % file_)
1943 raise util.Abort(_("'%s' not found in manifest!") % file_)
1940 fl = repo.file(file_)
1944 fl = repo.file(file_)
1941 p = [repo.lookup(fl.linkrev(fn)) for fn in filenodes]
1945 p = [repo.lookup(fl.linkrev(fn)) for fn in filenodes]
1942 else:
1946 else:
1943 p = [cp.node() for cp in ctx.parents()]
1947 p = [cp.node() for cp in ctx.parents()]
1944
1948
1945 displayer = cmdutil.show_changeset(ui, repo, opts)
1949 displayer = cmdutil.show_changeset(ui, repo, opts)
1946 for n in p:
1950 for n in p:
1947 if n != nullid:
1951 if n != nullid:
1948 displayer.show(changenode=n)
1952 displayer.show(changenode=n)
1949
1953
1950 def paths(ui, repo, search=None):
1954 def paths(ui, repo, search=None):
1951 """show definition of symbolic path names
1955 """show definition of symbolic path names
1952
1956
1953 Show definition of symbolic path name NAME. If no name is given, show
1957 Show definition of symbolic path name NAME. If no name is given, show
1954 definition of available names.
1958 definition of available names.
1955
1959
1956 Path names are defined in the [paths] section of /etc/mercurial/hgrc
1960 Path names are defined in the [paths] section of /etc/mercurial/hgrc
1957 and $HOME/.hgrc. If run inside a repository, .hg/hgrc is used, too.
1961 and $HOME/.hgrc. If run inside a repository, .hg/hgrc is used, too.
1958 """
1962 """
1959 if search:
1963 if search:
1960 for name, path in ui.configitems("paths"):
1964 for name, path in ui.configitems("paths"):
1961 if name == search:
1965 if name == search:
1962 ui.write("%s\n" % util.hidepassword(path))
1966 ui.write("%s\n" % util.hidepassword(path))
1963 return
1967 return
1964 ui.warn(_("not found!\n"))
1968 ui.warn(_("not found!\n"))
1965 return 1
1969 return 1
1966 else:
1970 else:
1967 for name, path in ui.configitems("paths"):
1971 for name, path in ui.configitems("paths"):
1968 ui.write("%s = %s\n" % (name, util.hidepassword(path)))
1972 ui.write("%s = %s\n" % (name, util.hidepassword(path)))
1969
1973
1970 def postincoming(ui, repo, modheads, optupdate, checkout):
1974 def postincoming(ui, repo, modheads, optupdate, checkout):
1971 if modheads == 0:
1975 if modheads == 0:
1972 return
1976 return
1973 if optupdate:
1977 if optupdate:
1974 if modheads <= 1 or checkout:
1978 if modheads <= 1 or checkout:
1975 return hg.update(repo, checkout)
1979 return hg.update(repo, checkout)
1976 else:
1980 else:
1977 ui.status(_("not updating, since new heads added\n"))
1981 ui.status(_("not updating, since new heads added\n"))
1978 if modheads > 1:
1982 if modheads > 1:
1979 ui.status(_("(run 'hg heads' to see heads, 'hg merge' to merge)\n"))
1983 ui.status(_("(run 'hg heads' to see heads, 'hg merge' to merge)\n"))
1980 else:
1984 else:
1981 ui.status(_("(run 'hg update' to get a working copy)\n"))
1985 ui.status(_("(run 'hg update' to get a working copy)\n"))
1982
1986
1983 def pull(ui, repo, source="default", **opts):
1987 def pull(ui, repo, source="default", **opts):
1984 """pull changes from the specified source
1988 """pull changes from the specified source
1985
1989
1986 Pull changes from a remote repository to a local one.
1990 Pull changes from a remote repository to a local one.
1987
1991
1988 This finds all changes from the repository at the specified path
1992 This finds all changes from the repository at the specified path
1989 or URL and adds them to the local repository. By default, this
1993 or URL and adds them to the local repository. By default, this
1990 does not update the copy of the project in the working directory.
1994 does not update the copy of the project in the working directory.
1991
1995
1992 Valid URLs are of the form:
1996 Valid URLs are of the form:
1993
1997
1994 local/filesystem/path (or file://local/filesystem/path)
1998 local/filesystem/path (or file://local/filesystem/path)
1995 http://[user@]host[:port]/[path]
1999 http://[user@]host[:port]/[path]
1996 https://[user@]host[:port]/[path]
2000 https://[user@]host[:port]/[path]
1997 ssh://[user@]host[:port]/[path]
2001 ssh://[user@]host[:port]/[path]
1998 static-http://host[:port]/[path]
2002 static-http://host[:port]/[path]
1999
2003
2000 Paths in the local filesystem can either point to Mercurial
2004 Paths in the local filesystem can either point to Mercurial
2001 repositories or to bundle files (as created by 'hg bundle' or
2005 repositories or to bundle files (as created by 'hg bundle' or
2002 'hg incoming --bundle'). The static-http:// protocol, albeit slow,
2006 'hg incoming --bundle'). The static-http:// protocol, albeit slow,
2003 allows access to a Mercurial repository where you simply use a web
2007 allows access to a Mercurial repository where you simply use a web
2004 server to publish the .hg directory as static content.
2008 server to publish the .hg directory as static content.
2005
2009
2006 An optional identifier after # indicates a particular branch, tag,
2010 An optional identifier after # indicates a particular branch, tag,
2007 or changeset to pull.
2011 or changeset to pull.
2008
2012
2009 Some notes about using SSH with Mercurial:
2013 Some notes about using SSH with Mercurial:
2010 - SSH requires an accessible shell account on the destination machine
2014 - SSH requires an accessible shell account on the destination machine
2011 and a copy of hg in the remote path or specified with as remotecmd.
2015 and a copy of hg in the remote path or specified with as remotecmd.
2012 - path is relative to the remote user's home directory by default.
2016 - path is relative to the remote user's home directory by default.
2013 Use an extra slash at the start of a path to specify an absolute path:
2017 Use an extra slash at the start of a path to specify an absolute path:
2014 ssh://example.com//tmp/repository
2018 ssh://example.com//tmp/repository
2015 - Mercurial doesn't use its own compression via SSH; the right thing
2019 - Mercurial doesn't use its own compression via SSH; the right thing
2016 to do is to configure it in your ~/.ssh/config, e.g.:
2020 to do is to configure it in your ~/.ssh/config, e.g.:
2017 Host *.mylocalnetwork.example.com
2021 Host *.mylocalnetwork.example.com
2018 Compression no
2022 Compression no
2019 Host *
2023 Host *
2020 Compression yes
2024 Compression yes
2021 Alternatively specify "ssh -C" as your ssh command in your hgrc or
2025 Alternatively specify "ssh -C" as your ssh command in your hgrc or
2022 with the --ssh command line option.
2026 with the --ssh command line option.
2023 """
2027 """
2024 source, revs, checkout = hg.parseurl(ui.expandpath(source), opts['rev'])
2028 source, revs, checkout = hg.parseurl(ui.expandpath(source), opts['rev'])
2025 cmdutil.setremoteconfig(ui, opts)
2029 cmdutil.setremoteconfig(ui, opts)
2026
2030
2027 other = hg.repository(ui, source)
2031 other = hg.repository(ui, source)
2028 ui.status(_('pulling from %s\n') % util.hidepassword(source))
2032 ui.status(_('pulling from %s\n') % util.hidepassword(source))
2029 if revs:
2033 if revs:
2030 try:
2034 try:
2031 revs = [other.lookup(rev) for rev in revs]
2035 revs = [other.lookup(rev) for rev in revs]
2032 except repo.NoCapability:
2036 except repo.NoCapability:
2033 error = _("Other repository doesn't support revision lookup, "
2037 error = _("Other repository doesn't support revision lookup, "
2034 "so a rev cannot be specified.")
2038 "so a rev cannot be specified.")
2035 raise util.Abort(error)
2039 raise util.Abort(error)
2036
2040
2037 modheads = repo.pull(other, heads=revs, force=opts['force'])
2041 modheads = repo.pull(other, heads=revs, force=opts['force'])
2038 return postincoming(ui, repo, modheads, opts['update'], checkout)
2042 return postincoming(ui, repo, modheads, opts['update'], checkout)
2039
2043
2040 def push(ui, repo, dest=None, **opts):
2044 def push(ui, repo, dest=None, **opts):
2041 """push changes to the specified destination
2045 """push changes to the specified destination
2042
2046
2043 Push changes from the local repository to the given destination.
2047 Push changes from the local repository to the given destination.
2044
2048
2045 This is the symmetrical operation for pull. It helps to move
2049 This is the symmetrical operation for pull. It helps to move
2046 changes from the current repository to a different one. If the
2050 changes from the current repository to a different one. If the
2047 destination is local this is identical to a pull in that directory
2051 destination is local this is identical to a pull in that directory
2048 from the current one.
2052 from the current one.
2049
2053
2050 By default, push will refuse to run if it detects the result would
2054 By default, push will refuse to run if it detects the result would
2051 increase the number of remote heads. This generally indicates the
2055 increase the number of remote heads. This generally indicates the
2052 the client has forgotten to sync and merge before pushing.
2056 the client has forgotten to sync and merge before pushing.
2053
2057
2054 Valid URLs are of the form:
2058 Valid URLs are of the form:
2055
2059
2056 local/filesystem/path (or file://local/filesystem/path)
2060 local/filesystem/path (or file://local/filesystem/path)
2057 ssh://[user@]host[:port]/[path]
2061 ssh://[user@]host[:port]/[path]
2058 http://[user@]host[:port]/[path]
2062 http://[user@]host[:port]/[path]
2059 https://[user@]host[:port]/[path]
2063 https://[user@]host[:port]/[path]
2060
2064
2061 An optional identifier after # indicates a particular branch, tag,
2065 An optional identifier after # indicates a particular branch, tag,
2062 or changeset to push.
2066 or changeset to push.
2063
2067
2064 Look at the help text for the pull command for important details
2068 Look at the help text for the pull command for important details
2065 about ssh:// URLs.
2069 about ssh:// URLs.
2066
2070
2067 Pushing to http:// and https:// URLs is only possible, if this
2071 Pushing to http:// and https:// URLs is only possible, if this
2068 feature is explicitly enabled on the remote Mercurial server.
2072 feature is explicitly enabled on the remote Mercurial server.
2069 """
2073 """
2070 dest, revs, checkout = hg.parseurl(
2074 dest, revs, checkout = hg.parseurl(
2071 ui.expandpath(dest or 'default-push', dest or 'default'), opts['rev'])
2075 ui.expandpath(dest or 'default-push', dest or 'default'), opts['rev'])
2072 cmdutil.setremoteconfig(ui, opts)
2076 cmdutil.setremoteconfig(ui, opts)
2073
2077
2074 other = hg.repository(ui, dest)
2078 other = hg.repository(ui, dest)
2075 ui.status('pushing to %s\n' % util.hidepassword(dest))
2079 ui.status('pushing to %s\n' % util.hidepassword(dest))
2076 if revs:
2080 if revs:
2077 revs = [repo.lookup(rev) for rev in revs]
2081 revs = [repo.lookup(rev) for rev in revs]
2078 r = repo.push(other, opts['force'], revs=revs)
2082 r = repo.push(other, opts['force'], revs=revs)
2079 return r == 0
2083 return r == 0
2080
2084
2081 def rawcommit(ui, repo, *pats, **opts):
2085 def rawcommit(ui, repo, *pats, **opts):
2082 """raw commit interface (DEPRECATED)
2086 """raw commit interface (DEPRECATED)
2083
2087
2084 (DEPRECATED)
2088 (DEPRECATED)
2085 Lowlevel commit, for use in helper scripts.
2089 Lowlevel commit, for use in helper scripts.
2086
2090
2087 This command is not intended to be used by normal users, as it is
2091 This command is not intended to be used by normal users, as it is
2088 primarily useful for importing from other SCMs.
2092 primarily useful for importing from other SCMs.
2089
2093
2090 This command is now deprecated and will be removed in a future
2094 This command is now deprecated and will be removed in a future
2091 release, please use debugsetparents and commit instead.
2095 release, please use debugsetparents and commit instead.
2092 """
2096 """
2093
2097
2094 ui.warn(_("(the rawcommit command is deprecated)\n"))
2098 ui.warn(_("(the rawcommit command is deprecated)\n"))
2095
2099
2096 message = cmdutil.logmessage(opts)
2100 message = cmdutil.logmessage(opts)
2097
2101
2098 files, match, anypats = cmdutil.matchpats(repo, pats, opts)
2102 files, match, anypats = cmdutil.matchpats(repo, pats, opts)
2099 if opts['files']:
2103 if opts['files']:
2100 files += open(opts['files']).read().splitlines()
2104 files += open(opts['files']).read().splitlines()
2101
2105
2102 parents = [repo.lookup(p) for p in opts['parent']]
2106 parents = [repo.lookup(p) for p in opts['parent']]
2103
2107
2104 try:
2108 try:
2105 repo.rawcommit(files, message, opts['user'], opts['date'], *parents)
2109 repo.rawcommit(files, message, opts['user'], opts['date'], *parents)
2106 except ValueError, inst:
2110 except ValueError, inst:
2107 raise util.Abort(str(inst))
2111 raise util.Abort(str(inst))
2108
2112
2109 def recover(ui, repo):
2113 def recover(ui, repo):
2110 """roll back an interrupted transaction
2114 """roll back an interrupted transaction
2111
2115
2112 Recover from an interrupted commit or pull.
2116 Recover from an interrupted commit or pull.
2113
2117
2114 This command tries to fix the repository status after an interrupted
2118 This command tries to fix the repository status after an interrupted
2115 operation. It should only be necessary when Mercurial suggests it.
2119 operation. It should only be necessary when Mercurial suggests it.
2116 """
2120 """
2117 if repo.recover():
2121 if repo.recover():
2118 return hg.verify(repo)
2122 return hg.verify(repo)
2119 return 1
2123 return 1
2120
2124
2121 def remove(ui, repo, *pats, **opts):
2125 def remove(ui, repo, *pats, **opts):
2122 """remove the specified files on the next commit
2126 """remove the specified files on the next commit
2123
2127
2124 Schedule the indicated files for removal from the repository.
2128 Schedule the indicated files for removal from the repository.
2125
2129
2126 This only removes files from the current branch, not from the
2130 This only removes files from the current branch, not from the
2127 entire project history. If the files still exist in the working
2131 entire project history. If the files still exist in the working
2128 directory, they will be deleted from it. If invoked with --after,
2132 directory, they will be deleted from it. If invoked with --after,
2129 files are marked as removed, but not actually unlinked unless --force
2133 files are marked as removed, but not actually unlinked unless --force
2130 is also given. Without exact file names, --after will only mark
2134 is also given. Without exact file names, --after will only mark
2131 files as removed if they are no longer in the working directory.
2135 files as removed if they are no longer in the working directory.
2132
2136
2133 This command schedules the files to be removed at the next commit.
2137 This command schedules the files to be removed at the next commit.
2134 To undo a remove before that, see hg revert.
2138 To undo a remove before that, see hg revert.
2135
2139
2136 Modified files and added files are not removed by default. To
2140 Modified files and added files are not removed by default. To
2137 remove them, use the -f/--force option.
2141 remove them, use the -f/--force option.
2138 """
2142 """
2139 if not opts['after'] and not pats:
2143 if not opts['after'] and not pats:
2140 raise util.Abort(_('no files specified'))
2144 raise util.Abort(_('no files specified'))
2141 files, matchfn, anypats = cmdutil.matchpats(repo, pats, opts)
2145 files, matchfn, anypats = cmdutil.matchpats(repo, pats, opts)
2142 exact = dict.fromkeys(files)
2146 exact = dict.fromkeys(files)
2143 mardu = map(dict.fromkeys, repo.status(files=files, match=matchfn))[:5]
2147 mardu = map(dict.fromkeys, repo.status(files=files, match=matchfn))[:5]
2144 modified, added, removed, deleted, unknown = mardu
2148 modified, added, removed, deleted, unknown = mardu
2145 remove, forget = [], []
2149 remove, forget = [], []
2146 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts):
2150 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts):
2147 reason = None
2151 reason = None
2148 if abs in modified and not opts['force']:
2152 if abs in modified and not opts['force']:
2149 reason = _('is modified (use -f to force removal)')
2153 reason = _('is modified (use -f to force removal)')
2150 elif abs in added:
2154 elif abs in added:
2151 if opts['force']:
2155 if opts['force']:
2152 forget.append(abs)
2156 forget.append(abs)
2153 continue
2157 continue
2154 reason = _('has been marked for add (use -f to force removal)')
2158 reason = _('has been marked for add (use -f to force removal)')
2155 exact = 1 # force the message
2159 exact = 1 # force the message
2156 elif abs not in repo.dirstate:
2160 elif abs not in repo.dirstate:
2157 reason = _('is not managed')
2161 reason = _('is not managed')
2158 elif opts['after'] and not exact and abs not in deleted:
2162 elif opts['after'] and not exact and abs not in deleted:
2159 continue
2163 continue
2160 elif abs in removed:
2164 elif abs in removed:
2161 continue
2165 continue
2162 if reason:
2166 if reason:
2163 if exact:
2167 if exact:
2164 ui.warn(_('not removing %s: file %s\n') % (rel, reason))
2168 ui.warn(_('not removing %s: file %s\n') % (rel, reason))
2165 else:
2169 else:
2166 if ui.verbose or not exact:
2170 if ui.verbose or not exact:
2167 ui.status(_('removing %s\n') % rel)
2171 ui.status(_('removing %s\n') % rel)
2168 remove.append(abs)
2172 remove.append(abs)
2169 repo.forget(forget)
2173 repo.forget(forget)
2170 repo.remove(remove, unlink=opts['force'] or not opts['after'])
2174 repo.remove(remove, unlink=opts['force'] or not opts['after'])
2171
2175
2172 def rename(ui, repo, *pats, **opts):
2176 def rename(ui, repo, *pats, **opts):
2173 """rename files; equivalent of copy + remove
2177 """rename files; equivalent of copy + remove
2174
2178
2175 Mark dest as copies of sources; mark sources for deletion. If
2179 Mark dest as copies of sources; mark sources for deletion. If
2176 dest is a directory, copies are put in that directory. If dest is
2180 dest is a directory, copies are put in that directory. If dest is
2177 a file, there can only be one source.
2181 a file, there can only be one source.
2178
2182
2179 By default, this command copies the contents of files as they
2183 By default, this command copies the contents of files as they
2180 stand in the working directory. If invoked with --after, the
2184 stand in the working directory. If invoked with --after, the
2181 operation is recorded, but no copying is performed.
2185 operation is recorded, but no copying is performed.
2182
2186
2183 This command takes effect in the next commit. To undo a rename
2187 This command takes effect in the next commit. To undo a rename
2184 before that, see hg revert.
2188 before that, see hg revert.
2185 """
2189 """
2186 wlock = repo.wlock(False)
2190 wlock = repo.wlock(False)
2187 try:
2191 try:
2188 return cmdutil.copy(ui, repo, pats, opts, rename=True)
2192 return cmdutil.copy(ui, repo, pats, opts, rename=True)
2189 finally:
2193 finally:
2190 del wlock
2194 del wlock
2191
2195
2192 def revert(ui, repo, *pats, **opts):
2196 def revert(ui, repo, *pats, **opts):
2193 """restore individual files or dirs to an earlier state
2197 """restore individual files or dirs to an earlier state
2194
2198
2195 (use update -r to check out earlier revisions, revert does not
2199 (use update -r to check out earlier revisions, revert does not
2196 change the working dir parents)
2200 change the working dir parents)
2197
2201
2198 With no revision specified, revert the named files or directories
2202 With no revision specified, revert the named files or directories
2199 to the contents they had in the parent of the working directory.
2203 to the contents they had in the parent of the working directory.
2200 This restores the contents of the affected files to an unmodified
2204 This restores the contents of the affected files to an unmodified
2201 state and unschedules adds, removes, copies, and renames. If the
2205 state and unschedules adds, removes, copies, and renames. If the
2202 working directory has two parents, you must explicitly specify the
2206 working directory has two parents, you must explicitly specify the
2203 revision to revert to.
2207 revision to revert to.
2204
2208
2205 Using the -r option, revert the given files or directories to their
2209 Using the -r option, revert the given files or directories to their
2206 contents as of a specific revision. This can be helpful to "roll
2210 contents as of a specific revision. This can be helpful to "roll
2207 back" some or all of an earlier change.
2211 back" some or all of an earlier change.
2208 See 'hg help dates' for a list of formats valid for -d/--date.
2212 See 'hg help dates' for a list of formats valid for -d/--date.
2209
2213
2210 Revert modifies the working directory. It does not commit any
2214 Revert modifies the working directory. It does not commit any
2211 changes, or change the parent of the working directory. If you
2215 changes, or change the parent of the working directory. If you
2212 revert to a revision other than the parent of the working
2216 revert to a revision other than the parent of the working
2213 directory, the reverted files will thus appear modified
2217 directory, the reverted files will thus appear modified
2214 afterwards.
2218 afterwards.
2215
2219
2216 If a file has been deleted, it is restored. If the executable
2220 If a file has been deleted, it is restored. If the executable
2217 mode of a file was changed, it is reset.
2221 mode of a file was changed, it is reset.
2218
2222
2219 If names are given, all files matching the names are reverted.
2223 If names are given, all files matching the names are reverted.
2220 If no arguments are given, no files are reverted.
2224 If no arguments are given, no files are reverted.
2221
2225
2222 Modified files are saved with a .orig suffix before reverting.
2226 Modified files are saved with a .orig suffix before reverting.
2223 To disable these backups, use --no-backup.
2227 To disable these backups, use --no-backup.
2224 """
2228 """
2225
2229
2226 if opts["date"]:
2230 if opts["date"]:
2227 if opts["rev"]:
2231 if opts["rev"]:
2228 raise util.Abort(_("you can't specify a revision and a date"))
2232 raise util.Abort(_("you can't specify a revision and a date"))
2229 opts["rev"] = cmdutil.finddate(ui, repo, opts["date"])
2233 opts["rev"] = cmdutil.finddate(ui, repo, opts["date"])
2230
2234
2231 if not pats and not opts['all']:
2235 if not pats and not opts['all']:
2232 raise util.Abort(_('no files or directories specified; '
2236 raise util.Abort(_('no files or directories specified; '
2233 'use --all to revert the whole repo'))
2237 'use --all to revert the whole repo'))
2234
2238
2235 parent, p2 = repo.dirstate.parents()
2239 parent, p2 = repo.dirstate.parents()
2236 if not opts['rev'] and p2 != nullid:
2240 if not opts['rev'] and p2 != nullid:
2237 raise util.Abort(_('uncommitted merge - please provide a '
2241 raise util.Abort(_('uncommitted merge - please provide a '
2238 'specific revision'))
2242 'specific revision'))
2239 ctx = repo.changectx(opts['rev'])
2243 ctx = repo.changectx(opts['rev'])
2240 node = ctx.node()
2244 node = ctx.node()
2241 mf = ctx.manifest()
2245 mf = ctx.manifest()
2242 if node == parent:
2246 if node == parent:
2243 pmf = mf
2247 pmf = mf
2244 else:
2248 else:
2245 pmf = None
2249 pmf = None
2246
2250
2247 # need all matching names in dirstate and manifest of target rev,
2251 # need all matching names in dirstate and manifest of target rev,
2248 # so have to walk both. do not print errors if files exist in one
2252 # so have to walk both. do not print errors if files exist in one
2249 # but not other.
2253 # but not other.
2250
2254
2251 names = {}
2255 names = {}
2252
2256
2253 wlock = repo.wlock()
2257 wlock = repo.wlock()
2254 try:
2258 try:
2255 # walk dirstate.
2259 # walk dirstate.
2256 files = []
2260 files = []
2257 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts,
2261 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts,
2258 badmatch=mf.has_key):
2262 badmatch=mf.has_key):
2259 names[abs] = (rel, exact)
2263 names[abs] = (rel, exact)
2260 if src != 'b':
2264 if src != 'b':
2261 files.append(abs)
2265 files.append(abs)
2262
2266
2263 # walk target manifest.
2267 # walk target manifest.
2264
2268
2265 def badmatch(path):
2269 def badmatch(path):
2266 if path in names:
2270 if path in names:
2267 return True
2271 return True
2268 path_ = path + '/'
2272 path_ = path + '/'
2269 for f in names:
2273 for f in names:
2270 if f.startswith(path_):
2274 if f.startswith(path_):
2271 return True
2275 return True
2272 return False
2276 return False
2273
2277
2274 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts, node=node,
2278 for src, abs, rel, exact in cmdutil.walk(repo, pats, opts, node=node,
2275 badmatch=badmatch):
2279 badmatch=badmatch):
2276 if abs in names or src == 'b':
2280 if abs in names or src == 'b':
2277 continue
2281 continue
2278 names[abs] = (rel, exact)
2282 names[abs] = (rel, exact)
2279
2283
2280 changes = repo.status(files=files, match=names.has_key)[:4]
2284 changes = repo.status(files=files, match=names.has_key)[:4]
2281 modified, added, removed, deleted = map(dict.fromkeys, changes)
2285 modified, added, removed, deleted = map(dict.fromkeys, changes)
2282
2286
2283 # if f is a rename, also revert the source
2287 # if f is a rename, also revert the source
2284 cwd = repo.getcwd()
2288 cwd = repo.getcwd()
2285 for f in added:
2289 for f in added:
2286 src = repo.dirstate.copied(f)
2290 src = repo.dirstate.copied(f)
2287 if src and src not in names and repo.dirstate[src] == 'r':
2291 if src and src not in names and repo.dirstate[src] == 'r':
2288 removed[src] = None
2292 removed[src] = None
2289 names[src] = (repo.pathto(src, cwd), True)
2293 names[src] = (repo.pathto(src, cwd), True)
2290
2294
2291 def removeforget(abs):
2295 def removeforget(abs):
2292 if repo.dirstate[abs] == 'a':
2296 if repo.dirstate[abs] == 'a':
2293 return _('forgetting %s\n')
2297 return _('forgetting %s\n')
2294 return _('removing %s\n')
2298 return _('removing %s\n')
2295
2299
2296 revert = ([], _('reverting %s\n'))
2300 revert = ([], _('reverting %s\n'))
2297 add = ([], _('adding %s\n'))
2301 add = ([], _('adding %s\n'))
2298 remove = ([], removeforget)
2302 remove = ([], removeforget)
2299 undelete = ([], _('undeleting %s\n'))
2303 undelete = ([], _('undeleting %s\n'))
2300
2304
2301 disptable = (
2305 disptable = (
2302 # dispatch table:
2306 # dispatch table:
2303 # file state
2307 # file state
2304 # action if in target manifest
2308 # action if in target manifest
2305 # action if not in target manifest
2309 # action if not in target manifest
2306 # make backup if in target manifest
2310 # make backup if in target manifest
2307 # make backup if not in target manifest
2311 # make backup if not in target manifest
2308 (modified, revert, remove, True, True),
2312 (modified, revert, remove, True, True),
2309 (added, revert, remove, True, False),
2313 (added, revert, remove, True, False),
2310 (removed, undelete, None, False, False),
2314 (removed, undelete, None, False, False),
2311 (deleted, revert, remove, False, False),
2315 (deleted, revert, remove, False, False),
2312 )
2316 )
2313
2317
2314 entries = names.items()
2318 entries = names.items()
2315 entries.sort()
2319 entries.sort()
2316
2320
2317 for abs, (rel, exact) in entries:
2321 for abs, (rel, exact) in entries:
2318 mfentry = mf.get(abs)
2322 mfentry = mf.get(abs)
2319 target = repo.wjoin(abs)
2323 target = repo.wjoin(abs)
2320 def handle(xlist, dobackup):
2324 def handle(xlist, dobackup):
2321 xlist[0].append(abs)
2325 xlist[0].append(abs)
2322 if dobackup and not opts['no_backup'] and util.lexists(target):
2326 if dobackup and not opts['no_backup'] and util.lexists(target):
2323 bakname = "%s.orig" % rel
2327 bakname = "%s.orig" % rel
2324 ui.note(_('saving current version of %s as %s\n') %
2328 ui.note(_('saving current version of %s as %s\n') %
2325 (rel, bakname))
2329 (rel, bakname))
2326 if not opts.get('dry_run'):
2330 if not opts.get('dry_run'):
2327 util.copyfile(target, bakname)
2331 util.copyfile(target, bakname)
2328 if ui.verbose or not exact:
2332 if ui.verbose or not exact:
2329 msg = xlist[1]
2333 msg = xlist[1]
2330 if not isinstance(msg, basestring):
2334 if not isinstance(msg, basestring):
2331 msg = msg(abs)
2335 msg = msg(abs)
2332 ui.status(msg % rel)
2336 ui.status(msg % rel)
2333 for table, hitlist, misslist, backuphit, backupmiss in disptable:
2337 for table, hitlist, misslist, backuphit, backupmiss in disptable:
2334 if abs not in table: continue
2338 if abs not in table: continue
2335 # file has changed in dirstate
2339 # file has changed in dirstate
2336 if mfentry:
2340 if mfentry:
2337 handle(hitlist, backuphit)
2341 handle(hitlist, backuphit)
2338 elif misslist is not None:
2342 elif misslist is not None:
2339 handle(misslist, backupmiss)
2343 handle(misslist, backupmiss)
2340 break
2344 break
2341 else:
2345 else:
2342 if abs not in repo.dirstate:
2346 if abs not in repo.dirstate:
2343 if mfentry:
2347 if mfentry:
2344 handle(add, True)
2348 handle(add, True)
2345 elif exact:
2349 elif exact:
2346 ui.warn(_('file not managed: %s\n') % rel)
2350 ui.warn(_('file not managed: %s\n') % rel)
2347 continue
2351 continue
2348 # file has not changed in dirstate
2352 # file has not changed in dirstate
2349 if node == parent:
2353 if node == parent:
2350 if exact: ui.warn(_('no changes needed to %s\n') % rel)
2354 if exact: ui.warn(_('no changes needed to %s\n') % rel)
2351 continue
2355 continue
2352 if pmf is None:
2356 if pmf is None:
2353 # only need parent manifest in this unlikely case,
2357 # only need parent manifest in this unlikely case,
2354 # so do not read by default
2358 # so do not read by default
2355 pmf = repo.changectx(parent).manifest()
2359 pmf = repo.changectx(parent).manifest()
2356 if abs in pmf:
2360 if abs in pmf:
2357 if mfentry:
2361 if mfentry:
2358 # if version of file is same in parent and target
2362 # if version of file is same in parent and target
2359 # manifests, do nothing
2363 # manifests, do nothing
2360 if (pmf[abs] != mfentry or
2364 if (pmf[abs] != mfentry or
2361 pmf.flags(abs) != mf.flags(abs)):
2365 pmf.flags(abs) != mf.flags(abs)):
2362 handle(revert, False)
2366 handle(revert, False)
2363 else:
2367 else:
2364 handle(remove, False)
2368 handle(remove, False)
2365
2369
2366 if not opts.get('dry_run'):
2370 if not opts.get('dry_run'):
2367 def checkout(f):
2371 def checkout(f):
2368 fc = ctx[f]
2372 fc = ctx[f]
2369 repo.wwrite(f, fc.data(), fc.fileflags())
2373 repo.wwrite(f, fc.data(), fc.fileflags())
2370
2374
2371 audit_path = util.path_auditor(repo.root)
2375 audit_path = util.path_auditor(repo.root)
2372 for f in remove[0]:
2376 for f in remove[0]:
2373 if repo.dirstate[f] == 'a':
2377 if repo.dirstate[f] == 'a':
2374 repo.dirstate.forget(f)
2378 repo.dirstate.forget(f)
2375 continue
2379 continue
2376 audit_path(f)
2380 audit_path(f)
2377 try:
2381 try:
2378 util.unlink(repo.wjoin(f))
2382 util.unlink(repo.wjoin(f))
2379 except OSError:
2383 except OSError:
2380 pass
2384 pass
2381 repo.dirstate.remove(f)
2385 repo.dirstate.remove(f)
2382
2386
2383 normal = None
2387 normal = None
2384 if node == parent:
2388 if node == parent:
2385 # We're reverting to our parent. If possible, we'd like status
2389 # We're reverting to our parent. If possible, we'd like status
2386 # to report the file as clean. We have to use normallookup for
2390 # to report the file as clean. We have to use normallookup for
2387 # merges to avoid losing information about merged/dirty files.
2391 # merges to avoid losing information about merged/dirty files.
2388 if p2 != nullid:
2392 if p2 != nullid:
2389 normal = repo.dirstate.normallookup
2393 normal = repo.dirstate.normallookup
2390 else:
2394 else:
2391 normal = repo.dirstate.normal
2395 normal = repo.dirstate.normal
2392 for f in revert[0]:
2396 for f in revert[0]:
2393 checkout(f)
2397 checkout(f)
2394 if normal:
2398 if normal:
2395 normal(f)
2399 normal(f)
2396
2400
2397 for f in add[0]:
2401 for f in add[0]:
2398 checkout(f)
2402 checkout(f)
2399 repo.dirstate.add(f)
2403 repo.dirstate.add(f)
2400
2404
2401 normal = repo.dirstate.normallookup
2405 normal = repo.dirstate.normallookup
2402 if node == parent and p2 == nullid:
2406 if node == parent and p2 == nullid:
2403 normal = repo.dirstate.normal
2407 normal = repo.dirstate.normal
2404 for f in undelete[0]:
2408 for f in undelete[0]:
2405 checkout(f)
2409 checkout(f)
2406 normal(f)
2410 normal(f)
2407
2411
2408 finally:
2412 finally:
2409 del wlock
2413 del wlock
2410
2414
2411 def rollback(ui, repo):
2415 def rollback(ui, repo):
2412 """roll back the last transaction
2416 """roll back the last transaction
2413
2417
2414 This command should be used with care. There is only one level of
2418 This command should be used with care. There is only one level of
2415 rollback, and there is no way to undo a rollback. It will also
2419 rollback, and there is no way to undo a rollback. It will also
2416 restore the dirstate at the time of the last transaction, losing
2420 restore the dirstate at the time of the last transaction, losing
2417 any dirstate changes since that time.
2421 any dirstate changes since that time.
2418
2422
2419 Transactions are used to encapsulate the effects of all commands
2423 Transactions are used to encapsulate the effects of all commands
2420 that create new changesets or propagate existing changesets into a
2424 that create new changesets or propagate existing changesets into a
2421 repository. For example, the following commands are transactional,
2425 repository. For example, the following commands are transactional,
2422 and their effects can be rolled back:
2426 and their effects can be rolled back:
2423
2427
2424 commit
2428 commit
2425 import
2429 import
2426 pull
2430 pull
2427 push (with this repository as destination)
2431 push (with this repository as destination)
2428 unbundle
2432 unbundle
2429
2433
2430 This command is not intended for use on public repositories. Once
2434 This command is not intended for use on public repositories. Once
2431 changes are visible for pull by other users, rolling a transaction
2435 changes are visible for pull by other users, rolling a transaction
2432 back locally is ineffective (someone else may already have pulled
2436 back locally is ineffective (someone else may already have pulled
2433 the changes). Furthermore, a race is possible with readers of the
2437 the changes). Furthermore, a race is possible with readers of the
2434 repository; for example an in-progress pull from the repository
2438 repository; for example an in-progress pull from the repository
2435 may fail if a rollback is performed.
2439 may fail if a rollback is performed.
2436 """
2440 """
2437 repo.rollback()
2441 repo.rollback()
2438
2442
2439 def root(ui, repo):
2443 def root(ui, repo):
2440 """print the root (top) of the current working dir
2444 """print the root (top) of the current working dir
2441
2445
2442 Print the root directory of the current repository.
2446 Print the root directory of the current repository.
2443 """
2447 """
2444 ui.write(repo.root + "\n")
2448 ui.write(repo.root + "\n")
2445
2449
2446 def serve(ui, repo, **opts):
2450 def serve(ui, repo, **opts):
2447 """export the repository via HTTP
2451 """export the repository via HTTP
2448
2452
2449 Start a local HTTP repository browser and pull server.
2453 Start a local HTTP repository browser and pull server.
2450
2454
2451 By default, the server logs accesses to stdout and errors to
2455 By default, the server logs accesses to stdout and errors to
2452 stderr. Use the "-A" and "-E" options to log to files.
2456 stderr. Use the "-A" and "-E" options to log to files.
2453 """
2457 """
2454
2458
2455 if opts["stdio"]:
2459 if opts["stdio"]:
2456 if repo is None:
2460 if repo is None:
2457 raise RepoError(_("There is no Mercurial repository here"
2461 raise RepoError(_("There is no Mercurial repository here"
2458 " (.hg not found)"))
2462 " (.hg not found)"))
2459 s = sshserver.sshserver(ui, repo)
2463 s = sshserver.sshserver(ui, repo)
2460 s.serve_forever()
2464 s.serve_forever()
2461
2465
2462 parentui = ui.parentui or ui
2466 parentui = ui.parentui or ui
2463 optlist = ("name templates style address port prefix ipv6"
2467 optlist = ("name templates style address port prefix ipv6"
2464 " accesslog errorlog webdir_conf certificate")
2468 " accesslog errorlog webdir_conf certificate")
2465 for o in optlist.split():
2469 for o in optlist.split():
2466 if opts[o]:
2470 if opts[o]:
2467 parentui.setconfig("web", o, str(opts[o]))
2471 parentui.setconfig("web", o, str(opts[o]))
2468 if (repo is not None) and (repo.ui != parentui):
2472 if (repo is not None) and (repo.ui != parentui):
2469 repo.ui.setconfig("web", o, str(opts[o]))
2473 repo.ui.setconfig("web", o, str(opts[o]))
2470
2474
2471 if repo is None and not ui.config("web", "webdir_conf"):
2475 if repo is None and not ui.config("web", "webdir_conf"):
2472 raise RepoError(_("There is no Mercurial repository here"
2476 raise RepoError(_("There is no Mercurial repository here"
2473 " (.hg not found)"))
2477 " (.hg not found)"))
2474
2478
2475 class service:
2479 class service:
2476 def init(self):
2480 def init(self):
2477 util.set_signal_handler()
2481 util.set_signal_handler()
2478 self.httpd = hgweb.server.create_server(parentui, repo)
2482 self.httpd = hgweb.server.create_server(parentui, repo)
2479
2483
2480 if not ui.verbose: return
2484 if not ui.verbose: return
2481
2485
2482 if self.httpd.prefix:
2486 if self.httpd.prefix:
2483 prefix = self.httpd.prefix.strip('/') + '/'
2487 prefix = self.httpd.prefix.strip('/') + '/'
2484 else:
2488 else:
2485 prefix = ''
2489 prefix = ''
2486
2490
2487 port = ':%d' % self.httpd.port
2491 port = ':%d' % self.httpd.port
2488 if port == ':80':
2492 if port == ':80':
2489 port = ''
2493 port = ''
2490
2494
2491 ui.status(_('listening at http://%s%s/%s (%s:%d)\n') %
2495 ui.status(_('listening at http://%s%s/%s (%s:%d)\n') %
2492 (self.httpd.fqaddr, port, prefix, self.httpd.addr, self.httpd.port))
2496 (self.httpd.fqaddr, port, prefix, self.httpd.addr, self.httpd.port))
2493
2497
2494 def run(self):
2498 def run(self):
2495 self.httpd.serve_forever()
2499 self.httpd.serve_forever()
2496
2500
2497 service = service()
2501 service = service()
2498
2502
2499 cmdutil.service(opts, initfn=service.init, runfn=service.run)
2503 cmdutil.service(opts, initfn=service.init, runfn=service.run)
2500
2504
2501 def status(ui, repo, *pats, **opts):
2505 def status(ui, repo, *pats, **opts):
2502 """show changed files in the working directory
2506 """show changed files in the working directory
2503
2507
2504 Show status of files in the repository. If names are given, only
2508 Show status of files in the repository. If names are given, only
2505 files that match are shown. Files that are clean or ignored or
2509 files that match are shown. Files that are clean or ignored or
2506 source of a copy/move operation, are not listed unless -c (clean),
2510 source of a copy/move operation, are not listed unless -c (clean),
2507 -i (ignored), -C (copies) or -A is given. Unless options described
2511 -i (ignored), -C (copies) or -A is given. Unless options described
2508 with "show only ..." are given, the options -mardu are used.
2512 with "show only ..." are given, the options -mardu are used.
2509
2513
2510 Option -q/--quiet hides untracked (unknown and ignored) files
2514 Option -q/--quiet hides untracked (unknown and ignored) files
2511 unless explicitly requested with -u/--unknown or -i/-ignored.
2515 unless explicitly requested with -u/--unknown or -i/-ignored.
2512
2516
2513 NOTE: status may appear to disagree with diff if permissions have
2517 NOTE: status may appear to disagree with diff if permissions have
2514 changed or a merge has occurred. The standard diff format does not
2518 changed or a merge has occurred. The standard diff format does not
2515 report permission changes and diff only reports changes relative
2519 report permission changes and diff only reports changes relative
2516 to one merge parent.
2520 to one merge parent.
2517
2521
2518 If one revision is given, it is used as the base revision.
2522 If one revision is given, it is used as the base revision.
2519 If two revisions are given, the difference between them is shown.
2523 If two revisions are given, the difference between them is shown.
2520
2524
2521 The codes used to show the status of files are:
2525 The codes used to show the status of files are:
2522 M = modified
2526 M = modified
2523 A = added
2527 A = added
2524 R = removed
2528 R = removed
2525 C = clean
2529 C = clean
2526 ! = deleted, but still tracked
2530 ! = deleted, but still tracked
2527 ? = not tracked
2531 ? = not tracked
2528 I = ignored
2532 I = ignored
2529 = the previous added file was copied from here
2533 = the previous added file was copied from here
2530 """
2534 """
2531
2535
2532 all = opts['all']
2536 all = opts['all']
2533 node1, node2 = cmdutil.revpair(repo, opts.get('rev'))
2537 node1, node2 = cmdutil.revpair(repo, opts.get('rev'))
2534
2538
2535 files, matchfn, anypats = cmdutil.matchpats(repo, pats, opts)
2539 files, matchfn, anypats = cmdutil.matchpats(repo, pats, opts)
2536 cwd = (pats and repo.getcwd()) or ''
2540 cwd = (pats and repo.getcwd()) or ''
2537 modified, added, removed, deleted, unknown, ignored, clean = [
2541 modified, added, removed, deleted, unknown, ignored, clean = [
2538 n for n in repo.status(node1=node1, node2=node2, files=files,
2542 n for n in repo.status(node1=node1, node2=node2, files=files,
2539 match=matchfn,
2543 match=matchfn,
2540 list_ignored=opts['ignored']
2544 list_ignored=opts['ignored']
2541 or all and not ui.quiet,
2545 or all and not ui.quiet,
2542 list_clean=opts['clean'] or all,
2546 list_clean=opts['clean'] or all,
2543 list_unknown=opts['unknown']
2547 list_unknown=opts['unknown']
2544 or not (ui.quiet or
2548 or not (ui.quiet or
2545 opts['modified'] or
2549 opts['modified'] or
2546 opts['added'] or
2550 opts['added'] or
2547 opts['removed'] or
2551 opts['removed'] or
2548 opts['deleted'] or
2552 opts['deleted'] or
2549 opts['ignored']))]
2553 opts['ignored']))]
2550
2554
2551 changetypes = (('modified', 'M', modified),
2555 changetypes = (('modified', 'M', modified),
2552 ('added', 'A', added),
2556 ('added', 'A', added),
2553 ('removed', 'R', removed),
2557 ('removed', 'R', removed),
2554 ('deleted', '!', deleted),
2558 ('deleted', '!', deleted),
2555 ('unknown', '?', unknown),
2559 ('unknown', '?', unknown),
2556 ('ignored', 'I', ignored))
2560 ('ignored', 'I', ignored))
2557
2561
2558 explicit_changetypes = changetypes + (('clean', 'C', clean),)
2562 explicit_changetypes = changetypes + (('clean', 'C', clean),)
2559
2563
2560 copy = {}
2564 copy = {}
2561 showcopy = {}
2565 showcopy = {}
2562 if ((all or opts.get('copies')) and not opts.get('no_status')):
2566 if ((all or opts.get('copies')) and not opts.get('no_status')):
2563 if opts.get('rev') == []:
2567 if opts.get('rev') == []:
2564 # fast path, more correct with merge parents
2568 # fast path, more correct with merge parents
2565 showcopy = copy = repo.dirstate.copies().copy()
2569 showcopy = copy = repo.dirstate.copies().copy()
2566 else:
2570 else:
2567 ctxn = repo.changectx(nullid)
2571 ctxn = repo.changectx(nullid)
2568 ctx1 = repo.changectx(node1)
2572 ctx1 = repo.changectx(node1)
2569 ctx2 = repo.changectx(node2)
2573 ctx2 = repo.changectx(node2)
2570 if node2 is None:
2574 if node2 is None:
2571 ctx2 = repo.workingctx()
2575 ctx2 = repo.workingctx()
2572 copy, diverge = copies.copies(repo, ctx1, ctx2, ctxn)
2576 copy, diverge = copies.copies(repo, ctx1, ctx2, ctxn)
2573 for k, v in copy.items():
2577 for k, v in copy.items():
2574 copy[v] = k
2578 copy[v] = k
2575
2579
2576 end = opts['print0'] and '\0' or '\n'
2580 end = opts['print0'] and '\0' or '\n'
2577
2581
2578 for opt, char, changes in ([ct for ct in explicit_changetypes
2582 for opt, char, changes in ([ct for ct in explicit_changetypes
2579 if all or opts[ct[0]]]
2583 if all or opts[ct[0]]]
2580 or changetypes):
2584 or changetypes):
2581
2585
2582 if opts['no_status']:
2586 if opts['no_status']:
2583 format = "%%s%s" % end
2587 format = "%%s%s" % end
2584 else:
2588 else:
2585 format = "%s %%s%s" % (char, end)
2589 format = "%s %%s%s" % (char, end)
2586
2590
2587 for f in changes:
2591 for f in changes:
2588 ui.write(format % repo.pathto(f, cwd))
2592 ui.write(format % repo.pathto(f, cwd))
2589 if f in copy and (f in added or f in showcopy):
2593 if f in copy and (f in added or f in showcopy):
2590 ui.write(' %s%s' % (repo.pathto(copy[f], cwd), end))
2594 ui.write(' %s%s' % (repo.pathto(copy[f], cwd), end))
2591
2595
2592 def tag(ui, repo, name1, *names, **opts):
2596 def tag(ui, repo, name1, *names, **opts):
2593 """add one or more tags for the current or given revision
2597 """add one or more tags for the current or given revision
2594
2598
2595 Name a particular revision using <name>.
2599 Name a particular revision using <name>.
2596
2600
2597 Tags are used to name particular revisions of the repository and are
2601 Tags are used to name particular revisions of the repository and are
2598 very useful to compare different revisions, to go back to significant
2602 very useful to compare different revisions, to go back to significant
2599 earlier versions or to mark branch points as releases, etc.
2603 earlier versions or to mark branch points as releases, etc.
2600
2604
2601 If no revision is given, the parent of the working directory is used,
2605 If no revision is given, the parent of the working directory is used,
2602 or tip if no revision is checked out.
2606 or tip if no revision is checked out.
2603
2607
2604 To facilitate version control, distribution, and merging of tags,
2608 To facilitate version control, distribution, and merging of tags,
2605 they are stored as a file named ".hgtags" which is managed
2609 they are stored as a file named ".hgtags" which is managed
2606 similarly to other project files and can be hand-edited if
2610 similarly to other project files and can be hand-edited if
2607 necessary. The file '.hg/localtags' is used for local tags (not
2611 necessary. The file '.hg/localtags' is used for local tags (not
2608 shared among repositories).
2612 shared among repositories).
2609
2613
2610 See 'hg help dates' for a list of formats valid for -d/--date.
2614 See 'hg help dates' for a list of formats valid for -d/--date.
2611 """
2615 """
2612
2616
2613 rev_ = None
2617 rev_ = None
2614 names = (name1,) + names
2618 names = (name1,) + names
2615 if len(names) != len(dict.fromkeys(names)):
2619 if len(names) != len(dict.fromkeys(names)):
2616 raise util.Abort(_('tag names must be unique'))
2620 raise util.Abort(_('tag names must be unique'))
2617 for n in names:
2621 for n in names:
2618 if n in ['tip', '.', 'null']:
2622 if n in ['tip', '.', 'null']:
2619 raise util.Abort(_('the name \'%s\' is reserved') % n)
2623 raise util.Abort(_('the name \'%s\' is reserved') % n)
2620 if opts['rev'] and opts['remove']:
2624 if opts['rev'] and opts['remove']:
2621 raise util.Abort(_("--rev and --remove are incompatible"))
2625 raise util.Abort(_("--rev and --remove are incompatible"))
2622 if opts['rev']:
2626 if opts['rev']:
2623 rev_ = opts['rev']
2627 rev_ = opts['rev']
2624 message = opts['message']
2628 message = opts['message']
2625 if opts['remove']:
2629 if opts['remove']:
2626 expectedtype = opts['local'] and 'local' or 'global'
2630 expectedtype = opts['local'] and 'local' or 'global'
2627 for n in names:
2631 for n in names:
2628 if not repo.tagtype(n):
2632 if not repo.tagtype(n):
2629 raise util.Abort(_('tag \'%s\' does not exist') % n)
2633 raise util.Abort(_('tag \'%s\' does not exist') % n)
2630 if repo.tagtype(n) != expectedtype:
2634 if repo.tagtype(n) != expectedtype:
2631 raise util.Abort(_('tag \'%s\' is not a %s tag') %
2635 raise util.Abort(_('tag \'%s\' is not a %s tag') %
2632 (n, expectedtype))
2636 (n, expectedtype))
2633 rev_ = nullid
2637 rev_ = nullid
2634 if not message:
2638 if not message:
2635 message = _('Removed tag %s') % ', '.join(names)
2639 message = _('Removed tag %s') % ', '.join(names)
2636 elif not opts['force']:
2640 elif not opts['force']:
2637 for n in names:
2641 for n in names:
2638 if n in repo.tags():
2642 if n in repo.tags():
2639 raise util.Abort(_('tag \'%s\' already exists '
2643 raise util.Abort(_('tag \'%s\' already exists '
2640 '(use -f to force)') % n)
2644 '(use -f to force)') % n)
2641 if not rev_ and repo.dirstate.parents()[1] != nullid:
2645 if not rev_ and repo.dirstate.parents()[1] != nullid:
2642 raise util.Abort(_('uncommitted merge - please provide a '
2646 raise util.Abort(_('uncommitted merge - please provide a '
2643 'specific revision'))
2647 'specific revision'))
2644 r = repo.changectx(rev_).node()
2648 r = repo.changectx(rev_).node()
2645
2649
2646 if not message:
2650 if not message:
2647 message = (_('Added tag %s for changeset %s') %
2651 message = (_('Added tag %s for changeset %s') %
2648 (', '.join(names), short(r)))
2652 (', '.join(names), short(r)))
2649
2653
2650 date = opts.get('date')
2654 date = opts.get('date')
2651 if date:
2655 if date:
2652 date = util.parsedate(date)
2656 date = util.parsedate(date)
2653
2657
2654 repo.tag(names, r, message, opts['local'], opts['user'], date)
2658 repo.tag(names, r, message, opts['local'], opts['user'], date)
2655
2659
2656 def tags(ui, repo):
2660 def tags(ui, repo):
2657 """list repository tags
2661 """list repository tags
2658
2662
2659 List the repository tags.
2663 List the repository tags.
2660
2664
2661 This lists both regular and local tags. When the -v/--verbose switch
2665 This lists both regular and local tags. When the -v/--verbose switch
2662 is used, a third column "local" is printed for local tags.
2666 is used, a third column "local" is printed for local tags.
2663 """
2667 """
2664
2668
2665 l = repo.tagslist()
2669 l = repo.tagslist()
2666 l.reverse()
2670 l.reverse()
2667 hexfunc = ui.debugflag and hex or short
2671 hexfunc = ui.debugflag and hex or short
2668 tagtype = ""
2672 tagtype = ""
2669
2673
2670 for t, n in l:
2674 for t, n in l:
2671 if ui.quiet:
2675 if ui.quiet:
2672 ui.write("%s\n" % t)
2676 ui.write("%s\n" % t)
2673 continue
2677 continue
2674
2678
2675 try:
2679 try:
2676 hn = hexfunc(n)
2680 hn = hexfunc(n)
2677 r = "%5d:%s" % (repo.changelog.rev(n), hn)
2681 r = "%5d:%s" % (repo.changelog.rev(n), hn)
2678 except revlog.LookupError:
2682 except revlog.LookupError:
2679 r = " ?:%s" % hn
2683 r = " ?:%s" % hn
2680 else:
2684 else:
2681 spaces = " " * (30 - util.locallen(t))
2685 spaces = " " * (30 - util.locallen(t))
2682 if ui.verbose:
2686 if ui.verbose:
2683 if repo.tagtype(t) == 'local':
2687 if repo.tagtype(t) == 'local':
2684 tagtype = " local"
2688 tagtype = " local"
2685 else:
2689 else:
2686 tagtype = ""
2690 tagtype = ""
2687 ui.write("%s%s %s%s\n" % (t, spaces, r, tagtype))
2691 ui.write("%s%s %s%s\n" % (t, spaces, r, tagtype))
2688
2692
2689 def tip(ui, repo, **opts):
2693 def tip(ui, repo, **opts):
2690 """show the tip revision
2694 """show the tip revision
2691
2695
2692 Show the tip revision.
2696 Show the tip revision.
2693 """
2697 """
2694 cmdutil.show_changeset(ui, repo, opts).show(nullrev+repo.changelog.count())
2698 cmdutil.show_changeset(ui, repo, opts).show(nullrev+repo.changelog.count())
2695
2699
2696 def unbundle(ui, repo, fname1, *fnames, **opts):
2700 def unbundle(ui, repo, fname1, *fnames, **opts):
2697 """apply one or more changegroup files
2701 """apply one or more changegroup files
2698
2702
2699 Apply one or more compressed changegroup files generated by the
2703 Apply one or more compressed changegroup files generated by the
2700 bundle command.
2704 bundle command.
2701 """
2705 """
2702 fnames = (fname1,) + fnames
2706 fnames = (fname1,) + fnames
2703
2707
2704 lock = None
2708 lock = None
2705 try:
2709 try:
2706 lock = repo.lock()
2710 lock = repo.lock()
2707 for fname in fnames:
2711 for fname in fnames:
2708 if os.path.exists(fname):
2712 if os.path.exists(fname):
2709 f = open(fname, "rb")
2713 f = open(fname, "rb")
2710 else:
2714 else:
2711 f = urllib.urlopen(fname)
2715 f = urllib.urlopen(fname)
2712 gen = changegroup.readbundle(f, fname)
2716 gen = changegroup.readbundle(f, fname)
2713 modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname)
2717 modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname)
2714 finally:
2718 finally:
2715 del lock
2719 del lock
2716
2720
2717 return postincoming(ui, repo, modheads, opts['update'], None)
2721 return postincoming(ui, repo, modheads, opts['update'], None)
2718
2722
2719 def update(ui, repo, node=None, rev=None, clean=False, date=None):
2723 def update(ui, repo, node=None, rev=None, clean=False, date=None):
2720 """update working directory
2724 """update working directory
2721
2725
2722 Update the working directory to the specified revision, or the
2726 Update the working directory to the specified revision, or the
2723 tip of the current branch if none is specified.
2727 tip of the current branch if none is specified.
2724 See 'hg help dates' for a list of formats valid for -d/--date.
2728 See 'hg help dates' for a list of formats valid for -d/--date.
2725
2729
2726 If there are no outstanding changes in the working directory and
2730 If there are no outstanding changes in the working directory and
2727 there is a linear relationship between the current version and the
2731 there is a linear relationship between the current version and the
2728 requested version, the result is the requested version.
2732 requested version, the result is the requested version.
2729
2733
2730 To merge the working directory with another revision, use the
2734 To merge the working directory with another revision, use the
2731 merge command.
2735 merge command.
2732
2736
2733 By default, update will refuse to run if doing so would require
2737 By default, update will refuse to run if doing so would require
2734 discarding local changes.
2738 discarding local changes.
2735 """
2739 """
2736 if rev and node:
2740 if rev and node:
2737 raise util.Abort(_("please specify just one revision"))
2741 raise util.Abort(_("please specify just one revision"))
2738
2742
2739 if not rev:
2743 if not rev:
2740 rev = node
2744 rev = node
2741
2745
2742 if date:
2746 if date:
2743 if rev:
2747 if rev:
2744 raise util.Abort(_("you can't specify a revision and a date"))
2748 raise util.Abort(_("you can't specify a revision and a date"))
2745 rev = cmdutil.finddate(ui, repo, date)
2749 rev = cmdutil.finddate(ui, repo, date)
2746
2750
2747 if clean:
2751 if clean:
2748 return hg.clean(repo, rev)
2752 return hg.clean(repo, rev)
2749 else:
2753 else:
2750 return hg.update(repo, rev)
2754 return hg.update(repo, rev)
2751
2755
2752 def verify(ui, repo):
2756 def verify(ui, repo):
2753 """verify the integrity of the repository
2757 """verify the integrity of the repository
2754
2758
2755 Verify the integrity of the current repository.
2759 Verify the integrity of the current repository.
2756
2760
2757 This will perform an extensive check of the repository's
2761 This will perform an extensive check of the repository's
2758 integrity, validating the hashes and checksums of each entry in
2762 integrity, validating the hashes and checksums of each entry in
2759 the changelog, manifest, and tracked files, as well as the
2763 the changelog, manifest, and tracked files, as well as the
2760 integrity of their crosslinks and indices.
2764 integrity of their crosslinks and indices.
2761 """
2765 """
2762 return hg.verify(repo)
2766 return hg.verify(repo)
2763
2767
2764 def version_(ui):
2768 def version_(ui):
2765 """output version and copyright information"""
2769 """output version and copyright information"""
2766 ui.write(_("Mercurial Distributed SCM (version %s)\n")
2770 ui.write(_("Mercurial Distributed SCM (version %s)\n")
2767 % version.get_version())
2771 % version.get_version())
2768 ui.status(_(
2772 ui.status(_(
2769 "\nCopyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> and others\n"
2773 "\nCopyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> and others\n"
2770 "This is free software; see the source for copying conditions. "
2774 "This is free software; see the source for copying conditions. "
2771 "There is NO\nwarranty; "
2775 "There is NO\nwarranty; "
2772 "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
2776 "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
2773 ))
2777 ))
2774
2778
2775 # Command options and aliases are listed here, alphabetically
2779 # Command options and aliases are listed here, alphabetically
2776
2780
2777 globalopts = [
2781 globalopts = [
2778 ('R', 'repository', '',
2782 ('R', 'repository', '',
2779 _('repository root directory or symbolic path name')),
2783 _('repository root directory or symbolic path name')),
2780 ('', 'cwd', '', _('change working directory')),
2784 ('', 'cwd', '', _('change working directory')),
2781 ('y', 'noninteractive', None,
2785 ('y', 'noninteractive', None,
2782 _('do not prompt, assume \'yes\' for any required answers')),
2786 _('do not prompt, assume \'yes\' for any required answers')),
2783 ('q', 'quiet', None, _('suppress output')),
2787 ('q', 'quiet', None, _('suppress output')),
2784 ('v', 'verbose', None, _('enable additional output')),
2788 ('v', 'verbose', None, _('enable additional output')),
2785 ('', 'config', [], _('set/override config option')),
2789 ('', 'config', [], _('set/override config option')),
2786 ('', 'debug', None, _('enable debugging output')),
2790 ('', 'debug', None, _('enable debugging output')),
2787 ('', 'debugger', None, _('start debugger')),
2791 ('', 'debugger', None, _('start debugger')),
2788 ('', 'encoding', util._encoding, _('set the charset encoding')),
2792 ('', 'encoding', util._encoding, _('set the charset encoding')),
2789 ('', 'encodingmode', util._encodingmode, _('set the charset encoding mode')),
2793 ('', 'encodingmode', util._encodingmode, _('set the charset encoding mode')),
2790 ('', 'lsprof', None, _('print improved command execution profile')),
2794 ('', 'lsprof', None, _('print improved command execution profile')),
2791 ('', 'traceback', None, _('print traceback on exception')),
2795 ('', 'traceback', None, _('print traceback on exception')),
2792 ('', 'time', None, _('time how long the command takes')),
2796 ('', 'time', None, _('time how long the command takes')),
2793 ('', 'profile', None, _('print command execution profile')),
2797 ('', 'profile', None, _('print command execution profile')),
2794 ('', 'version', None, _('output version information and exit')),
2798 ('', 'version', None, _('output version information and exit')),
2795 ('h', 'help', None, _('display help and exit')),
2799 ('h', 'help', None, _('display help and exit')),
2796 ]
2800 ]
2797
2801
2798 dryrunopts = [('n', 'dry-run', None,
2802 dryrunopts = [('n', 'dry-run', None,
2799 _('do not perform actions, just print output'))]
2803 _('do not perform actions, just print output'))]
2800
2804
2801 remoteopts = [
2805 remoteopts = [
2802 ('e', 'ssh', '', _('specify ssh command to use')),
2806 ('e', 'ssh', '', _('specify ssh command to use')),
2803 ('', 'remotecmd', '', _('specify hg command to run on the remote side')),
2807 ('', 'remotecmd', '', _('specify hg command to run on the remote side')),
2804 ]
2808 ]
2805
2809
2806 walkopts = [
2810 walkopts = [
2807 ('I', 'include', [], _('include names matching the given patterns')),
2811 ('I', 'include', [], _('include names matching the given patterns')),
2808 ('X', 'exclude', [], _('exclude names matching the given patterns')),
2812 ('X', 'exclude', [], _('exclude names matching the given patterns')),
2809 ]
2813 ]
2810
2814
2811 commitopts = [
2815 commitopts = [
2812 ('m', 'message', '', _('use <text> as commit message')),
2816 ('m', 'message', '', _('use <text> as commit message')),
2813 ('l', 'logfile', '', _('read commit message from <file>')),
2817 ('l', 'logfile', '', _('read commit message from <file>')),
2814 ]
2818 ]
2815
2819
2816 commitopts2 = [
2820 commitopts2 = [
2817 ('d', 'date', '', _('record datecode as commit date')),
2821 ('d', 'date', '', _('record datecode as commit date')),
2818 ('u', 'user', '', _('record user as committer')),
2822 ('u', 'user', '', _('record user as committer')),
2819 ]
2823 ]
2820
2824
2821 templateopts = [
2825 templateopts = [
2822 ('', 'style', '', _('display using template map file')),
2826 ('', 'style', '', _('display using template map file')),
2823 ('', 'template', '', _('display with template')),
2827 ('', 'template', '', _('display with template')),
2824 ]
2828 ]
2825
2829
2826 logopts = [
2830 logopts = [
2827 ('p', 'patch', None, _('show patch')),
2831 ('p', 'patch', None, _('show patch')),
2828 ('l', 'limit', '', _('limit number of changes displayed')),
2832 ('l', 'limit', '', _('limit number of changes displayed')),
2829 ('M', 'no-merges', None, _('do not show merges')),
2833 ('M', 'no-merges', None, _('do not show merges')),
2830 ] + templateopts
2834 ] + templateopts
2831
2835
2832 table = {
2836 table = {
2833 "^add": (add, walkopts + dryrunopts, _('hg add [OPTION]... [FILE]...')),
2837 "^add": (add, walkopts + dryrunopts, _('hg add [OPTION]... [FILE]...')),
2834 "addremove":
2838 "addremove":
2835 (addremove,
2839 (addremove,
2836 [('s', 'similarity', '',
2840 [('s', 'similarity', '',
2837 _('guess renamed files by similarity (0<=s<=100)')),
2841 _('guess renamed files by similarity (0<=s<=100)')),
2838 ] + walkopts + dryrunopts,
2842 ] + walkopts + dryrunopts,
2839 _('hg addremove [OPTION]... [FILE]...')),
2843 _('hg addremove [OPTION]... [FILE]...')),
2840 "^annotate|blame":
2844 "^annotate|blame":
2841 (annotate,
2845 (annotate,
2842 [('r', 'rev', '', _('annotate the specified revision')),
2846 [('r', 'rev', '', _('annotate the specified revision')),
2843 ('f', 'follow', None, _('follow file copies and renames')),
2847 ('f', 'follow', None, _('follow file copies and renames')),
2844 ('a', 'text', None, _('treat all files as text')),
2848 ('a', 'text', None, _('treat all files as text')),
2845 ('u', 'user', None, _('list the author (long with -v)')),
2849 ('u', 'user', None, _('list the author (long with -v)')),
2846 ('d', 'date', None, _('list the date (short with -q)')),
2850 ('d', 'date', None, _('list the date (short with -q)')),
2847 ('n', 'number', None, _('list the revision number (default)')),
2851 ('n', 'number', None, _('list the revision number (default)')),
2848 ('c', 'changeset', None, _('list the changeset')),
2852 ('c', 'changeset', None, _('list the changeset')),
2849 ('l', 'line-number', None,
2853 ('l', 'line-number', None,
2850 _('show line number at the first appearance'))
2854 _('show line number at the first appearance'))
2851 ] + walkopts,
2855 ] + walkopts,
2852 _('hg annotate [-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE...')),
2856 _('hg annotate [-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE...')),
2853 "archive":
2857 "archive":
2854 (archive,
2858 (archive,
2855 [('', 'no-decode', None, _('do not pass files through decoders')),
2859 [('', 'no-decode', None, _('do not pass files through decoders')),
2856 ('p', 'prefix', '', _('directory prefix for files in archive')),
2860 ('p', 'prefix', '', _('directory prefix for files in archive')),
2857 ('r', 'rev', '', _('revision to distribute')),
2861 ('r', 'rev', '', _('revision to distribute')),
2858 ('t', 'type', '', _('type of distribution to create')),
2862 ('t', 'type', '', _('type of distribution to create')),
2859 ] + walkopts,
2863 ] + walkopts,
2860 _('hg archive [OPTION]... DEST')),
2864 _('hg archive [OPTION]... DEST')),
2861 "backout":
2865 "backout":
2862 (backout,
2866 (backout,
2863 [('', 'merge', None,
2867 [('', 'merge', None,
2864 _('merge with old dirstate parent after backout')),
2868 _('merge with old dirstate parent after backout')),
2865 ('', 'parent', '', _('parent to choose when backing out merge')),
2869 ('', 'parent', '', _('parent to choose when backing out merge')),
2866 ('r', 'rev', '', _('revision to backout')),
2870 ('r', 'rev', '', _('revision to backout')),
2867 ] + walkopts + commitopts + commitopts2,
2871 ] + walkopts + commitopts + commitopts2,
2868 _('hg backout [OPTION]... [-r] REV')),
2872 _('hg backout [OPTION]... [-r] REV')),
2869 "bisect":
2873 "bisect":
2870 (bisect,
2874 (bisect,
2871 [('r', 'reset', False, _('reset bisect state')),
2875 [('r', 'reset', False, _('reset bisect state')),
2872 ('g', 'good', False, _('mark changeset good')),
2876 ('g', 'good', False, _('mark changeset good')),
2873 ('b', 'bad', False, _('mark changeset bad')),
2877 ('b', 'bad', False, _('mark changeset bad')),
2874 ('s', 'skip', False, _('skip testing changeset')),
2878 ('s', 'skip', False, _('skip testing changeset')),
2875 ('U', 'noupdate', False, _('do not update to target'))],
2879 ('U', 'noupdate', False, _('do not update to target'))],
2876 _("hg bisect [-gbsr] [REV]")),
2880 _("hg bisect [-gbsr] [REV]")),
2877 "branch":
2881 "branch":
2878 (branch,
2882 (branch,
2879 [('f', 'force', None,
2883 [('f', 'force', None,
2880 _('set branch name even if it shadows an existing branch'))],
2884 _('set branch name even if it shadows an existing branch'))],
2881 _('hg branch [-f] [NAME]')),
2885 _('hg branch [-f] [NAME]')),
2882 "branches":
2886 "branches":
2883 (branches,
2887 (branches,
2884 [('a', 'active', False,
2888 [('a', 'active', False,
2885 _('show only branches that have unmerged heads'))],
2889 _('show only branches that have unmerged heads'))],
2886 _('hg branches [-a]')),
2890 _('hg branches [-a]')),
2887 "bundle":
2891 "bundle":
2888 (bundle,
2892 (bundle,
2889 [('f', 'force', None,
2893 [('f', 'force', None,
2890 _('run even when remote repository is unrelated')),
2894 _('run even when remote repository is unrelated')),
2891 ('r', 'rev', [],
2895 ('r', 'rev', [],
2892 _('a changeset up to which you would like to bundle')),
2896 _('a changeset up to which you would like to bundle')),
2893 ('', 'base', [],
2897 ('', 'base', [],
2894 _('a base changeset to specify instead of a destination')),
2898 _('a base changeset to specify instead of a destination')),
2895 ('a', 'all', None,
2899 ('a', 'all', None,
2896 _('bundle all changesets in the repository')),
2900 _('bundle all changesets in the repository')),
2897 ] + remoteopts,
2901 ] + remoteopts,
2898 _('hg bundle [-f] [-a] [-r REV]... [--base REV]... FILE [DEST]')),
2902 _('hg bundle [-f] [-a] [-r REV]... [--base REV]... FILE [DEST]')),
2899 "cat":
2903 "cat":
2900 (cat,
2904 (cat,
2901 [('o', 'output', '', _('print output to file with formatted name')),
2905 [('o', 'output', '', _('print output to file with formatted name')),
2902 ('r', 'rev', '', _('print the given revision')),
2906 ('r', 'rev', '', _('print the given revision')),
2903 ('', 'decode', None, _('apply any matching decode filter')),
2907 ('', 'decode', None, _('apply any matching decode filter')),
2904 ] + walkopts,
2908 ] + walkopts,
2905 _('hg cat [OPTION]... FILE...')),
2909 _('hg cat [OPTION]... FILE...')),
2906 "^clone":
2910 "^clone":
2907 (clone,
2911 (clone,
2908 [('U', 'noupdate', None, _('do not update the new working directory')),
2912 [('U', 'noupdate', None, _('do not update the new working directory')),
2909 ('r', 'rev', [],
2913 ('r', 'rev', [],
2910 _('a changeset you would like to have after cloning')),
2914 _('a changeset you would like to have after cloning')),
2911 ('', 'pull', None, _('use pull protocol to copy metadata')),
2915 ('', 'pull', None, _('use pull protocol to copy metadata')),
2912 ('', 'uncompressed', None,
2916 ('', 'uncompressed', None,
2913 _('use uncompressed transfer (fast over LAN)')),
2917 _('use uncompressed transfer (fast over LAN)')),
2914 ] + remoteopts,
2918 ] + remoteopts,
2915 _('hg clone [OPTION]... SOURCE [DEST]')),
2919 _('hg clone [OPTION]... SOURCE [DEST]')),
2916 "^commit|ci":
2920 "^commit|ci":
2917 (commit,
2921 (commit,
2918 [('A', 'addremove', None,
2922 [('A', 'addremove', None,
2919 _('mark new/missing files as added/removed before committing')),
2923 _('mark new/missing files as added/removed before committing')),
2920 ] + walkopts + commitopts + commitopts2,
2924 ] + walkopts + commitopts + commitopts2,
2921 _('hg commit [OPTION]... [FILE]...')),
2925 _('hg commit [OPTION]... [FILE]...')),
2922 "copy|cp":
2926 "copy|cp":
2923 (copy,
2927 (copy,
2924 [('A', 'after', None, _('record a copy that has already occurred')),
2928 [('A', 'after', None, _('record a copy that has already occurred')),
2925 ('f', 'force', None,
2929 ('f', 'force', None,
2926 _('forcibly copy over an existing managed file')),
2930 _('forcibly copy over an existing managed file')),
2927 ] + walkopts + dryrunopts,
2931 ] + walkopts + dryrunopts,
2928 _('hg copy [OPTION]... [SOURCE]... DEST')),
2932 _('hg copy [OPTION]... [SOURCE]... DEST')),
2929 "debugancestor": (debugancestor, [],
2933 "debugancestor": (debugancestor, [],
2930 _('hg debugancestor [INDEX] REV1 REV2')),
2934 _('hg debugancestor [INDEX] REV1 REV2')),
2931 "debugcheckstate": (debugcheckstate, [], _('hg debugcheckstate')),
2935 "debugcheckstate": (debugcheckstate, [], _('hg debugcheckstate')),
2932 "debugcomplete":
2936 "debugcomplete":
2933 (debugcomplete,
2937 (debugcomplete,
2934 [('o', 'options', None, _('show the command options'))],
2938 [('o', 'options', None, _('show the command options'))],
2935 _('hg debugcomplete [-o] CMD')),
2939 _('hg debugcomplete [-o] CMD')),
2936 "debugdate":
2940 "debugdate":
2937 (debugdate,
2941 (debugdate,
2938 [('e', 'extended', None, _('try extended date formats'))],
2942 [('e', 'extended', None, _('try extended date formats'))],
2939 _('hg debugdate [-e] DATE [RANGE]')),
2943 _('hg debugdate [-e] DATE [RANGE]')),
2940 "debugdata": (debugdata, [], _('hg debugdata FILE REV')),
2944 "debugdata": (debugdata, [], _('hg debugdata FILE REV')),
2941 "debugfsinfo": (debugfsinfo, [], _('hg debugfsinfo [PATH]')),
2945 "debugfsinfo": (debugfsinfo, [], _('hg debugfsinfo [PATH]')),
2942 "debugindex": (debugindex, [], _('hg debugindex FILE')),
2946 "debugindex": (debugindex, [], _('hg debugindex FILE')),
2943 "debugindexdot": (debugindexdot, [], _('hg debugindexdot FILE')),
2947 "debugindexdot": (debugindexdot, [], _('hg debugindexdot FILE')),
2944 "debuginstall": (debuginstall, [], _('hg debuginstall')),
2948 "debuginstall": (debuginstall, [], _('hg debuginstall')),
2945 "debugrawcommit|rawcommit":
2949 "debugrawcommit|rawcommit":
2946 (rawcommit,
2950 (rawcommit,
2947 [('p', 'parent', [], _('parent')),
2951 [('p', 'parent', [], _('parent')),
2948 ('F', 'files', '', _('file list'))
2952 ('F', 'files', '', _('file list'))
2949 ] + commitopts + commitopts2,
2953 ] + commitopts + commitopts2,
2950 _('hg debugrawcommit [OPTION]... [FILE]...')),
2954 _('hg debugrawcommit [OPTION]... [FILE]...')),
2951 "debugrebuildstate":
2955 "debugrebuildstate":
2952 (debugrebuildstate,
2956 (debugrebuildstate,
2953 [('r', 'rev', '', _('revision to rebuild to'))],
2957 [('r', 'rev', '', _('revision to rebuild to'))],
2954 _('hg debugrebuildstate [-r REV] [REV]')),
2958 _('hg debugrebuildstate [-r REV] [REV]')),
2955 "debugrename":
2959 "debugrename":
2956 (debugrename,
2960 (debugrename,
2957 [('r', 'rev', '', _('revision to debug'))],
2961 [('r', 'rev', '', _('revision to debug'))],
2958 _('hg debugrename [-r REV] FILE')),
2962 _('hg debugrename [-r REV] FILE')),
2959 "debugsetparents":
2963 "debugsetparents":
2960 (debugsetparents,
2964 (debugsetparents,
2961 [],
2965 [],
2962 _('hg debugsetparents REV1 [REV2]')),
2966 _('hg debugsetparents REV1 [REV2]')),
2963 "debugstate":
2967 "debugstate":
2964 (debugstate,
2968 (debugstate,
2965 [('', 'nodates', None, _('do not display the saved mtime'))],
2969 [('', 'nodates', None, _('do not display the saved mtime'))],
2966 _('hg debugstate [OPTS]')),
2970 _('hg debugstate [OPTS]')),
2967 "debugwalk": (debugwalk, walkopts, _('hg debugwalk [OPTION]... [FILE]...')),
2971 "debugwalk": (debugwalk, walkopts, _('hg debugwalk [OPTION]... [FILE]...')),
2968 "^diff":
2972 "^diff":
2969 (diff,
2973 (diff,
2970 [('r', 'rev', [], _('revision')),
2974 [('r', 'rev', [], _('revision')),
2971 ('a', 'text', None, _('treat all files as text')),
2975 ('a', 'text', None, _('treat all files as text')),
2972 ('p', 'show-function', None,
2976 ('p', 'show-function', None,
2973 _('show which function each change is in')),
2977 _('show which function each change is in')),
2974 ('g', 'git', None, _('use git extended diff format')),
2978 ('g', 'git', None, _('use git extended diff format')),
2975 ('', 'nodates', None, _("don't include dates in diff headers")),
2979 ('', 'nodates', None, _("don't include dates in diff headers")),
2976 ('w', 'ignore-all-space', None,
2980 ('w', 'ignore-all-space', None,
2977 _('ignore white space when comparing lines')),
2981 _('ignore white space when comparing lines')),
2978 ('b', 'ignore-space-change', None,
2982 ('b', 'ignore-space-change', None,
2979 _('ignore changes in the amount of white space')),
2983 _('ignore changes in the amount of white space')),
2980 ('B', 'ignore-blank-lines', None,
2984 ('B', 'ignore-blank-lines', None,
2981 _('ignore changes whose lines are all blank')),
2985 _('ignore changes whose lines are all blank')),
2982 ('U', 'unified', 3,
2986 ('U', 'unified', 3,
2983 _('number of lines of context to show'))
2987 _('number of lines of context to show'))
2984 ] + walkopts,
2988 ] + walkopts,
2985 _('hg diff [OPTION]... [-r REV1 [-r REV2]] [FILE]...')),
2989 _('hg diff [OPTION]... [-r REV1 [-r REV2]] [FILE]...')),
2986 "^export":
2990 "^export":
2987 (export,
2991 (export,
2988 [('o', 'output', '', _('print output to file with formatted name')),
2992 [('o', 'output', '', _('print output to file with formatted name')),
2989 ('a', 'text', None, _('treat all files as text')),
2993 ('a', 'text', None, _('treat all files as text')),
2990 ('g', 'git', None, _('use git extended diff format')),
2994 ('g', 'git', None, _('use git extended diff format')),
2991 ('', 'nodates', None, _("don't include dates in diff headers")),
2995 ('', 'nodates', None, _("don't include dates in diff headers")),
2992 ('', 'switch-parent', None, _('diff against the second parent'))],
2996 ('', 'switch-parent', None, _('diff against the second parent'))],
2993 _('hg export [OPTION]... [-o OUTFILESPEC] REV...')),
2997 _('hg export [OPTION]... [-o OUTFILESPEC] REV...')),
2994 "grep":
2998 "grep":
2995 (grep,
2999 (grep,
2996 [('0', 'print0', None, _('end fields with NUL')),
3000 [('0', 'print0', None, _('end fields with NUL')),
2997 ('', 'all', None, _('print all revisions that match')),
3001 ('', 'all', None, _('print all revisions that match')),
2998 ('f', 'follow', None,
3002 ('f', 'follow', None,
2999 _('follow changeset history, or file history across copies and renames')),
3003 _('follow changeset history, or file history across copies and renames')),
3000 ('i', 'ignore-case', None, _('ignore case when matching')),
3004 ('i', 'ignore-case', None, _('ignore case when matching')),
3001 ('l', 'files-with-matches', None,
3005 ('l', 'files-with-matches', None,
3002 _('print only filenames and revs that match')),
3006 _('print only filenames and revs that match')),
3003 ('n', 'line-number', None, _('print matching line numbers')),
3007 ('n', 'line-number', None, _('print matching line numbers')),
3004 ('r', 'rev', [], _('search in given revision range')),
3008 ('r', 'rev', [], _('search in given revision range')),
3005 ('u', 'user', None, _('list the author (long with -v)')),
3009 ('u', 'user', None, _('list the author (long with -v)')),
3006 ('d', 'date', None, _('list the date (short with -q)')),
3010 ('d', 'date', None, _('list the date (short with -q)')),
3007 ] + walkopts,
3011 ] + walkopts,
3008 _('hg grep [OPTION]... PATTERN [FILE]...')),
3012 _('hg grep [OPTION]... PATTERN [FILE]...')),
3009 "heads":
3013 "heads":
3010 (heads,
3014 (heads,
3011 [('r', 'rev', '', _('show only heads which are descendants of rev')),
3015 [('r', 'rev', '', _('show only heads which are descendants of rev')),
3012 ] + templateopts,
3016 ] + templateopts,
3013 _('hg heads [-r REV] [REV]...')),
3017 _('hg heads [-r REV] [REV]...')),
3014 "help": (help_, [], _('hg help [COMMAND]')),
3018 "help": (help_, [], _('hg help [COMMAND]')),
3015 "identify|id":
3019 "identify|id":
3016 (identify,
3020 (identify,
3017 [('r', 'rev', '', _('identify the specified rev')),
3021 [('r', 'rev', '', _('identify the specified rev')),
3018 ('n', 'num', None, _('show local revision number')),
3022 ('n', 'num', None, _('show local revision number')),
3019 ('i', 'id', None, _('show global revision id')),
3023 ('i', 'id', None, _('show global revision id')),
3020 ('b', 'branch', None, _('show branch')),
3024 ('b', 'branch', None, _('show branch')),
3021 ('t', 'tags', None, _('show tags'))],
3025 ('t', 'tags', None, _('show tags'))],
3022 _('hg identify [-nibt] [-r REV] [SOURCE]')),
3026 _('hg identify [-nibt] [-r REV] [SOURCE]')),
3023 "import|patch":
3027 "import|patch":
3024 (import_,
3028 (import_,
3025 [('p', 'strip', 1,
3029 [('p', 'strip', 1,
3026 _('directory strip option for patch. This has the same\n'
3030 _('directory strip option for patch. This has the same\n'
3027 'meaning as the corresponding patch option')),
3031 'meaning as the corresponding patch option')),
3028 ('b', 'base', '', _('base path')),
3032 ('b', 'base', '', _('base path')),
3029 ('f', 'force', None,
3033 ('f', 'force', None,
3030 _('skip check for outstanding uncommitted changes')),
3034 _('skip check for outstanding uncommitted changes')),
3031 ('', 'no-commit', None, _("don't commit, just update the working directory")),
3035 ('', 'no-commit', None, _("don't commit, just update the working directory")),
3032 ('', 'exact', None,
3036 ('', 'exact', None,
3033 _('apply patch to the nodes from which it was generated')),
3037 _('apply patch to the nodes from which it was generated')),
3034 ('', 'import-branch', None,
3038 ('', 'import-branch', None,
3035 _('Use any branch information in patch (implied by --exact)'))] +
3039 _('Use any branch information in patch (implied by --exact)'))] +
3036 commitopts + commitopts2,
3040 commitopts + commitopts2,
3037 _('hg import [OPTION]... PATCH...')),
3041 _('hg import [OPTION]... PATCH...')),
3038 "incoming|in":
3042 "incoming|in":
3039 (incoming,
3043 (incoming,
3040 [('f', 'force', None,
3044 [('f', 'force', None,
3041 _('run even when remote repository is unrelated')),
3045 _('run even when remote repository is unrelated')),
3042 ('n', 'newest-first', None, _('show newest record first')),
3046 ('n', 'newest-first', None, _('show newest record first')),
3043 ('', 'bundle', '', _('file to store the bundles into')),
3047 ('', 'bundle', '', _('file to store the bundles into')),
3044 ('r', 'rev', [],
3048 ('r', 'rev', [],
3045 _('a specific revision up to which you would like to pull')),
3049 _('a specific revision up to which you would like to pull')),
3046 ] + logopts + remoteopts,
3050 ] + logopts + remoteopts,
3047 _('hg incoming [-p] [-n] [-M] [-f] [-r REV]...'
3051 _('hg incoming [-p] [-n] [-M] [-f] [-r REV]...'
3048 ' [--bundle FILENAME] [SOURCE]')),
3052 ' [--bundle FILENAME] [SOURCE]')),
3049 "^init":
3053 "^init":
3050 (init,
3054 (init,
3051 remoteopts,
3055 remoteopts,
3052 _('hg init [-e CMD] [--remotecmd CMD] [DEST]')),
3056 _('hg init [-e CMD] [--remotecmd CMD] [DEST]')),
3053 "locate":
3057 "locate":
3054 (locate,
3058 (locate,
3055 [('r', 'rev', '', _('search the repository as it stood at rev')),
3059 [('r', 'rev', '', _('search the repository as it stood at rev')),
3056 ('0', 'print0', None,
3060 ('0', 'print0', None,
3057 _('end filenames with NUL, for use with xargs')),
3061 _('end filenames with NUL, for use with xargs')),
3058 ('f', 'fullpath', None,
3062 ('f', 'fullpath', None,
3059 _('print complete paths from the filesystem root')),
3063 _('print complete paths from the filesystem root')),
3060 ] + walkopts,
3064 ] + walkopts,
3061 _('hg locate [OPTION]... [PATTERN]...')),
3065 _('hg locate [OPTION]... [PATTERN]...')),
3062 "^log|history":
3066 "^log|history":
3063 (log,
3067 (log,
3064 [('f', 'follow', None,
3068 [('f', 'follow', None,
3065 _('follow changeset history, or file history across copies and renames')),
3069 _('follow changeset history, or file history across copies and renames')),
3066 ('', 'follow-first', None,
3070 ('', 'follow-first', None,
3067 _('only follow the first parent of merge changesets')),
3071 _('only follow the first parent of merge changesets')),
3068 ('d', 'date', '', _('show revs matching date spec')),
3072 ('d', 'date', '', _('show revs matching date spec')),
3069 ('C', 'copies', None, _('show copied files')),
3073 ('C', 'copies', None, _('show copied files')),
3070 ('k', 'keyword', [], _('do case-insensitive search for a keyword')),
3074 ('k', 'keyword', [], _('do case-insensitive search for a keyword')),
3071 ('r', 'rev', [], _('show the specified revision or range')),
3075 ('r', 'rev', [], _('show the specified revision or range')),
3072 ('', 'removed', None, _('include revs where files were removed')),
3076 ('', 'removed', None, _('include revs where files were removed')),
3073 ('m', 'only-merges', None, _('show only merges')),
3077 ('m', 'only-merges', None, _('show only merges')),
3074 ('b', 'only-branch', [],
3078 ('b', 'only-branch', [],
3075 _('show only changesets within the given named branch')),
3079 _('show only changesets within the given named branch')),
3076 ('P', 'prune', [], _('do not display revision or any of its ancestors')),
3080 ('P', 'prune', [], _('do not display revision or any of its ancestors')),
3077 ] + logopts + walkopts,
3081 ] + logopts + walkopts,
3078 _('hg log [OPTION]... [FILE]')),
3082 _('hg log [OPTION]... [FILE]')),
3079 "manifest":
3083 "manifest":
3080 (manifest,
3084 (manifest,
3081 [('r', 'rev', '', _('revision to display'))],
3085 [('r', 'rev', '', _('revision to display'))],
3082 _('hg manifest [-r REV]')),
3086 _('hg manifest [-r REV]')),
3083 "^merge":
3087 "^merge":
3084 (merge,
3088 (merge,
3085 [('f', 'force', None, _('force a merge with outstanding changes')),
3089 [('f', 'force', None, _('force a merge with outstanding changes')),
3086 ('r', 'rev', '', _('revision to merge')),
3090 ('r', 'rev', '', _('revision to merge')),
3087 ],
3091 ],
3088 _('hg merge [-f] [[-r] REV]')),
3092 _('hg merge [-f] [[-r] REV]')),
3089 "outgoing|out":
3093 "outgoing|out":
3090 (outgoing,
3094 (outgoing,
3091 [('f', 'force', None,
3095 [('f', 'force', None,
3092 _('run even when remote repository is unrelated')),
3096 _('run even when remote repository is unrelated')),
3093 ('r', 'rev', [],
3097 ('r', 'rev', [],
3094 _('a specific revision up to which you would like to push')),
3098 _('a specific revision up to which you would like to push')),
3095 ('n', 'newest-first', None, _('show newest record first')),
3099 ('n', 'newest-first', None, _('show newest record first')),
3096 ] + logopts + remoteopts,
3100 ] + logopts + remoteopts,
3097 _('hg outgoing [-M] [-p] [-n] [-f] [-r REV]... [DEST]')),
3101 _('hg outgoing [-M] [-p] [-n] [-f] [-r REV]... [DEST]')),
3098 "^parents":
3102 "^parents":
3099 (parents,
3103 (parents,
3100 [('r', 'rev', '', _('show parents from the specified rev')),
3104 [('r', 'rev', '', _('show parents from the specified rev')),
3101 ] + templateopts,
3105 ] + templateopts,
3102 _('hg parents [-r REV] [FILE]')),
3106 _('hg parents [-r REV] [FILE]')),
3103 "paths": (paths, [], _('hg paths [NAME]')),
3107 "paths": (paths, [], _('hg paths [NAME]')),
3104 "^pull":
3108 "^pull":
3105 (pull,
3109 (pull,
3106 [('u', 'update', None,
3110 [('u', 'update', None,
3107 _('update to new tip if changesets were pulled')),
3111 _('update to new tip if changesets were pulled')),
3108 ('f', 'force', None,
3112 ('f', 'force', None,
3109 _('run even when remote repository is unrelated')),
3113 _('run even when remote repository is unrelated')),
3110 ('r', 'rev', [],
3114 ('r', 'rev', [],
3111 _('a specific revision up to which you would like to pull')),
3115 _('a specific revision up to which you would like to pull')),
3112 ] + remoteopts,
3116 ] + remoteopts,
3113 _('hg pull [-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]')),
3117 _('hg pull [-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]')),
3114 "^push":
3118 "^push":
3115 (push,
3119 (push,
3116 [('f', 'force', None, _('force push')),
3120 [('f', 'force', None, _('force push')),
3117 ('r', 'rev', [],
3121 ('r', 'rev', [],
3118 _('a specific revision up to which you would like to push')),
3122 _('a specific revision up to which you would like to push')),
3119 ] + remoteopts,
3123 ] + remoteopts,
3120 _('hg push [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]')),
3124 _('hg push [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]')),
3121 "recover": (recover, [], _('hg recover')),
3125 "recover": (recover, [], _('hg recover')),
3122 "^remove|rm":
3126 "^remove|rm":
3123 (remove,
3127 (remove,
3124 [('A', 'after', None, _('record remove without deleting')),
3128 [('A', 'after', None, _('record remove without deleting')),
3125 ('f', 'force', None, _('remove file even if modified')),
3129 ('f', 'force', None, _('remove file even if modified')),
3126 ] + walkopts,
3130 ] + walkopts,
3127 _('hg remove [OPTION]... FILE...')),
3131 _('hg remove [OPTION]... FILE...')),
3128 "rename|mv":
3132 "rename|mv":
3129 (rename,
3133 (rename,
3130 [('A', 'after', None, _('record a rename that has already occurred')),
3134 [('A', 'after', None, _('record a rename that has already occurred')),
3131 ('f', 'force', None,
3135 ('f', 'force', None,
3132 _('forcibly copy over an existing managed file')),
3136 _('forcibly copy over an existing managed file')),
3133 ] + walkopts + dryrunopts,
3137 ] + walkopts + dryrunopts,
3134 _('hg rename [OPTION]... SOURCE... DEST')),
3138 _('hg rename [OPTION]... SOURCE... DEST')),
3135 "revert":
3139 "revert":
3136 (revert,
3140 (revert,
3137 [('a', 'all', None, _('revert all changes when no arguments given')),
3141 [('a', 'all', None, _('revert all changes when no arguments given')),
3138 ('d', 'date', '', _('tipmost revision matching date')),
3142 ('d', 'date', '', _('tipmost revision matching date')),
3139 ('r', 'rev', '', _('revision to revert to')),
3143 ('r', 'rev', '', _('revision to revert to')),
3140 ('', 'no-backup', None, _('do not save backup copies of files')),
3144 ('', 'no-backup', None, _('do not save backup copies of files')),
3141 ] + walkopts + dryrunopts,
3145 ] + walkopts + dryrunopts,
3142 _('hg revert [OPTION]... [-r REV] [NAME]...')),
3146 _('hg revert [OPTION]... [-r REV] [NAME]...')),
3143 "rollback": (rollback, [], _('hg rollback')),
3147 "rollback": (rollback, [], _('hg rollback')),
3144 "root": (root, [], _('hg root')),
3148 "root": (root, [], _('hg root')),
3145 "^serve":
3149 "^serve":
3146 (serve,
3150 (serve,
3147 [('A', 'accesslog', '', _('name of access log file to write to')),
3151 [('A', 'accesslog', '', _('name of access log file to write to')),
3148 ('d', 'daemon', None, _('run server in background')),
3152 ('d', 'daemon', None, _('run server in background')),
3149 ('', 'daemon-pipefds', '', _('used internally by daemon mode')),
3153 ('', 'daemon-pipefds', '', _('used internally by daemon mode')),
3150 ('E', 'errorlog', '', _('name of error log file to write to')),
3154 ('E', 'errorlog', '', _('name of error log file to write to')),
3151 ('p', 'port', 0, _('port to listen on (default: 8000)')),
3155 ('p', 'port', 0, _('port to listen on (default: 8000)')),
3152 ('a', 'address', '', _('address to listen on (default: all interfaces)')),
3156 ('a', 'address', '', _('address to listen on (default: all interfaces)')),
3153 ('', 'prefix', '', _('prefix path to serve from (default: server root)')),
3157 ('', 'prefix', '', _('prefix path to serve from (default: server root)')),
3154 ('n', 'name', '',
3158 ('n', 'name', '',
3155 _('name to show in web pages (default: working dir)')),
3159 _('name to show in web pages (default: working dir)')),
3156 ('', 'webdir-conf', '', _('name of the webdir config file'
3160 ('', 'webdir-conf', '', _('name of the webdir config file'
3157 ' (serve more than one repo)')),
3161 ' (serve more than one repo)')),
3158 ('', 'pid-file', '', _('name of file to write process ID to')),
3162 ('', 'pid-file', '', _('name of file to write process ID to')),
3159 ('', 'stdio', None, _('for remote clients')),
3163 ('', 'stdio', None, _('for remote clients')),
3160 ('t', 'templates', '', _('web templates to use')),
3164 ('t', 'templates', '', _('web templates to use')),
3161 ('', 'style', '', _('template style to use')),
3165 ('', 'style', '', _('template style to use')),
3162 ('6', 'ipv6', None, _('use IPv6 in addition to IPv4')),
3166 ('6', 'ipv6', None, _('use IPv6 in addition to IPv4')),
3163 ('', 'certificate', '', _('SSL certificate file'))],
3167 ('', 'certificate', '', _('SSL certificate file'))],
3164 _('hg serve [OPTION]...')),
3168 _('hg serve [OPTION]...')),
3165 "showconfig|debugconfig":
3169 "showconfig|debugconfig":
3166 (showconfig,
3170 (showconfig,
3167 [('u', 'untrusted', None, _('show untrusted configuration options'))],
3171 [('u', 'untrusted', None, _('show untrusted configuration options'))],
3168 _('hg showconfig [-u] [NAME]...')),
3172 _('hg showconfig [-u] [NAME]...')),
3169 "^status|st":
3173 "^status|st":
3170 (status,
3174 (status,
3171 [('A', 'all', None, _('show status of all files')),
3175 [('A', 'all', None, _('show status of all files')),
3172 ('m', 'modified', None, _('show only modified files')),
3176 ('m', 'modified', None, _('show only modified files')),
3173 ('a', 'added', None, _('show only added files')),
3177 ('a', 'added', None, _('show only added files')),
3174 ('r', 'removed', None, _('show only removed files')),
3178 ('r', 'removed', None, _('show only removed files')),
3175 ('d', 'deleted', None, _('show only deleted (but tracked) files')),
3179 ('d', 'deleted', None, _('show only deleted (but tracked) files')),
3176 ('c', 'clean', None, _('show only files without changes')),
3180 ('c', 'clean', None, _('show only files without changes')),
3177 ('u', 'unknown', None, _('show only unknown (not tracked) files')),
3181 ('u', 'unknown', None, _('show only unknown (not tracked) files')),
3178 ('i', 'ignored', None, _('show only ignored files')),
3182 ('i', 'ignored', None, _('show only ignored files')),
3179 ('n', 'no-status', None, _('hide status prefix')),
3183 ('n', 'no-status', None, _('hide status prefix')),
3180 ('C', 'copies', None, _('show source of copied files')),
3184 ('C', 'copies', None, _('show source of copied files')),
3181 ('0', 'print0', None,
3185 ('0', 'print0', None,
3182 _('end filenames with NUL, for use with xargs')),
3186 _('end filenames with NUL, for use with xargs')),
3183 ('', 'rev', [], _('show difference from revision')),
3187 ('', 'rev', [], _('show difference from revision')),
3184 ] + walkopts,
3188 ] + walkopts,
3185 _('hg status [OPTION]... [FILE]...')),
3189 _('hg status [OPTION]... [FILE]...')),
3186 "tag":
3190 "tag":
3187 (tag,
3191 (tag,
3188 [('f', 'force', None, _('replace existing tag')),
3192 [('f', 'force', None, _('replace existing tag')),
3189 ('l', 'local', None, _('make the tag local')),
3193 ('l', 'local', None, _('make the tag local')),
3190 ('r', 'rev', '', _('revision to tag')),
3194 ('r', 'rev', '', _('revision to tag')),
3191 ('', 'remove', None, _('remove a tag')),
3195 ('', 'remove', None, _('remove a tag')),
3192 # -l/--local is already there, commitopts cannot be used
3196 # -l/--local is already there, commitopts cannot be used
3193 ('m', 'message', '', _('use <text> as commit message')),
3197 ('m', 'message', '', _('use <text> as commit message')),
3194 ] + commitopts2,
3198 ] + commitopts2,
3195 _('hg tag [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME...')),
3199 _('hg tag [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME...')),
3196 "tags": (tags, [], _('hg tags')),
3200 "tags": (tags, [], _('hg tags')),
3197 "tip":
3201 "tip":
3198 (tip,
3202 (tip,
3199 [('p', 'patch', None, _('show patch')),
3203 [('p', 'patch', None, _('show patch')),
3200 ] + templateopts,
3204 ] + templateopts,
3201 _('hg tip [-p]')),
3205 _('hg tip [-p]')),
3202 "unbundle":
3206 "unbundle":
3203 (unbundle,
3207 (unbundle,
3204 [('u', 'update', None,
3208 [('u', 'update', None,
3205 _('update to new tip if changesets were unbundled'))],
3209 _('update to new tip if changesets were unbundled'))],
3206 _('hg unbundle [-u] FILE...')),
3210 _('hg unbundle [-u] FILE...')),
3207 "^update|up|checkout|co":
3211 "^update|up|checkout|co":
3208 (update,
3212 (update,
3209 [('C', 'clean', None, _('overwrite locally modified files')),
3213 [('C', 'clean', None, _('overwrite locally modified files')),
3210 ('d', 'date', '', _('tipmost revision matching date')),
3214 ('d', 'date', '', _('tipmost revision matching date')),
3211 ('r', 'rev', '', _('revision'))],
3215 ('r', 'rev', '', _('revision'))],
3212 _('hg update [-C] [-d DATE] [[-r] REV]')),
3216 _('hg update [-C] [-d DATE] [[-r] REV]')),
3213 "verify": (verify, [], _('hg verify')),
3217 "verify": (verify, [], _('hg verify')),
3214 "version": (version_, [], _('hg version')),
3218 "version": (version_, [], _('hg version')),
3215 }
3219 }
3216
3220
3217 norepo = ("clone init version help debugcomplete debugdata"
3221 norepo = ("clone init version help debugcomplete debugdata"
3218 " debugindex debugindexdot debugdate debuginstall debugfsinfo")
3222 " debugindex debugindexdot debugdate debuginstall debugfsinfo")
3219 optionalrepo = ("identify paths serve showconfig debugancestor")
3223 optionalrepo = ("identify paths serve showconfig debugancestor")
@@ -1,38 +1,39 b''
1 adding a
1 adding a
2 ? a
2 ? a
3 adding a
3 adding a
4 A a
4 A a
5 A a
5 A a
6 ? b
6 ? b
7 A a
7 A a
8 A b
8 A b
9 % should fail
9 % should fail
10 b already tracked!
10 b already tracked!
11 A a
11 A a
12 A b
12 A b
13 % should fail
13 % should fail
14 a already tracked!
14 a already tracked!
15 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
15 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
16 created new head
16 merging a
17 merging a
17 warning: conflicts during merge.
18 warning: conflicts during merge.
18 merging a failed!
19 merging a failed!
19 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
20 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
20 There are unresolved merges, you can redo the full merge using:
21 There are unresolved merges, you can redo the full merge using:
21 hg update -C 2
22 hg update -C 2
22 hg merge 1
23 hg merge 1
23 M a
24 M a
24 ? a.orig
25 ? a.orig
25 % should fail
26 % should fail
26 a already tracked!
27 a already tracked!
27 M a
28 M a
28 ? a.orig
29 ? a.orig
29 % issue683
30 % issue683
30 R a
31 R a
31 ? a.orig
32 ? a.orig
32 M a
33 M a
33 ? a.orig
34 ? a.orig
34 c does not exist!
35 c does not exist!
35 d does not exist!
36 d does not exist!
36 M a
37 M a
37 A c
38 A c
38 ? a.orig
39 ? a.orig
@@ -1,96 +1,98 b''
1 % init
1 % init
2 % commit
2 % commit
3 adding a
3 adding a
4 % annotate -c
4 % annotate -c
5 8435f90966e4: a
5 8435f90966e4: a
6 % annotate -cl
6 % annotate -cl
7 8435f90966e4:1: a
7 8435f90966e4:1: a
8 % annotate -d
8 % annotate -d
9 Thu Jan 01 00:00:01 1970 +0000: a
9 Thu Jan 01 00:00:01 1970 +0000: a
10 % annotate -n
10 % annotate -n
11 0: a
11 0: a
12 % annotate -nl
12 % annotate -nl
13 0:1: a
13 0:1: a
14 % annotate -u
14 % annotate -u
15 nobody: a
15 nobody: a
16 % annotate -cdnu
16 % annotate -cdnu
17 nobody 0 8435f90966e4 Thu Jan 01 00:00:01 1970 +0000: a
17 nobody 0 8435f90966e4 Thu Jan 01 00:00:01 1970 +0000: a
18 % annotate -cdnul
18 % annotate -cdnul
19 nobody 0 8435f90966e4 Thu Jan 01 00:00:01 1970 +0000:1: a
19 nobody 0 8435f90966e4 Thu Jan 01 00:00:01 1970 +0000:1: a
20 % annotate -n b
20 % annotate -n b
21 2: a
21 2: a
22 2: a
22 2: a
23 2: a
23 2: a
24 3: b4
24 3: b4
25 3: b5
25 3: b5
26 3: b6
26 3: b6
27 % annotate -nl b
27 % annotate -nl b
28 2:1: a
28 2:1: a
29 2:2: a
29 2:2: a
30 2:3: a
30 2:3: a
31 3:4: b4
31 3:4: b4
32 3:5: b5
32 3:5: b5
33 3:6: b6
33 3:6: b6
34 % annotate -nf b
34 % annotate -nf b
35 0 a: a
35 0 a: a
36 1 a: a
36 1 a: a
37 1 a: a
37 1 a: a
38 3 b: b4
38 3 b: b4
39 3 b: b5
39 3 b: b5
40 3 b: b6
40 3 b: b6
41 % annotate -nlf b
41 % annotate -nlf b
42 0 a:1: a
42 0 a:1: a
43 1 a:2: a
43 1 a:2: a
44 1 a:3: a
44 1 a:3: a
45 3 b:4: b4
45 3 b:4: b4
46 3 b:5: b5
46 3 b:5: b5
47 3 b:6: b6
47 3 b:6: b6
48 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
48 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
49 created new head
49 merging b
50 merging b
50 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
51 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
51 (branch merge, don't forget to commit)
52 (branch merge, don't forget to commit)
52 % annotate after merge
53 % annotate after merge
53 0 a: a
54 0 a: a
54 1 a: a
55 1 a: a
55 1 a: a
56 1 a: a
56 3 b: b4
57 3 b: b4
57 4 b: c
58 4 b: c
58 3 b: b5
59 3 b: b5
59 % annotate after merge with -l
60 % annotate after merge with -l
60 0 a:1: a
61 0 a:1: a
61 1 a:2: a
62 1 a:2: a
62 1 a:3: a
63 1 a:3: a
63 3 b:4: b4
64 3 b:4: b4
64 4 b:5: c
65 4 b:5: c
65 3 b:5: b5
66 3 b:5: b5
66 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
67 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
68 created new head
67 merging b
69 merging b
68 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
70 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
69 (branch merge, don't forget to commit)
71 (branch merge, don't forget to commit)
70 % annotate after rename merge
72 % annotate after rename merge
71 0 a: a
73 0 a: a
72 6 b: z
74 6 b: z
73 1 a: a
75 1 a: a
74 3 b: b4
76 3 b: b4
75 4 b: c
77 4 b: c
76 3 b: b5
78 3 b: b5
77 7 b: d
79 7 b: d
78 % annotate after rename merge with -l
80 % annotate after rename merge with -l
79 0 a:1: a
81 0 a:1: a
80 6 b:2: z
82 6 b:2: z
81 1 a:3: a
83 1 a:3: a
82 3 b:4: b4
84 3 b:4: b4
83 4 b:5: c
85 4 b:5: c
84 3 b:5: b5
86 3 b:5: b5
85 7 b:7: d
87 7 b:7: d
86 % linkrev vs rev
88 % linkrev vs rev
87 0: a
89 0: a
88 1: a
90 1: a
89 1: a
91 1: a
90 % linkrev vs rev with -l
92 % linkrev vs rev with -l
91 0:1: a
93 0:1: a
92 1:2: a
94 1:2: a
93 1:3: a
95 1:3: a
94 % generate ABA rename configuration
96 % generate ABA rename configuration
95 % annotate after ABA with follow
97 % annotate after ABA with follow
96 foo: foo
98 foo: foo
@@ -1,89 +1,94 b''
1 # should complain
1 # should complain
2 abort: please specify a revision to backout
2 abort: please specify a revision to backout
3 abort: please specify just one revision
3 abort: please specify just one revision
4 # basic operation
4 # basic operation
5 adding a
5 adding a
6 reverting a
6 reverting a
7 changeset 2:2929462c3dff backs out changeset 1:a820f4f40a57
7 changeset 2:2929462c3dff backs out changeset 1:a820f4f40a57
8 a
8 a
9 # file that was removed is recreated
9 # file that was removed is recreated
10 adding a
10 adding a
11 adding a
11 adding a
12 changeset 2:de31bdc76c0d backs out changeset 1:76862dcce372
12 changeset 2:de31bdc76c0d backs out changeset 1:76862dcce372
13 content
13 content
14 # backout of backout is as if nothing happened
14 # backout of backout is as if nothing happened
15 removing a
15 removing a
16 changeset 3:7f6d0f120113 backs out changeset 2:de31bdc76c0d
16 changeset 3:7f6d0f120113 backs out changeset 2:de31bdc76c0d
17 cat: a: No such file or directory
17 cat: a: No such file or directory
18 # across branch
18 # across branch
19 adding a
19 adding a
20 adding b
20 adding b
21 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
21 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
22 abort: cannot back out change on a different branch
22 abort: cannot back out change on a different branch
23 adding c
23 adding c
24 created new head
24 abort: cannot back out change on a different branch
25 abort: cannot back out change on a different branch
25 # backout with merge
26 # backout with merge
26 adding a
27 adding a
27 reverting a
28 reverting a
29 created new head
28 changeset 3:26b8ccb9ad91 backs out changeset 1:5a50a024c182
30 changeset 3:26b8ccb9ad91 backs out changeset 1:5a50a024c182
29 merging with changeset 3:26b8ccb9ad91
31 merging with changeset 3:26b8ccb9ad91
30 merging a
32 merging a
31 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
33 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
32 (branch merge, don't forget to commit)
34 (branch merge, don't forget to commit)
33 line 1
35 line 1
34 line 2
36 line 2
35 line 3
37 line 3
36 # backout should not back out subsequent changesets
38 # backout should not back out subsequent changesets
37 adding a
39 adding a
38 adding b
40 adding b
39 reverting a
41 reverting a
42 created new head
40 changeset 3:3202beb76721 backs out changeset 1:22bca4c721e5
43 changeset 3:3202beb76721 backs out changeset 1:22bca4c721e5
41 the backout changeset is a new head - do not forget to merge
44 the backout changeset is a new head - do not forget to merge
42 (use "backout --merge" if you want to auto-merge)
45 (use "backout --merge" if you want to auto-merge)
43 b
46 b
44 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
47 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
45 adding a
48 adding a
46 adding b
49 adding b
47 adding c
50 adding c
48 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
51 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
49 adding d
52 adding d
53 created new head
50 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
54 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
51 (branch merge, don't forget to commit)
55 (branch merge, don't forget to commit)
52 # backout of merge should fail
56 # backout of merge should fail
53 abort: cannot back out a merge changeset without --parent
57 abort: cannot back out a merge changeset without --parent
54 # backout of merge with bad parent should fail
58 # backout of merge with bad parent should fail
55 abort: cb9a9f314b8b is not a parent of b2f3bb92043e
59 abort: cb9a9f314b8b is not a parent of b2f3bb92043e
56 # backout of non-merge with parent should fail
60 # backout of non-merge with parent should fail
57 abort: cannot use --parent on non-merge changeset
61 abort: cannot use --parent on non-merge changeset
58 # backout with valid parent should be ok
62 # backout with valid parent should be ok
59 removing d
63 removing d
60 changeset 5:10e5328c8435 backs out changeset 4:b2f3bb92043e
64 changeset 5:10e5328c8435 backs out changeset 4:b2f3bb92043e
61 rolling back last transaction
65 rolling back last transaction
62 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
66 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63 removing c
67 removing c
64 changeset 5:033590168430 backs out changeset 4:b2f3bb92043e
68 changeset 5:033590168430 backs out changeset 4:b2f3bb92043e
65 # named branches
69 # named branches
66 adding default
70 adding default
67 marked working directory as branch branch1
71 marked working directory as branch branch1
68 adding file1
72 adding file1
69 marked working directory as branch branch2
73 marked working directory as branch branch2
70 adding file2
74 adding file2
71 removing file1
75 removing file1
76 created new head
72 changeset 3:f1c642b1d8e5 backs out changeset 1:bf1602f437f3
77 changeset 3:f1c642b1d8e5 backs out changeset 1:bf1602f437f3
73 the backout changeset is a new head - do not forget to merge
78 the backout changeset is a new head - do not forget to merge
74 (use "backout --merge" if you want to auto-merge)
79 (use "backout --merge" if you want to auto-merge)
75 % on branch2 with branch1 not merged, so file1 should still exist:
80 % on branch2 with branch1 not merged, so file1 should still exist:
76 45bbcd363bf0 (branch2)
81 45bbcd363bf0 (branch2)
77 C default
82 C default
78 C file1
83 C file1
79 C file2
84 C file2
80 % on branch2 with branch1 merged, so file1 should be gone:
85 % on branch2 with branch1 merged, so file1 should be gone:
81 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
86 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
82 (branch merge, don't forget to commit)
87 (branch merge, don't forget to commit)
83 21d4dc6f9a41 (branch2) tip
88 21d4dc6f9a41 (branch2) tip
84 C default
89 C default
85 C file2
90 C file2
86 % on branch1, so no file1 and file2:
91 % on branch1, so no file1 and file2:
87 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
92 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
88 f1c642b1d8e5 (branch1)
93 f1c642b1d8e5 (branch1)
89 C default
94 C default
@@ -1,151 +1,154 b''
1 0: Adding root node
1 0: Adding root node
2 -------
2 -------
3 0: Adding root node
3 0: Adding root node
4 =======
4 =======
5 marked working directory as branch a
5 marked working directory as branch a
6 1: Adding a branch
6 1: Adding a branch
7 -------
7 -------
8 1: Adding a branch
8 1: Adding a branch
9 =======
9 =======
10 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
10 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
11 marked working directory as branch b
11 marked working directory as branch b
12 created new head
12 2: Adding b branch
13 2: Adding b branch
13 1: Adding a branch
14 1: Adding a branch
14 -------
15 -------
15 2: Adding b branch
16 2: Adding b branch
16 =======
17 =======
17 3: Adding b branch head 1
18 3: Adding b branch head 1
18 1: Adding a branch
19 1: Adding a branch
19 -------
20 -------
20 3: Adding b branch head 1
21 3: Adding b branch head 1
21 =======
22 =======
22 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
23 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
24 created new head
23 4: Adding b branch head 2
25 4: Adding b branch head 2
24 3: Adding b branch head 1
26 3: Adding b branch head 1
25 1: Adding a branch
27 1: Adding a branch
26 -------
28 -------
27 4: Adding b branch head 2
29 4: Adding b branch head 2
28 3: Adding b branch head 1
30 3: Adding b branch head 1
29 =======
31 =======
30 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
32 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
33 created new head
31 5: Adding b branch head 3
34 5: Adding b branch head 3
32 4: Adding b branch head 2
35 4: Adding b branch head 2
33 3: Adding b branch head 1
36 3: Adding b branch head 1
34 1: Adding a branch
37 1: Adding a branch
35 -------
38 -------
36 5: Adding b branch head 3
39 5: Adding b branch head 3
37 4: Adding b branch head 2
40 4: Adding b branch head 2
38 3: Adding b branch head 1
41 3: Adding b branch head 1
39 =======
42 =======
40 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
43 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
41 (branch merge, don't forget to commit)
44 (branch merge, don't forget to commit)
42 6: Merging b branch head 2 and b branch head 3
45 6: Merging b branch head 2 and b branch head 3
43 3: Adding b branch head 1
46 3: Adding b branch head 1
44 1: Adding a branch
47 1: Adding a branch
45 -------
48 -------
46 6: Merging b branch head 2 and b branch head 3
49 6: Merging b branch head 2 and b branch head 3
47 3: Adding b branch head 1
50 3: Adding b branch head 1
48 =======
51 =======
49 marked working directory as branch c
52 marked working directory as branch c
50 7: Adding c branch
53 7: Adding c branch
51 3: Adding b branch head 1
54 3: Adding b branch head 1
52 1: Adding a branch
55 1: Adding a branch
53 -------
56 -------
54 7: Adding c branch
57 7: Adding c branch
55 =======
58 =======
56 no changes on branch c containing . are reachable from 3
59 no changes on branch c containing . are reachable from 3
57 1
60 1
58 -------
61 -------
59 7: Adding c branch
62 7: Adding c branch
60 0
63 0
61 -------
64 -------
62 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
65 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
63 0
66 0
64 -------
67 -------
65 3: Adding b branch head 1
68 3: Adding b branch head 1
66 0
69 0
67 -------
70 -------
68 3: Adding b branch head 1
71 3: Adding b branch head 1
69 6: Merging b branch head 2 and b branch head 3
72 6: Merging b branch head 2 and b branch head 3
70 0
73 0
71 -------
74 -------
72 no changes on branch b containing . are reachable from 7
75 no changes on branch b containing . are reachable from 7
73 1
76 1
74 =======
77 =======
75 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
78 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
76 7: Adding c branch
79 7: Adding c branch
77 3: Adding b branch head 1
80 3: Adding b branch head 1
78 1: Adding a branch
81 1: Adding a branch
79 -------
82 -------
80 0: Adding root node
83 0: Adding root node
81 -------
84 -------
82 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
85 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
83 7: Adding c branch
86 7: Adding c branch
84 3: Adding b branch head 1
87 3: Adding b branch head 1
85 1: Adding a branch
88 1: Adding a branch
86 -------
89 -------
87 1: Adding a branch
90 1: Adding a branch
88 -------
91 -------
89 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
92 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
90 7: Adding c branch
93 7: Adding c branch
91 3: Adding b branch head 1
94 3: Adding b branch head 1
92 1: Adding a branch
95 1: Adding a branch
93 -------
96 -------
94 6: Merging b branch head 2 and b branch head 3
97 6: Merging b branch head 2 and b branch head 3
95 3: Adding b branch head 1
98 3: Adding b branch head 1
96 -------
99 -------
97 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
100 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
98 7: Adding c branch
101 7: Adding c branch
99 3: Adding b branch head 1
102 3: Adding b branch head 1
100 1: Adding a branch
103 1: Adding a branch
101 -------
104 -------
102 6: Merging b branch head 2 and b branch head 3
105 6: Merging b branch head 2 and b branch head 3
103 3: Adding b branch head 1
106 3: Adding b branch head 1
104 -------
107 -------
105 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
108 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
106 7: Adding c branch
109 7: Adding c branch
107 3: Adding b branch head 1
110 3: Adding b branch head 1
108 1: Adding a branch
111 1: Adding a branch
109 -------
112 -------
110 6: Merging b branch head 2 and b branch head 3
113 6: Merging b branch head 2 and b branch head 3
111 3: Adding b branch head 1
114 3: Adding b branch head 1
112 -------
115 -------
113 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
116 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
114 7: Adding c branch
117 7: Adding c branch
115 3: Adding b branch head 1
118 3: Adding b branch head 1
116 1: Adding a branch
119 1: Adding a branch
117 -------
120 -------
118 6: Merging b branch head 2 and b branch head 3
121 6: Merging b branch head 2 and b branch head 3
119 3: Adding b branch head 1
122 3: Adding b branch head 1
120 -------
123 -------
121 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
124 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
122 7: Adding c branch
125 7: Adding c branch
123 3: Adding b branch head 1
126 3: Adding b branch head 1
124 1: Adding a branch
127 1: Adding a branch
125 -------
128 -------
126 6: Merging b branch head 2 and b branch head 3
129 6: Merging b branch head 2 and b branch head 3
127 3: Adding b branch head 1
130 3: Adding b branch head 1
128 -------
131 -------
129 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
132 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
130 7: Adding c branch
133 7: Adding c branch
131 3: Adding b branch head 1
134 3: Adding b branch head 1
132 1: Adding a branch
135 1: Adding a branch
133 -------
136 -------
134 7: Adding c branch
137 7: Adding c branch
135 -------
138 -------
136 =======
139 =======
137 1: Adding a branch
140 1: Adding a branch
138 -------
141 -------
139 6: Merging b branch head 2 and b branch head 3
142 6: Merging b branch head 2 and b branch head 3
140 3: Adding b branch head 1
143 3: Adding b branch head 1
141 -------
144 -------
142 7: Adding c branch
145 7: Adding c branch
143 -------
146 -------
144 abort: unknown revision 'z'!
147 abort: unknown revision 'z'!
145 -------
148 -------
146 =======
149 =======
147 0: Adding root node
150 0: Adding root node
148 1: Adding a branch
151 1: Adding a branch
149 6: Merging b branch head 2 and b branch head 3
152 6: Merging b branch head 2 and b branch head 3
150 3: Adding b branch head 1
153 3: Adding b branch head 1
151 7: Adding c branch
154 7: Adding c branch
@@ -1,40 +1,42 b''
1 marked working directory as branch a
1 marked working directory as branch a
2 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
2 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
3 marked working directory as branch b
3 marked working directory as branch b
4 created new head
4 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
5 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
6 created new head
5 marked working directory as branch c
7 marked working directory as branch c
6 c 5:5ca481e59b8c
8 c 5:5ca481e59b8c
7 a 1:dd6b440dd85a
9 a 1:dd6b440dd85a
8 b 4:22df7444f7c1 (inactive)
10 b 4:22df7444f7c1 (inactive)
9 default 0:19709c5a4e75 (inactive)
11 default 0:19709c5a4e75 (inactive)
10 -------
12 -------
11 c 5:5ca481e59b8c
13 c 5:5ca481e59b8c
12 a 1:dd6b440dd85a
14 a 1:dd6b440dd85a
13 --- Branch a
15 --- Branch a
14 changeset: 1:dd6b440dd85a
16 changeset: 1:dd6b440dd85a
15 branch: a
17 branch: a
16 user: test
18 user: test
17 date: Thu Jan 01 00:00:01 1970 +0000
19 date: Thu Jan 01 00:00:01 1970 +0000
18 summary: Adding a branch
20 summary: Adding a branch
19
21
20 ---- Branch b
22 ---- Branch b
21 changeset: 4:22df7444f7c1
23 changeset: 4:22df7444f7c1
22 branch: b
24 branch: b
23 parent: 2:ac22033332d1
25 parent: 2:ac22033332d1
24 user: test
26 user: test
25 date: Thu Jan 01 00:00:04 1970 +0000
27 date: Thu Jan 01 00:00:04 1970 +0000
26 summary: Adding b branch head 2
28 summary: Adding b branch head 2
27
29
28 changeset: 3:aee39cd168d0
30 changeset: 3:aee39cd168d0
29 branch: b
31 branch: b
30 user: test
32 user: test
31 date: Thu Jan 01 00:00:03 1970 +0000
33 date: Thu Jan 01 00:00:03 1970 +0000
32 summary: Adding b branch head 1
34 summary: Adding b branch head 1
33
35
34 changeset: 2:ac22033332d1
36 changeset: 2:ac22033332d1
35 branch: b
37 branch: b
36 parent: 0:19709c5a4e75
38 parent: 0:19709c5a4e75
37 user: test
39 user: test
38 date: Thu Jan 01 00:00:02 1970 +0000
40 date: Thu Jan 01 00:00:02 1970 +0000
39 summary: Adding b branch
41 summary: Adding b branch
40
42
@@ -1,232 +1,233 b''
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 created new head
2 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
3 rev offset length base linkrev nodeid p1 p2
4 rev offset length base linkrev nodeid p1 p2
4 0 0 3 0 0 362fef284ce2 000000000000 000000000000
5 0 0 3 0 0 362fef284ce2 000000000000 000000000000
5 1 3 5 1 1 125144f7e028 362fef284ce2 000000000000
6 1 3 5 1 1 125144f7e028 362fef284ce2 000000000000
6 2 8 7 2 2 4c982badb186 125144f7e028 000000000000
7 2 8 7 2 2 4c982badb186 125144f7e028 000000000000
7 3 15 9 3 3 19b1fc555737 4c982badb186 000000000000
8 3 15 9 3 3 19b1fc555737 4c982badb186 000000000000
8 rev offset length base linkrev nodeid p1 p2
9 rev offset length base linkrev nodeid p1 p2
9 0 0 75 0 7 905359268f77 000000000000 000000000000
10 0 0 75 0 7 905359268f77 000000000000 000000000000
10 rev offset length base linkrev nodeid p1 p2
11 rev offset length base linkrev nodeid p1 p2
11 0 0 75 0 8 905359268f77 000000000000 000000000000
12 0 0 75 0 8 905359268f77 000000000000 000000000000
12 rev offset length base linkrev nodeid p1 p2
13 rev offset length base linkrev nodeid p1 p2
13 0 0 8 0 6 12ab3bcc5ea4 000000000000 000000000000
14 0 0 8 0 6 12ab3bcc5ea4 000000000000 000000000000
14 rev offset length base linkrev nodeid p1 p2
15 rev offset length base linkrev nodeid p1 p2
15 0 0 48 0 0 43eadb1d2d06 000000000000 000000000000
16 0 0 48 0 0 43eadb1d2d06 000000000000 000000000000
16 1 48 48 1 1 8b89697eba2c 43eadb1d2d06 000000000000
17 1 48 48 1 1 8b89697eba2c 43eadb1d2d06 000000000000
17 2 96 48 2 2 626a32663c2f 8b89697eba2c 000000000000
18 2 96 48 2 2 626a32663c2f 8b89697eba2c 000000000000
18 3 144 48 3 3 f54c32f13478 626a32663c2f 000000000000
19 3 144 48 3 3 f54c32f13478 626a32663c2f 000000000000
19 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000
20 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000
20 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000
21 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000
21 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000
22 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000
22 checking changesets
23 checking changesets
23 checking manifests
24 checking manifests
24 crosschecking files in changesets and manifests
25 crosschecking files in changesets and manifests
25 checking files
26 checking files
26 4 files, 9 changesets, 7 total revisions
27 4 files, 9 changesets, 7 total revisions
27 searching for changes
28 searching for changes
28 1 changesets found
29 1 changesets found
29 adding changesets
30 adding changesets
30 adding manifests
31 adding manifests
31 adding file changes
32 adding file changes
32 added 1 changesets with 1 changes to 1 files
33 added 1 changesets with 1 changes to 1 files
33 (run 'hg update' to get a working copy)
34 (run 'hg update' to get a working copy)
34 checking changesets
35 checking changesets
35 checking manifests
36 checking manifests
36 crosschecking files in changesets and manifests
37 crosschecking files in changesets and manifests
37 checking files
38 checking files
38 1 files, 1 changesets, 1 total revisions
39 1 files, 1 changesets, 1 total revisions
39 0:5649c9d34dd8
40 0:5649c9d34dd8
40 searching for changes
41 searching for changes
41 2 changesets found
42 2 changesets found
42 adding changesets
43 adding changesets
43 adding manifests
44 adding manifests
44 adding file changes
45 adding file changes
45 added 2 changesets with 2 changes to 1 files
46 added 2 changesets with 2 changes to 1 files
46 (run 'hg update' to get a working copy)
47 (run 'hg update' to get a working copy)
47 checking changesets
48 checking changesets
48 checking manifests
49 checking manifests
49 crosschecking files in changesets and manifests
50 crosschecking files in changesets and manifests
50 checking files
51 checking files
51 1 files, 2 changesets, 2 total revisions
52 1 files, 2 changesets, 2 total revisions
52 1:10b2180f755b
53 1:10b2180f755b
53 searching for changes
54 searching for changes
54 3 changesets found
55 3 changesets found
55 adding changesets
56 adding changesets
56 adding manifests
57 adding manifests
57 adding file changes
58 adding file changes
58 added 3 changesets with 3 changes to 1 files
59 added 3 changesets with 3 changes to 1 files
59 (run 'hg update' to get a working copy)
60 (run 'hg update' to get a working copy)
60 checking changesets
61 checking changesets
61 checking manifests
62 checking manifests
62 crosschecking files in changesets and manifests
63 crosschecking files in changesets and manifests
63 checking files
64 checking files
64 1 files, 3 changesets, 3 total revisions
65 1 files, 3 changesets, 3 total revisions
65 2:d62976ca1e50
66 2:d62976ca1e50
66 searching for changes
67 searching for changes
67 4 changesets found
68 4 changesets found
68 adding changesets
69 adding changesets
69 adding manifests
70 adding manifests
70 adding file changes
71 adding file changes
71 added 4 changesets with 4 changes to 1 files
72 added 4 changesets with 4 changes to 1 files
72 (run 'hg update' to get a working copy)
73 (run 'hg update' to get a working copy)
73 checking changesets
74 checking changesets
74 checking manifests
75 checking manifests
75 crosschecking files in changesets and manifests
76 crosschecking files in changesets and manifests
76 checking files
77 checking files
77 1 files, 4 changesets, 4 total revisions
78 1 files, 4 changesets, 4 total revisions
78 3:ac69c658229d
79 3:ac69c658229d
79 searching for changes
80 searching for changes
80 2 changesets found
81 2 changesets found
81 adding changesets
82 adding changesets
82 adding manifests
83 adding manifests
83 adding file changes
84 adding file changes
84 added 2 changesets with 2 changes to 1 files
85 added 2 changesets with 2 changes to 1 files
85 (run 'hg update' to get a working copy)
86 (run 'hg update' to get a working copy)
86 checking changesets
87 checking changesets
87 checking manifests
88 checking manifests
88 crosschecking files in changesets and manifests
89 crosschecking files in changesets and manifests
89 checking files
90 checking files
90 1 files, 2 changesets, 2 total revisions
91 1 files, 2 changesets, 2 total revisions
91 1:5f4f3ceb285e
92 1:5f4f3ceb285e
92 searching for changes
93 searching for changes
93 3 changesets found
94 3 changesets found
94 adding changesets
95 adding changesets
95 adding manifests
96 adding manifests
96 adding file changes
97 adding file changes
97 added 3 changesets with 3 changes to 1 files
98 added 3 changesets with 3 changes to 1 files
98 (run 'hg update' to get a working copy)
99 (run 'hg update' to get a working copy)
99 checking changesets
100 checking changesets
100 checking manifests
101 checking manifests
101 crosschecking files in changesets and manifests
102 crosschecking files in changesets and manifests
102 checking files
103 checking files
103 1 files, 3 changesets, 3 total revisions
104 1 files, 3 changesets, 3 total revisions
104 2:024e4e7df376
105 2:024e4e7df376
105 searching for changes
106 searching for changes
106 4 changesets found
107 4 changesets found
107 adding changesets
108 adding changesets
108 adding manifests
109 adding manifests
109 adding file changes
110 adding file changes
110 added 4 changesets with 5 changes to 2 files
111 added 4 changesets with 5 changes to 2 files
111 (run 'hg update' to get a working copy)
112 (run 'hg update' to get a working copy)
112 checking changesets
113 checking changesets
113 checking manifests
114 checking manifests
114 crosschecking files in changesets and manifests
115 crosschecking files in changesets and manifests
115 checking files
116 checking files
116 2 files, 4 changesets, 5 total revisions
117 2 files, 4 changesets, 5 total revisions
117 3:1e3f6b843bd6
118 3:1e3f6b843bd6
118 searching for changes
119 searching for changes
119 5 changesets found
120 5 changesets found
120 adding changesets
121 adding changesets
121 adding manifests
122 adding manifests
122 adding file changes
123 adding file changes
123 added 5 changesets with 6 changes to 3 files
124 added 5 changesets with 6 changes to 3 files
124 (run 'hg update' to get a working copy)
125 (run 'hg update' to get a working copy)
125 checking changesets
126 checking changesets
126 checking manifests
127 checking manifests
127 crosschecking files in changesets and manifests
128 crosschecking files in changesets and manifests
128 checking files
129 checking files
129 3 files, 5 changesets, 6 total revisions
130 3 files, 5 changesets, 6 total revisions
130 4:80fe151401c2
131 4:80fe151401c2
131 searching for changes
132 searching for changes
132 5 changesets found
133 5 changesets found
133 adding changesets
134 adding changesets
134 adding manifests
135 adding manifests
135 adding file changes
136 adding file changes
136 added 5 changesets with 5 changes to 2 files
137 added 5 changesets with 5 changes to 2 files
137 (run 'hg update' to get a working copy)
138 (run 'hg update' to get a working copy)
138 checking changesets
139 checking changesets
139 checking manifests
140 checking manifests
140 crosschecking files in changesets and manifests
141 crosschecking files in changesets and manifests
141 checking files
142 checking files
142 2 files, 5 changesets, 5 total revisions
143 2 files, 5 changesets, 5 total revisions
143 4:836ac62537ab
144 4:836ac62537ab
144 pulling from ../test-7
145 pulling from ../test-7
145 searching for changes
146 searching for changes
146 adding changesets
147 adding changesets
147 adding manifests
148 adding manifests
148 adding file changes
149 adding file changes
149 added 4 changesets with 2 changes to 3 files (+1 heads)
150 added 4 changesets with 2 changes to 3 files (+1 heads)
150 (run 'hg heads' to see heads, 'hg merge' to merge)
151 (run 'hg heads' to see heads, 'hg merge' to merge)
151 checking changesets
152 checking changesets
152 checking manifests
153 checking manifests
153 crosschecking files in changesets and manifests
154 crosschecking files in changesets and manifests
154 checking files
155 checking files
155 4 files, 9 changesets, 7 total revisions
156 4 files, 9 changesets, 7 total revisions
156 rolling back last transaction
157 rolling back last transaction
157 % should fail
158 % should fail
158 abort: --base is incompatible with specifiying a destination
159 abort: --base is incompatible with specifiying a destination
159 abort: repository default-push not found!
160 abort: repository default-push not found!
160 2 changesets found
161 2 changesets found
161 4 changesets found
162 4 changesets found
162 6 changesets found
163 6 changesets found
163 1 changesets found
164 1 changesets found
164 1 changesets found
165 1 changesets found
165 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
166 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
166 % 2
167 % 2
167 2:d62976ca1e50
168 2:d62976ca1e50
168 adding changesets
169 adding changesets
169 transaction abort!
170 transaction abort!
170 rollback completed
171 rollback completed
171 abort: 00changelog.i@ac69c658229d: unknown parent!
172 abort: 00changelog.i@ac69c658229d: unknown parent!
172 % 2
173 % 2
173 2:d62976ca1e50
174 2:d62976ca1e50
174 adding changesets
175 adding changesets
175 adding manifests
176 adding manifests
176 adding file changes
177 adding file changes
177 added 6 changesets with 4 changes to 4 files (+1 heads)
178 added 6 changesets with 4 changes to 4 files (+1 heads)
178 (run 'hg heads' to see heads, 'hg merge' to merge)
179 (run 'hg heads' to see heads, 'hg merge' to merge)
179 % 8
180 % 8
180 8:836ac62537ab
181 8:836ac62537ab
181 checking changesets
182 checking changesets
182 checking manifests
183 checking manifests
183 crosschecking files in changesets and manifests
184 crosschecking files in changesets and manifests
184 checking files
185 checking files
185 4 files, 9 changesets, 7 total revisions
186 4 files, 9 changesets, 7 total revisions
186 rolling back last transaction
187 rolling back last transaction
187 % 2
188 % 2
188 2:d62976ca1e50
189 2:d62976ca1e50
189 adding changesets
190 adding changesets
190 adding manifests
191 adding manifests
191 adding file changes
192 adding file changes
192 added 2 changesets with 2 changes to 2 files
193 added 2 changesets with 2 changes to 2 files
193 (run 'hg update' to get a working copy)
194 (run 'hg update' to get a working copy)
194 % 4
195 % 4
195 4:836ac62537ab
196 4:836ac62537ab
196 checking changesets
197 checking changesets
197 checking manifests
198 checking manifests
198 crosschecking files in changesets and manifests
199 crosschecking files in changesets and manifests
199 checking files
200 checking files
200 2 files, 5 changesets, 5 total revisions
201 2 files, 5 changesets, 5 total revisions
201 rolling back last transaction
202 rolling back last transaction
202 adding changesets
203 adding changesets
203 adding manifests
204 adding manifests
204 adding file changes
205 adding file changes
205 added 4 changesets with 3 changes to 3 files (+1 heads)
206 added 4 changesets with 3 changes to 3 files (+1 heads)
206 (run 'hg heads' to see heads, 'hg merge' to merge)
207 (run 'hg heads' to see heads, 'hg merge' to merge)
207 % 6
208 % 6
208 6:80fe151401c2
209 6:80fe151401c2
209 checking changesets
210 checking changesets
210 checking manifests
211 checking manifests
211 crosschecking files in changesets and manifests
212 crosschecking files in changesets and manifests
212 checking files
213 checking files
213 3 files, 7 changesets, 6 total revisions
214 3 files, 7 changesets, 6 total revisions
214 warning: detected divergent renames of afile to:
215 warning: detected divergent renames of afile to:
215 anotherfile
216 anotherfile
216 adifferentfile
217 adifferentfile
217 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
218 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
218 (branch merge, don't forget to commit)
219 (branch merge, don't forget to commit)
219 7 changesets found
220 7 changesets found
220 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
221 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
221 adding changesets
222 adding changesets
222 adding manifests
223 adding manifests
223 adding file changes
224 adding file changes
224 added 7 changesets with 4 changes to 4 files
225 added 7 changesets with 4 changes to 4 files
225 (run 'hg update' to get a working copy)
226 (run 'hg update' to get a working copy)
226 % 9
227 % 9
227 9:607fe5912aad
228 9:607fe5912aad
228 checking changesets
229 checking changesets
229 checking manifests
230 checking manifests
230 crosschecking files in changesets and manifests
231 crosschecking files in changesets and manifests
231 checking files
232 checking files
232 4 files, 10 changesets, 7 total revisions
233 4 files, 10 changesets, 7 total revisions
@@ -1,306 +1,307 b''
1 ====== Setting up test
1 ====== Setting up test
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 created new head
3 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
4 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
4 checking changesets
5 checking changesets
5 checking manifests
6 checking manifests
6 crosschecking files in changesets and manifests
7 crosschecking files in changesets and manifests
7 checking files
8 checking files
8 4 files, 9 changesets, 7 total revisions
9 4 files, 9 changesets, 7 total revisions
9 ====== Bundle --all
10 ====== Bundle --all
10 9 changesets found
11 9 changesets found
11 ====== Bundle test to full.hg
12 ====== Bundle test to full.hg
12 searching for changes
13 searching for changes
13 9 changesets found
14 9 changesets found
14 ====== Unbundle full.hg in test
15 ====== Unbundle full.hg in test
15 adding changesets
16 adding changesets
16 adding manifests
17 adding manifests
17 adding file changes
18 adding file changes
18 added 0 changesets with 0 changes to 4 files
19 added 0 changesets with 0 changes to 4 files
19 (run 'hg update' to get a working copy)
20 (run 'hg update' to get a working copy)
20 ====== Verify empty
21 ====== Verify empty
21 changeset: -1:000000000000
22 changeset: -1:000000000000
22 tag: tip
23 tag: tip
23 user:
24 user:
24 date: Thu Jan 01 00:00:00 1970 +0000
25 date: Thu Jan 01 00:00:00 1970 +0000
25
26
26 checking changesets
27 checking changesets
27 checking manifests
28 checking manifests
28 crosschecking files in changesets and manifests
29 crosschecking files in changesets and manifests
29 checking files
30 checking files
30 0 files, 0 changesets, 0 total revisions
31 0 files, 0 changesets, 0 total revisions
31 ====== Pull full.hg into test (using --cwd)
32 ====== Pull full.hg into test (using --cwd)
32 pulling from ../full.hg
33 pulling from ../full.hg
33 searching for changes
34 searching for changes
34 no changes found
35 no changes found
35 ====== Pull full.hg into empty (using --cwd)
36 ====== Pull full.hg into empty (using --cwd)
36 pulling from ../full.hg
37 pulling from ../full.hg
37 requesting all changes
38 requesting all changes
38 adding changesets
39 adding changesets
39 adding manifests
40 adding manifests
40 adding file changes
41 adding file changes
41 added 9 changesets with 7 changes to 4 files (+1 heads)
42 added 9 changesets with 7 changes to 4 files (+1 heads)
42 (run 'hg heads' to see heads, 'hg merge' to merge)
43 (run 'hg heads' to see heads, 'hg merge' to merge)
43 ====== Rollback empty
44 ====== Rollback empty
44 rolling back last transaction
45 rolling back last transaction
45 ====== Pull full.hg into empty again (using --cwd)
46 ====== Pull full.hg into empty again (using --cwd)
46 pulling from ../full.hg
47 pulling from ../full.hg
47 requesting all changes
48 requesting all changes
48 adding changesets
49 adding changesets
49 adding manifests
50 adding manifests
50 adding file changes
51 adding file changes
51 added 9 changesets with 7 changes to 4 files (+1 heads)
52 added 9 changesets with 7 changes to 4 files (+1 heads)
52 (run 'hg heads' to see heads, 'hg merge' to merge)
53 (run 'hg heads' to see heads, 'hg merge' to merge)
53 ====== Pull full.hg into test (using -R)
54 ====== Pull full.hg into test (using -R)
54 pulling from full.hg
55 pulling from full.hg
55 searching for changes
56 searching for changes
56 no changes found
57 no changes found
57 ====== Pull full.hg into empty (using -R)
58 ====== Pull full.hg into empty (using -R)
58 pulling from full.hg
59 pulling from full.hg
59 searching for changes
60 searching for changes
60 no changes found
61 no changes found
61 ====== Rollback empty
62 ====== Rollback empty
62 rolling back last transaction
63 rolling back last transaction
63 ====== Pull full.hg into empty again (using -R)
64 ====== Pull full.hg into empty again (using -R)
64 pulling from full.hg
65 pulling from full.hg
65 requesting all changes
66 requesting all changes
66 adding changesets
67 adding changesets
67 adding manifests
68 adding manifests
68 adding file changes
69 adding file changes
69 added 9 changesets with 7 changes to 4 files (+1 heads)
70 added 9 changesets with 7 changes to 4 files (+1 heads)
70 (run 'hg heads' to see heads, 'hg merge' to merge)
71 (run 'hg heads' to see heads, 'hg merge' to merge)
71 ====== Log -R full.hg in fresh empty
72 ====== Log -R full.hg in fresh empty
72 changeset: 8:836ac62537ab
73 changeset: 8:836ac62537ab
73 tag: tip
74 tag: tip
74 parent: 3:ac69c658229d
75 parent: 3:ac69c658229d
75 user: test
76 user: test
76 date: Mon Jan 12 13:46:40 1970 +0000
77 date: Mon Jan 12 13:46:40 1970 +0000
77 summary: 0.3m
78 summary: 0.3m
78
79
79 changeset: 7:80fe151401c2
80 changeset: 7:80fe151401c2
80 user: test
81 user: test
81 date: Mon Jan 12 13:46:40 1970 +0000
82 date: Mon Jan 12 13:46:40 1970 +0000
82 summary: 1.3m
83 summary: 1.3m
83
84
84 changeset: 6:1e3f6b843bd6
85 changeset: 6:1e3f6b843bd6
85 user: test
86 user: test
86 date: Mon Jan 12 13:46:40 1970 +0000
87 date: Mon Jan 12 13:46:40 1970 +0000
87 summary: 1.3
88 summary: 1.3
88
89
89 changeset: 5:024e4e7df376
90 changeset: 5:024e4e7df376
90 user: test
91 user: test
91 date: Mon Jan 12 13:46:40 1970 +0000
92 date: Mon Jan 12 13:46:40 1970 +0000
92 summary: 1.2
93 summary: 1.2
93
94
94 changeset: 4:5f4f3ceb285e
95 changeset: 4:5f4f3ceb285e
95 parent: 0:5649c9d34dd8
96 parent: 0:5649c9d34dd8
96 user: test
97 user: test
97 date: Mon Jan 12 13:46:40 1970 +0000
98 date: Mon Jan 12 13:46:40 1970 +0000
98 summary: 1.1
99 summary: 1.1
99
100
100 changeset: 3:ac69c658229d
101 changeset: 3:ac69c658229d
101 user: test
102 user: test
102 date: Mon Jan 12 13:46:40 1970 +0000
103 date: Mon Jan 12 13:46:40 1970 +0000
103 summary: 0.3
104 summary: 0.3
104
105
105 changeset: 2:d62976ca1e50
106 changeset: 2:d62976ca1e50
106 user: test
107 user: test
107 date: Mon Jan 12 13:46:40 1970 +0000
108 date: Mon Jan 12 13:46:40 1970 +0000
108 summary: 0.2
109 summary: 0.2
109
110
110 changeset: 1:10b2180f755b
111 changeset: 1:10b2180f755b
111 user: test
112 user: test
112 date: Mon Jan 12 13:46:40 1970 +0000
113 date: Mon Jan 12 13:46:40 1970 +0000
113 summary: 0.1
114 summary: 0.1
114
115
115 changeset: 0:5649c9d34dd8
116 changeset: 0:5649c9d34dd8
116 user: test
117 user: test
117 date: Mon Jan 12 13:46:40 1970 +0000
118 date: Mon Jan 12 13:46:40 1970 +0000
118 summary: 0.0
119 summary: 0.0
119
120
120 ====== Pull ../full.hg into empty (with hook)
121 ====== Pull ../full.hg into empty (with hook)
121 changegroup hook: HG_NODE=5649c9d34dd87d0ecb5fd39672128376e83b22e1 HG_SOURCE=pull HG_URL=bundle:../full.hg
122 changegroup hook: HG_NODE=5649c9d34dd87d0ecb5fd39672128376e83b22e1 HG_SOURCE=pull HG_URL=bundle:../full.hg
122 pulling from bundle://../full.hg
123 pulling from bundle://../full.hg
123 requesting all changes
124 requesting all changes
124 adding changesets
125 adding changesets
125 adding manifests
126 adding manifests
126 adding file changes
127 adding file changes
127 added 9 changesets with 7 changes to 4 files (+1 heads)
128 added 9 changesets with 7 changes to 4 files (+1 heads)
128 (run 'hg heads' to see heads, 'hg merge' to merge)
129 (run 'hg heads' to see heads, 'hg merge' to merge)
129 ====== Rollback empty
130 ====== Rollback empty
130 rolling back last transaction
131 rolling back last transaction
131 ====== Log -R bundle:empty+full.hg
132 ====== Log -R bundle:empty+full.hg
132 8 7 6 5 4 3 2 1 0
133 8 7 6 5 4 3 2 1 0
133 ====== Pull full.hg into empty again (using -R; with hook)
134 ====== Pull full.hg into empty again (using -R; with hook)
134 changegroup hook: HG_NODE=5649c9d34dd87d0ecb5fd39672128376e83b22e1 HG_SOURCE=pull HG_URL=bundle:empty+full.hg
135 changegroup hook: HG_NODE=5649c9d34dd87d0ecb5fd39672128376e83b22e1 HG_SOURCE=pull HG_URL=bundle:empty+full.hg
135 pulling from full.hg
136 pulling from full.hg
136 requesting all changes
137 requesting all changes
137 adding changesets
138 adding changesets
138 adding manifests
139 adding manifests
139 adding file changes
140 adding file changes
140 added 9 changesets with 7 changes to 4 files (+1 heads)
141 added 9 changesets with 7 changes to 4 files (+1 heads)
141 (run 'hg heads' to see heads, 'hg merge' to merge)
142 (run 'hg heads' to see heads, 'hg merge' to merge)
142 ====== Create partial clones
143 ====== Create partial clones
143 requesting all changes
144 requesting all changes
144 adding changesets
145 adding changesets
145 adding manifests
146 adding manifests
146 adding file changes
147 adding file changes
147 added 4 changesets with 4 changes to 1 files
148 added 4 changesets with 4 changes to 1 files
148 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
149 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
149 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
150 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
150 ====== Log -R full.hg in partial
151 ====== Log -R full.hg in partial
151 changeset: 8:836ac62537ab
152 changeset: 8:836ac62537ab
152 tag: tip
153 tag: tip
153 parent: 3:ac69c658229d
154 parent: 3:ac69c658229d
154 user: test
155 user: test
155 date: Mon Jan 12 13:46:40 1970 +0000
156 date: Mon Jan 12 13:46:40 1970 +0000
156 summary: 0.3m
157 summary: 0.3m
157
158
158 changeset: 7:80fe151401c2
159 changeset: 7:80fe151401c2
159 user: test
160 user: test
160 date: Mon Jan 12 13:46:40 1970 +0000
161 date: Mon Jan 12 13:46:40 1970 +0000
161 summary: 1.3m
162 summary: 1.3m
162
163
163 changeset: 6:1e3f6b843bd6
164 changeset: 6:1e3f6b843bd6
164 user: test
165 user: test
165 date: Mon Jan 12 13:46:40 1970 +0000
166 date: Mon Jan 12 13:46:40 1970 +0000
166 summary: 1.3
167 summary: 1.3
167
168
168 changeset: 5:024e4e7df376
169 changeset: 5:024e4e7df376
169 user: test
170 user: test
170 date: Mon Jan 12 13:46:40 1970 +0000
171 date: Mon Jan 12 13:46:40 1970 +0000
171 summary: 1.2
172 summary: 1.2
172
173
173 changeset: 4:5f4f3ceb285e
174 changeset: 4:5f4f3ceb285e
174 parent: 0:5649c9d34dd8
175 parent: 0:5649c9d34dd8
175 user: test
176 user: test
176 date: Mon Jan 12 13:46:40 1970 +0000
177 date: Mon Jan 12 13:46:40 1970 +0000
177 summary: 1.1
178 summary: 1.1
178
179
179 changeset: 3:ac69c658229d
180 changeset: 3:ac69c658229d
180 user: test
181 user: test
181 date: Mon Jan 12 13:46:40 1970 +0000
182 date: Mon Jan 12 13:46:40 1970 +0000
182 summary: 0.3
183 summary: 0.3
183
184
184 changeset: 2:d62976ca1e50
185 changeset: 2:d62976ca1e50
185 user: test
186 user: test
186 date: Mon Jan 12 13:46:40 1970 +0000
187 date: Mon Jan 12 13:46:40 1970 +0000
187 summary: 0.2
188 summary: 0.2
188
189
189 changeset: 1:10b2180f755b
190 changeset: 1:10b2180f755b
190 user: test
191 user: test
191 date: Mon Jan 12 13:46:40 1970 +0000
192 date: Mon Jan 12 13:46:40 1970 +0000
192 summary: 0.1
193 summary: 0.1
193
194
194 changeset: 0:5649c9d34dd8
195 changeset: 0:5649c9d34dd8
195 user: test
196 user: test
196 date: Mon Jan 12 13:46:40 1970 +0000
197 date: Mon Jan 12 13:46:40 1970 +0000
197 summary: 0.0
198 summary: 0.0
198
199
199 ====== Incoming full.hg in partial
200 ====== Incoming full.hg in partial
200 comparing with bundle://../full.hg
201 comparing with bundle://../full.hg
201 searching for changes
202 searching for changes
202 changeset: 4:5f4f3ceb285e
203 changeset: 4:5f4f3ceb285e
203 parent: 0:5649c9d34dd8
204 parent: 0:5649c9d34dd8
204 user: test
205 user: test
205 date: Mon Jan 12 13:46:40 1970 +0000
206 date: Mon Jan 12 13:46:40 1970 +0000
206 summary: 1.1
207 summary: 1.1
207
208
208 changeset: 5:024e4e7df376
209 changeset: 5:024e4e7df376
209 user: test
210 user: test
210 date: Mon Jan 12 13:46:40 1970 +0000
211 date: Mon Jan 12 13:46:40 1970 +0000
211 summary: 1.2
212 summary: 1.2
212
213
213 changeset: 6:1e3f6b843bd6
214 changeset: 6:1e3f6b843bd6
214 user: test
215 user: test
215 date: Mon Jan 12 13:46:40 1970 +0000
216 date: Mon Jan 12 13:46:40 1970 +0000
216 summary: 1.3
217 summary: 1.3
217
218
218 changeset: 7:80fe151401c2
219 changeset: 7:80fe151401c2
219 user: test
220 user: test
220 date: Mon Jan 12 13:46:40 1970 +0000
221 date: Mon Jan 12 13:46:40 1970 +0000
221 summary: 1.3m
222 summary: 1.3m
222
223
223 changeset: 8:836ac62537ab
224 changeset: 8:836ac62537ab
224 tag: tip
225 tag: tip
225 parent: 3:ac69c658229d
226 parent: 3:ac69c658229d
226 user: test
227 user: test
227 date: Mon Jan 12 13:46:40 1970 +0000
228 date: Mon Jan 12 13:46:40 1970 +0000
228 summary: 0.3m
229 summary: 0.3m
229
230
230 ====== Outgoing -R full.hg vs partial2 in partial
231 ====== Outgoing -R full.hg vs partial2 in partial
231 comparing with ../partial2
232 comparing with ../partial2
232 searching for changes
233 searching for changes
233 changeset: 4:5f4f3ceb285e
234 changeset: 4:5f4f3ceb285e
234 parent: 0:5649c9d34dd8
235 parent: 0:5649c9d34dd8
235 user: test
236 user: test
236 date: Mon Jan 12 13:46:40 1970 +0000
237 date: Mon Jan 12 13:46:40 1970 +0000
237 summary: 1.1
238 summary: 1.1
238
239
239 changeset: 5:024e4e7df376
240 changeset: 5:024e4e7df376
240 user: test
241 user: test
241 date: Mon Jan 12 13:46:40 1970 +0000
242 date: Mon Jan 12 13:46:40 1970 +0000
242 summary: 1.2
243 summary: 1.2
243
244
244 changeset: 6:1e3f6b843bd6
245 changeset: 6:1e3f6b843bd6
245 user: test
246 user: test
246 date: Mon Jan 12 13:46:40 1970 +0000
247 date: Mon Jan 12 13:46:40 1970 +0000
247 summary: 1.3
248 summary: 1.3
248
249
249 changeset: 7:80fe151401c2
250 changeset: 7:80fe151401c2
250 user: test
251 user: test
251 date: Mon Jan 12 13:46:40 1970 +0000
252 date: Mon Jan 12 13:46:40 1970 +0000
252 summary: 1.3m
253 summary: 1.3m
253
254
254 changeset: 8:836ac62537ab
255 changeset: 8:836ac62537ab
255 tag: tip
256 tag: tip
256 parent: 3:ac69c658229d
257 parent: 3:ac69c658229d
257 user: test
258 user: test
258 date: Mon Jan 12 13:46:40 1970 +0000
259 date: Mon Jan 12 13:46:40 1970 +0000
259 summary: 0.3m
260 summary: 0.3m
260
261
261 ====== Outgoing -R does-not-exist.hg vs partial2 in partial
262 ====== Outgoing -R does-not-exist.hg vs partial2 in partial
262 abort: No such file or directory: ../does-not-exist.hg
263 abort: No such file or directory: ../does-not-exist.hg
263 ====== Direct clone from bundle (all-history)
264 ====== Direct clone from bundle (all-history)
264 requesting all changes
265 requesting all changes
265 adding changesets
266 adding changesets
266 adding manifests
267 adding manifests
267 adding file changes
268 adding file changes
268 added 9 changesets with 7 changes to 4 files (+1 heads)
269 added 9 changesets with 7 changes to 4 files (+1 heads)
269 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
270 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
270 changeset: 8:836ac62537ab
271 changeset: 8:836ac62537ab
271 tag: tip
272 tag: tip
272 parent: 3:ac69c658229d
273 parent: 3:ac69c658229d
273 user: test
274 user: test
274 date: Mon Jan 12 13:46:40 1970 +0000
275 date: Mon Jan 12 13:46:40 1970 +0000
275 summary: 0.3m
276 summary: 0.3m
276
277
277 changeset: 7:80fe151401c2
278 changeset: 7:80fe151401c2
278 user: test
279 user: test
279 date: Mon Jan 12 13:46:40 1970 +0000
280 date: Mon Jan 12 13:46:40 1970 +0000
280 summary: 1.3m
281 summary: 1.3m
281
282
282 ====== Unbundle incremental bundles into fresh empty in one go
283 ====== Unbundle incremental bundles into fresh empty in one go
283 1 changesets found
284 1 changesets found
284 1 changesets found
285 1 changesets found
285 adding changesets
286 adding changesets
286 adding manifests
287 adding manifests
287 adding file changes
288 adding file changes
288 added 1 changesets with 1 changes to 1 files
289 added 1 changesets with 1 changes to 1 files
289 adding changesets
290 adding changesets
290 adding manifests
291 adding manifests
291 adding file changes
292 adding file changes
292 added 1 changesets with 1 changes to 1 files
293 added 1 changesets with 1 changes to 1 files
293 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
294 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
294 ====== test for 540d1059c802
295 ====== test for 540d1059c802
295 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
296 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
296 searching for changes
297 searching for changes
297 1 changesets found
298 1 changesets found
298 comparing with ../bundle.hg
299 comparing with ../bundle.hg
299 searching for changes
300 searching for changes
300 changeset: 2:ed1b79f46b9a
301 changeset: 2:ed1b79f46b9a
301 tag: tip
302 tag: tip
302 parent: 0:bbd179dfa0a7
303 parent: 0:bbd179dfa0a7
303 user: test
304 user: test
304 date: Thu Jan 01 00:00:00 1970 +0000
305 date: Thu Jan 01 00:00:00 1970 +0000
305 summary: change foo
306 summary: change foo
306
307
@@ -1,21 +1,22 b''
1 % manifest of p2:
1 % manifest of p2:
2 bar
2 bar
3 foo
3 foo
4
4
5 created new head
5 % manifest of p1:
6 % manifest of p1:
6 foo
7 foo
7 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
8 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
8 (branch merge, don't forget to commit)
9 (branch merge, don't forget to commit)
9 % this should not mention bar:
10 % this should not mention bar:
10 changeset: 3:ef2fc9b4a51b
11 changeset: 3:ef2fc9b4a51b
11 tag: tip
12 tag: tip
12 parent: 2:ed1b79f46b9a
13 parent: 2:ed1b79f46b9a
13 parent: 1:d394a8db219b
14 parent: 1:d394a8db219b
14 user: test
15 user: test
15 date: Thu Jan 01 00:00:00 1970 +0000
16 date: Thu Jan 01 00:00:00 1970 +0000
16 description:
17 description:
17 merge
18 merge
18
19
19
20
20 rev offset length base linkrev nodeid p1 p2
21 rev offset length base linkrev nodeid p1 p2
21 0 0 5 0 1 b004912a8510 000000000000 000000000000
22 0 0 5 0 1 b004912a8510 000000000000 000000000000
@@ -1,137 +1,138 b''
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 created new head
2 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
3 rev offset length base linkrev nodeid p1 p2
4 rev offset length base linkrev nodeid p1 p2
4 0 0 3 0 0 362fef284ce2 000000000000 000000000000
5 0 0 3 0 0 362fef284ce2 000000000000 000000000000
5 1 3 5 1 1 125144f7e028 362fef284ce2 000000000000
6 1 3 5 1 1 125144f7e028 362fef284ce2 000000000000
6 2 8 7 2 2 4c982badb186 125144f7e028 000000000000
7 2 8 7 2 2 4c982badb186 125144f7e028 000000000000
7 3 15 9 3 3 19b1fc555737 4c982badb186 000000000000
8 3 15 9 3 3 19b1fc555737 4c982badb186 000000000000
8 rev offset length base linkrev nodeid p1 p2
9 rev offset length base linkrev nodeid p1 p2
9 0 0 75 0 7 905359268f77 000000000000 000000000000
10 0 0 75 0 7 905359268f77 000000000000 000000000000
10 rev offset length base linkrev nodeid p1 p2
11 rev offset length base linkrev nodeid p1 p2
11 0 0 75 0 8 905359268f77 000000000000 000000000000
12 0 0 75 0 8 905359268f77 000000000000 000000000000
12 rev offset length base linkrev nodeid p1 p2
13 rev offset length base linkrev nodeid p1 p2
13 0 0 8 0 6 12ab3bcc5ea4 000000000000 000000000000
14 0 0 8 0 6 12ab3bcc5ea4 000000000000 000000000000
14 rev offset length base linkrev nodeid p1 p2
15 rev offset length base linkrev nodeid p1 p2
15 0 0 48 0 0 43eadb1d2d06 000000000000 000000000000
16 0 0 48 0 0 43eadb1d2d06 000000000000 000000000000
16 1 48 48 1 1 8b89697eba2c 43eadb1d2d06 000000000000
17 1 48 48 1 1 8b89697eba2c 43eadb1d2d06 000000000000
17 2 96 48 2 2 626a32663c2f 8b89697eba2c 000000000000
18 2 96 48 2 2 626a32663c2f 8b89697eba2c 000000000000
18 3 144 48 3 3 f54c32f13478 626a32663c2f 000000000000
19 3 144 48 3 3 f54c32f13478 626a32663c2f 000000000000
19 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000
20 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000
20 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000
21 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000
21 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000
22 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000
22 checking changesets
23 checking changesets
23 checking manifests
24 checking manifests
24 crosschecking files in changesets and manifests
25 crosschecking files in changesets and manifests
25 checking files
26 checking files
26 4 files, 9 changesets, 7 total revisions
27 4 files, 9 changesets, 7 total revisions
27 requesting all changes
28 requesting all changes
28 adding changesets
29 adding changesets
29 adding manifests
30 adding manifests
30 adding file changes
31 adding file changes
31 added 1 changesets with 1 changes to 1 files
32 added 1 changesets with 1 changes to 1 files
32 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
33 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
33 checking changesets
34 checking changesets
34 checking manifests
35 checking manifests
35 crosschecking files in changesets and manifests
36 crosschecking files in changesets and manifests
36 checking files
37 checking files
37 1 files, 1 changesets, 1 total revisions
38 1 files, 1 changesets, 1 total revisions
38 requesting all changes
39 requesting all changes
39 adding changesets
40 adding changesets
40 adding manifests
41 adding manifests
41 adding file changes
42 adding file changes
42 added 2 changesets with 2 changes to 1 files
43 added 2 changesets with 2 changes to 1 files
43 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
44 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
44 checking changesets
45 checking changesets
45 checking manifests
46 checking manifests
46 crosschecking files in changesets and manifests
47 crosschecking files in changesets and manifests
47 checking files
48 checking files
48 1 files, 2 changesets, 2 total revisions
49 1 files, 2 changesets, 2 total revisions
49 requesting all changes
50 requesting all changes
50 adding changesets
51 adding changesets
51 adding manifests
52 adding manifests
52 adding file changes
53 adding file changes
53 added 3 changesets with 3 changes to 1 files
54 added 3 changesets with 3 changes to 1 files
54 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
55 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
55 checking changesets
56 checking changesets
56 checking manifests
57 checking manifests
57 crosschecking files in changesets and manifests
58 crosschecking files in changesets and manifests
58 checking files
59 checking files
59 1 files, 3 changesets, 3 total revisions
60 1 files, 3 changesets, 3 total revisions
60 requesting all changes
61 requesting all changes
61 adding changesets
62 adding changesets
62 adding manifests
63 adding manifests
63 adding file changes
64 adding file changes
64 added 4 changesets with 4 changes to 1 files
65 added 4 changesets with 4 changes to 1 files
65 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
66 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
66 checking changesets
67 checking changesets
67 checking manifests
68 checking manifests
68 crosschecking files in changesets and manifests
69 crosschecking files in changesets and manifests
69 checking files
70 checking files
70 1 files, 4 changesets, 4 total revisions
71 1 files, 4 changesets, 4 total revisions
71 requesting all changes
72 requesting all changes
72 adding changesets
73 adding changesets
73 adding manifests
74 adding manifests
74 adding file changes
75 adding file changes
75 added 2 changesets with 2 changes to 1 files
76 added 2 changesets with 2 changes to 1 files
76 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
77 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
77 checking changesets
78 checking changesets
78 checking manifests
79 checking manifests
79 crosschecking files in changesets and manifests
80 crosschecking files in changesets and manifests
80 checking files
81 checking files
81 1 files, 2 changesets, 2 total revisions
82 1 files, 2 changesets, 2 total revisions
82 requesting all changes
83 requesting all changes
83 adding changesets
84 adding changesets
84 adding manifests
85 adding manifests
85 adding file changes
86 adding file changes
86 added 3 changesets with 3 changes to 1 files
87 added 3 changesets with 3 changes to 1 files
87 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
88 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
88 checking changesets
89 checking changesets
89 checking manifests
90 checking manifests
90 crosschecking files in changesets and manifests
91 crosschecking files in changesets and manifests
91 checking files
92 checking files
92 1 files, 3 changesets, 3 total revisions
93 1 files, 3 changesets, 3 total revisions
93 requesting all changes
94 requesting all changes
94 adding changesets
95 adding changesets
95 adding manifests
96 adding manifests
96 adding file changes
97 adding file changes
97 added 4 changesets with 5 changes to 2 files
98 added 4 changesets with 5 changes to 2 files
98 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
99 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
99 checking changesets
100 checking changesets
100 checking manifests
101 checking manifests
101 crosschecking files in changesets and manifests
102 crosschecking files in changesets and manifests
102 checking files
103 checking files
103 2 files, 4 changesets, 5 total revisions
104 2 files, 4 changesets, 5 total revisions
104 requesting all changes
105 requesting all changes
105 adding changesets
106 adding changesets
106 adding manifests
107 adding manifests
107 adding file changes
108 adding file changes
108 added 5 changesets with 6 changes to 3 files
109 added 5 changesets with 6 changes to 3 files
109 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
110 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
110 checking changesets
111 checking changesets
111 checking manifests
112 checking manifests
112 crosschecking files in changesets and manifests
113 crosschecking files in changesets and manifests
113 checking files
114 checking files
114 3 files, 5 changesets, 6 total revisions
115 3 files, 5 changesets, 6 total revisions
115 requesting all changes
116 requesting all changes
116 adding changesets
117 adding changesets
117 adding manifests
118 adding manifests
118 adding file changes
119 adding file changes
119 added 5 changesets with 5 changes to 2 files
120 added 5 changesets with 5 changes to 2 files
120 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
121 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
121 checking changesets
122 checking changesets
122 checking manifests
123 checking manifests
123 crosschecking files in changesets and manifests
124 crosschecking files in changesets and manifests
124 checking files
125 checking files
125 2 files, 5 changesets, 5 total revisions
126 2 files, 5 changesets, 5 total revisions
126 pulling from ../test-7
127 pulling from ../test-7
127 searching for changes
128 searching for changes
128 adding changesets
129 adding changesets
129 adding manifests
130 adding manifests
130 adding file changes
131 adding file changes
131 added 4 changesets with 2 changes to 3 files (+1 heads)
132 added 4 changesets with 2 changes to 3 files (+1 heads)
132 (run 'hg heads' to see heads, 'hg merge' to merge)
133 (run 'hg heads' to see heads, 'hg merge' to merge)
133 checking changesets
134 checking changesets
134 checking manifests
135 checking manifests
135 crosschecking files in changesets and manifests
136 crosschecking files in changesets and manifests
136 checking files
137 checking files
137 4 files, 9 changesets, 7 total revisions
138 4 files, 9 changesets, 7 total revisions
@@ -1,571 +1,573 b''
1 created new head
1 0 files updated, 0 files merged, 4 files removed, 0 files unresolved
2 0 files updated, 0 files merged, 4 files removed, 0 files unresolved
3 created new head
2 # default style is like normal output
4 # default style is like normal output
3 # normal
5 # normal
4 # verbose
6 # verbose
5 # debug
7 # debug
6 # revision with no copies (used to print a traceback)
8 # revision with no copies (used to print a traceback)
7
9
8 # compact style works
10 # compact style works
9 7[tip]:-1 29114dbae42b 1970-01-12 13:46 +0000 user
11 7[tip]:-1 29114dbae42b 1970-01-12 13:46 +0000 user
10 second
12 second
11
13
12 6:5,4 c7b487c6c50e 1970-01-18 08:40 +0000 person
14 6:5,4 c7b487c6c50e 1970-01-18 08:40 +0000 person
13 merge
15 merge
14
16
15 5:3 13207e5a10d9 1970-01-18 08:40 +0000 person
17 5:3 13207e5a10d9 1970-01-18 08:40 +0000 person
16 new head
18 new head
17
19
18 4 32a18f097fcc 1970-01-17 04:53 +0000 person
20 4 32a18f097fcc 1970-01-17 04:53 +0000 person
19 new branch
21 new branch
20
22
21 3 10e46f2dcbf4 1970-01-16 01:06 +0000 person
23 3 10e46f2dcbf4 1970-01-16 01:06 +0000 person
22 no user, no domain
24 no user, no domain
23
25
24 2 97054abb4ab8 1970-01-14 21:20 +0000 other
26 2 97054abb4ab8 1970-01-14 21:20 +0000 other
25 no person
27 no person
26
28
27 1 b608e9d1a3f0 1970-01-13 17:33 +0000 other
29 1 b608e9d1a3f0 1970-01-13 17:33 +0000 other
28 other 1
30 other 1
29
31
30 0 1e4e1b8f71e0 1970-01-12 13:46 +0000 user
32 0 1e4e1b8f71e0 1970-01-12 13:46 +0000 user
31 line 1
33 line 1
32
34
33 7[tip]:-1 29114dbae42b 1970-01-12 13:46 +0000 user
35 7[tip]:-1 29114dbae42b 1970-01-12 13:46 +0000 user
34 second
36 second
35
37
36 6:5,4 c7b487c6c50e 1970-01-18 08:40 +0000 person
38 6:5,4 c7b487c6c50e 1970-01-18 08:40 +0000 person
37 merge
39 merge
38
40
39 5:3 13207e5a10d9 1970-01-18 08:40 +0000 person
41 5:3 13207e5a10d9 1970-01-18 08:40 +0000 person
40 new head
42 new head
41
43
42 4 32a18f097fcc 1970-01-17 04:53 +0000 person
44 4 32a18f097fcc 1970-01-17 04:53 +0000 person
43 new branch
45 new branch
44
46
45 3 10e46f2dcbf4 1970-01-16 01:06 +0000 person
47 3 10e46f2dcbf4 1970-01-16 01:06 +0000 person
46 no user, no domain
48 no user, no domain
47
49
48 2 97054abb4ab8 1970-01-14 21:20 +0000 other
50 2 97054abb4ab8 1970-01-14 21:20 +0000 other
49 no person
51 no person
50
52
51 1 b608e9d1a3f0 1970-01-13 17:33 +0000 other
53 1 b608e9d1a3f0 1970-01-13 17:33 +0000 other
52 other 1
54 other 1
53
55
54 0 1e4e1b8f71e0 1970-01-12 13:46 +0000 user
56 0 1e4e1b8f71e0 1970-01-12 13:46 +0000 user
55 line 1
57 line 1
56
58
57 7[tip]:-1,-1 29114dbae42b 1970-01-12 13:46 +0000 user
59 7[tip]:-1,-1 29114dbae42b 1970-01-12 13:46 +0000 user
58 second
60 second
59
61
60 6:5,4 c7b487c6c50e 1970-01-18 08:40 +0000 person
62 6:5,4 c7b487c6c50e 1970-01-18 08:40 +0000 person
61 merge
63 merge
62
64
63 5:3,-1 13207e5a10d9 1970-01-18 08:40 +0000 person
65 5:3,-1 13207e5a10d9 1970-01-18 08:40 +0000 person
64 new head
66 new head
65
67
66 4:3,-1 32a18f097fcc 1970-01-17 04:53 +0000 person
68 4:3,-1 32a18f097fcc 1970-01-17 04:53 +0000 person
67 new branch
69 new branch
68
70
69 3:2,-1 10e46f2dcbf4 1970-01-16 01:06 +0000 person
71 3:2,-1 10e46f2dcbf4 1970-01-16 01:06 +0000 person
70 no user, no domain
72 no user, no domain
71
73
72 2:1,-1 97054abb4ab8 1970-01-14 21:20 +0000 other
74 2:1,-1 97054abb4ab8 1970-01-14 21:20 +0000 other
73 no person
75 no person
74
76
75 1:0,-1 b608e9d1a3f0 1970-01-13 17:33 +0000 other
77 1:0,-1 b608e9d1a3f0 1970-01-13 17:33 +0000 other
76 other 1
78 other 1
77
79
78 0:-1,-1 1e4e1b8f71e0 1970-01-12 13:46 +0000 user
80 0:-1,-1 1e4e1b8f71e0 1970-01-12 13:46 +0000 user
79 line 1
81 line 1
80
82
81 # error if style not readable
83 # error if style not readable
82 abort: Permission denied: ./q
84 abort: Permission denied: ./q
83 # error if no style
85 # error if no style
84 abort: No such file or directory: notexist
86 abort: No such file or directory: notexist
85 # error if style missing key
87 # error if style missing key
86 abort: ./t: no key named 'changeset'
88 abort: ./t: no key named 'changeset'
87 # error if include fails
89 # error if include fails
88 abort: template file ./q: Permission denied
90 abort: template file ./q: Permission denied
89 # include works
91 # include works
90 7
92 7
91 6
93 6
92 5
94 5
93 4
95 4
94 3
96 3
95 2
97 2
96 1
98 1
97 0
99 0
98 # ui.style works
100 # ui.style works
99 7
101 7
100 6
102 6
101 5
103 5
102 4
104 4
103 3
105 3
104 2
106 2
105 1
107 1
106 0
108 0
107 # issue338
109 # issue338
108 1970-01-12 User Name <user@hostname>
110 1970-01-12 User Name <user@hostname>
109
111
110 * second:
112 * second:
111 second
113 second
112 [29114dbae42b] [tip]
114 [29114dbae42b] [tip]
113
115
114 1970-01-18 person <person>
116 1970-01-18 person <person>
115
117
116 * merge
118 * merge
117 [c7b487c6c50e]
119 [c7b487c6c50e]
118
120
119 * d:
121 * d:
120 new head
122 new head
121 [13207e5a10d9]
123 [13207e5a10d9]
122
124
123 1970-01-17 person <person>
125 1970-01-17 person <person>
124
126
125 * new branch
127 * new branch
126 [32a18f097fcc]
128 [32a18f097fcc]
127
129
128 1970-01-16 person <person>
130 1970-01-16 person <person>
129
131
130 * c:
132 * c:
131 no user, no domain
133 no user, no domain
132 [10e46f2dcbf4]
134 [10e46f2dcbf4]
133
135
134 1970-01-14 other <other@place>
136 1970-01-14 other <other@place>
135
137
136 * c:
138 * c:
137 no person
139 no person
138 [97054abb4ab8]
140 [97054abb4ab8]
139
141
140 1970-01-13 A. N. Other <other@place>
142 1970-01-13 A. N. Other <other@place>
141
143
142 * b:
144 * b:
143 other 1 other 2
145 other 1 other 2
144
146
145 other 3
147 other 3
146 [b608e9d1a3f0]
148 [b608e9d1a3f0]
147
149
148 1970-01-12 User Name <user@hostname>
150 1970-01-12 User Name <user@hostname>
149
151
150 * a:
152 * a:
151 line 1 line 2
153 line 1 line 2
152 [1e4e1b8f71e0]
154 [1e4e1b8f71e0]
153
155
154 # keys work
156 # keys work
155 author: User Name <user@hostname>
157 author: User Name <user@hostname>
156 author: person
158 author: person
157 author: person
159 author: person
158 author: person
160 author: person
159 author: person
161 author: person
160 author: other@place
162 author: other@place
161 author: A. N. Other <other@place>
163 author: A. N. Other <other@place>
162 author: User Name <user@hostname>
164 author: User Name <user@hostname>
163 author--verbose: User Name <user@hostname>
165 author--verbose: User Name <user@hostname>
164 author--verbose: person
166 author--verbose: person
165 author--verbose: person
167 author--verbose: person
166 author--verbose: person
168 author--verbose: person
167 author--verbose: person
169 author--verbose: person
168 author--verbose: other@place
170 author--verbose: other@place
169 author--verbose: A. N. Other <other@place>
171 author--verbose: A. N. Other <other@place>
170 author--verbose: User Name <user@hostname>
172 author--verbose: User Name <user@hostname>
171 author--debug: User Name <user@hostname>
173 author--debug: User Name <user@hostname>
172 author--debug: person
174 author--debug: person
173 author--debug: person
175 author--debug: person
174 author--debug: person
176 author--debug: person
175 author--debug: person
177 author--debug: person
176 author--debug: other@place
178 author--debug: other@place
177 author--debug: A. N. Other <other@place>
179 author--debug: A. N. Other <other@place>
178 author--debug: User Name <user@hostname>
180 author--debug: User Name <user@hostname>
179 branches:
181 branches:
180 branches:
182 branches:
181 branches:
183 branches:
182 branches: foo
184 branches: foo
183 branches:
185 branches:
184 branches:
186 branches:
185 branches:
187 branches:
186 branches:
188 branches:
187 branches--verbose:
189 branches--verbose:
188 branches--verbose:
190 branches--verbose:
189 branches--verbose:
191 branches--verbose:
190 branches--verbose: foo
192 branches--verbose: foo
191 branches--verbose:
193 branches--verbose:
192 branches--verbose:
194 branches--verbose:
193 branches--verbose:
195 branches--verbose:
194 branches--verbose:
196 branches--verbose:
195 branches--debug:
197 branches--debug:
196 branches--debug:
198 branches--debug:
197 branches--debug:
199 branches--debug:
198 branches--debug: foo
200 branches--debug: foo
199 branches--debug:
201 branches--debug:
200 branches--debug:
202 branches--debug:
201 branches--debug:
203 branches--debug:
202 branches--debug:
204 branches--debug:
203 date: 1000000.00
205 date: 1000000.00
204 date: 1500001.00
206 date: 1500001.00
205 date: 1500000.00
207 date: 1500000.00
206 date: 1400000.00
208 date: 1400000.00
207 date: 1300000.00
209 date: 1300000.00
208 date: 1200000.00
210 date: 1200000.00
209 date: 1100000.00
211 date: 1100000.00
210 date: 1000000.00
212 date: 1000000.00
211 date--verbose: 1000000.00
213 date--verbose: 1000000.00
212 date--verbose: 1500001.00
214 date--verbose: 1500001.00
213 date--verbose: 1500000.00
215 date--verbose: 1500000.00
214 date--verbose: 1400000.00
216 date--verbose: 1400000.00
215 date--verbose: 1300000.00
217 date--verbose: 1300000.00
216 date--verbose: 1200000.00
218 date--verbose: 1200000.00
217 date--verbose: 1100000.00
219 date--verbose: 1100000.00
218 date--verbose: 1000000.00
220 date--verbose: 1000000.00
219 date--debug: 1000000.00
221 date--debug: 1000000.00
220 date--debug: 1500001.00
222 date--debug: 1500001.00
221 date--debug: 1500000.00
223 date--debug: 1500000.00
222 date--debug: 1400000.00
224 date--debug: 1400000.00
223 date--debug: 1300000.00
225 date--debug: 1300000.00
224 date--debug: 1200000.00
226 date--debug: 1200000.00
225 date--debug: 1100000.00
227 date--debug: 1100000.00
226 date--debug: 1000000.00
228 date--debug: 1000000.00
227 desc: second
229 desc: second
228 desc: merge
230 desc: merge
229 desc: new head
231 desc: new head
230 desc: new branch
232 desc: new branch
231 desc: no user, no domain
233 desc: no user, no domain
232 desc: no person
234 desc: no person
233 desc: other 1
235 desc: other 1
234 other 2
236 other 2
235
237
236 other 3
238 other 3
237 desc: line 1
239 desc: line 1
238 line 2
240 line 2
239 desc--verbose: second
241 desc--verbose: second
240 desc--verbose: merge
242 desc--verbose: merge
241 desc--verbose: new head
243 desc--verbose: new head
242 desc--verbose: new branch
244 desc--verbose: new branch
243 desc--verbose: no user, no domain
245 desc--verbose: no user, no domain
244 desc--verbose: no person
246 desc--verbose: no person
245 desc--verbose: other 1
247 desc--verbose: other 1
246 other 2
248 other 2
247
249
248 other 3
250 other 3
249 desc--verbose: line 1
251 desc--verbose: line 1
250 line 2
252 line 2
251 desc--debug: second
253 desc--debug: second
252 desc--debug: merge
254 desc--debug: merge
253 desc--debug: new head
255 desc--debug: new head
254 desc--debug: new branch
256 desc--debug: new branch
255 desc--debug: no user, no domain
257 desc--debug: no user, no domain
256 desc--debug: no person
258 desc--debug: no person
257 desc--debug: other 1
259 desc--debug: other 1
258 other 2
260 other 2
259
261
260 other 3
262 other 3
261 desc--debug: line 1
263 desc--debug: line 1
262 line 2
264 line 2
263 file_adds: second
265 file_adds: second
264 file_adds:
266 file_adds:
265 file_adds: d
267 file_adds: d
266 file_adds:
268 file_adds:
267 file_adds:
269 file_adds:
268 file_adds: c
270 file_adds: c
269 file_adds: b
271 file_adds: b
270 file_adds: a
272 file_adds: a
271 file_adds--verbose: second
273 file_adds--verbose: second
272 file_adds--verbose:
274 file_adds--verbose:
273 file_adds--verbose: d
275 file_adds--verbose: d
274 file_adds--verbose:
276 file_adds--verbose:
275 file_adds--verbose:
277 file_adds--verbose:
276 file_adds--verbose: c
278 file_adds--verbose: c
277 file_adds--verbose: b
279 file_adds--verbose: b
278 file_adds--verbose: a
280 file_adds--verbose: a
279 file_adds--debug: second
281 file_adds--debug: second
280 file_adds--debug:
282 file_adds--debug:
281 file_adds--debug: d
283 file_adds--debug: d
282 file_adds--debug:
284 file_adds--debug:
283 file_adds--debug:
285 file_adds--debug:
284 file_adds--debug: c
286 file_adds--debug: c
285 file_adds--debug: b
287 file_adds--debug: b
286 file_adds--debug: a
288 file_adds--debug: a
287 file_dels:
289 file_dels:
288 file_dels:
290 file_dels:
289 file_dels:
291 file_dels:
290 file_dels:
292 file_dels:
291 file_dels:
293 file_dels:
292 file_dels:
294 file_dels:
293 file_dels:
295 file_dels:
294 file_dels:
296 file_dels:
295 file_dels--verbose:
297 file_dels--verbose:
296 file_dels--verbose:
298 file_dels--verbose:
297 file_dels--verbose:
299 file_dels--verbose:
298 file_dels--verbose:
300 file_dels--verbose:
299 file_dels--verbose:
301 file_dels--verbose:
300 file_dels--verbose:
302 file_dels--verbose:
301 file_dels--verbose:
303 file_dels--verbose:
302 file_dels--verbose:
304 file_dels--verbose:
303 file_dels--debug:
305 file_dels--debug:
304 file_dels--debug:
306 file_dels--debug:
305 file_dels--debug:
307 file_dels--debug:
306 file_dels--debug:
308 file_dels--debug:
307 file_dels--debug:
309 file_dels--debug:
308 file_dels--debug:
310 file_dels--debug:
309 file_dels--debug:
311 file_dels--debug:
310 file_dels--debug:
312 file_dels--debug:
311 file_mods:
313 file_mods:
312 file_mods:
314 file_mods:
313 file_mods:
315 file_mods:
314 file_mods:
316 file_mods:
315 file_mods: c
317 file_mods: c
316 file_mods:
318 file_mods:
317 file_mods:
319 file_mods:
318 file_mods:
320 file_mods:
319 file_mods--verbose:
321 file_mods--verbose:
320 file_mods--verbose:
322 file_mods--verbose:
321 file_mods--verbose:
323 file_mods--verbose:
322 file_mods--verbose:
324 file_mods--verbose:
323 file_mods--verbose: c
325 file_mods--verbose: c
324 file_mods--verbose:
326 file_mods--verbose:
325 file_mods--verbose:
327 file_mods--verbose:
326 file_mods--verbose:
328 file_mods--verbose:
327 file_mods--debug:
329 file_mods--debug:
328 file_mods--debug:
330 file_mods--debug:
329 file_mods--debug:
331 file_mods--debug:
330 file_mods--debug:
332 file_mods--debug:
331 file_mods--debug: c
333 file_mods--debug: c
332 file_mods--debug:
334 file_mods--debug:
333 file_mods--debug:
335 file_mods--debug:
334 file_mods--debug:
336 file_mods--debug:
335 files: second
337 files: second
336 files:
338 files:
337 files: d
339 files: d
338 files:
340 files:
339 files: c
341 files: c
340 files: c
342 files: c
341 files: b
343 files: b
342 files: a
344 files: a
343 files--verbose: second
345 files--verbose: second
344 files--verbose:
346 files--verbose:
345 files--verbose: d
347 files--verbose: d
346 files--verbose:
348 files--verbose:
347 files--verbose: c
349 files--verbose: c
348 files--verbose: c
350 files--verbose: c
349 files--verbose: b
351 files--verbose: b
350 files--verbose: a
352 files--verbose: a
351 files--debug: second
353 files--debug: second
352 files--debug:
354 files--debug:
353 files--debug: d
355 files--debug: d
354 files--debug:
356 files--debug:
355 files--debug: c
357 files--debug: c
356 files--debug: c
358 files--debug: c
357 files--debug: b
359 files--debug: b
358 files--debug: a
360 files--debug: a
359 manifest: 7:f2dbc354b94e
361 manifest: 7:f2dbc354b94e
360 manifest: 6:91015e9dbdd7
362 manifest: 6:91015e9dbdd7
361 manifest: 5:4dc3def4f9b4
363 manifest: 5:4dc3def4f9b4
362 manifest: 4:90ae8dda64e1
364 manifest: 4:90ae8dda64e1
363 manifest: 3:cb5a1327723b
365 manifest: 3:cb5a1327723b
364 manifest: 2:6e0e82995c35
366 manifest: 2:6e0e82995c35
365 manifest: 1:4e8d705b1e53
367 manifest: 1:4e8d705b1e53
366 manifest: 0:a0c8bcbbb45c
368 manifest: 0:a0c8bcbbb45c
367 manifest--verbose: 7:f2dbc354b94e
369 manifest--verbose: 7:f2dbc354b94e
368 manifest--verbose: 6:91015e9dbdd7
370 manifest--verbose: 6:91015e9dbdd7
369 manifest--verbose: 5:4dc3def4f9b4
371 manifest--verbose: 5:4dc3def4f9b4
370 manifest--verbose: 4:90ae8dda64e1
372 manifest--verbose: 4:90ae8dda64e1
371 manifest--verbose: 3:cb5a1327723b
373 manifest--verbose: 3:cb5a1327723b
372 manifest--verbose: 2:6e0e82995c35
374 manifest--verbose: 2:6e0e82995c35
373 manifest--verbose: 1:4e8d705b1e53
375 manifest--verbose: 1:4e8d705b1e53
374 manifest--verbose: 0:a0c8bcbbb45c
376 manifest--verbose: 0:a0c8bcbbb45c
375 manifest--debug: 7:f2dbc354b94e5ec0b4f10680ee0cee816101d0bf
377 manifest--debug: 7:f2dbc354b94e5ec0b4f10680ee0cee816101d0bf
376 manifest--debug: 6:91015e9dbdd76a6791085d12b0a0ec7fcd22ffbf
378 manifest--debug: 6:91015e9dbdd76a6791085d12b0a0ec7fcd22ffbf
377 manifest--debug: 5:4dc3def4f9b4c6e8de820f6ee74737f91e96a216
379 manifest--debug: 5:4dc3def4f9b4c6e8de820f6ee74737f91e96a216
378 manifest--debug: 4:90ae8dda64e1a876c792bccb9af66284f6018363
380 manifest--debug: 4:90ae8dda64e1a876c792bccb9af66284f6018363
379 manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc
381 manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc
380 manifest--debug: 2:6e0e82995c35d0d57a52aca8da4e56139e06b4b1
382 manifest--debug: 2:6e0e82995c35d0d57a52aca8da4e56139e06b4b1
381 manifest--debug: 1:4e8d705b1e53e3f9375e0e60dc7b525d8211fe55
383 manifest--debug: 1:4e8d705b1e53e3f9375e0e60dc7b525d8211fe55
382 manifest--debug: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0
384 manifest--debug: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0
383 node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
385 node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
384 node: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
386 node: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
385 node: 13207e5a10d9fd28ec424934298e176197f2c67f
387 node: 13207e5a10d9fd28ec424934298e176197f2c67f
386 node: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
388 node: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
387 node: 10e46f2dcbf4823578cf180f33ecf0b957964c47
389 node: 10e46f2dcbf4823578cf180f33ecf0b957964c47
388 node: 97054abb4ab824450e9164180baf491ae0078465
390 node: 97054abb4ab824450e9164180baf491ae0078465
389 node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
391 node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
390 node: 1e4e1b8f71e05681d422154f5421e385fec3454f
392 node: 1e4e1b8f71e05681d422154f5421e385fec3454f
391 node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
393 node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
392 node--verbose: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
394 node--verbose: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
393 node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f
395 node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f
394 node--verbose: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
396 node--verbose: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
395 node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47
397 node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47
396 node--verbose: 97054abb4ab824450e9164180baf491ae0078465
398 node--verbose: 97054abb4ab824450e9164180baf491ae0078465
397 node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
399 node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
398 node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f
400 node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f
399 node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
401 node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
400 node--debug: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
402 node--debug: c7b487c6c50ef1cf464cafdc4f4f5e615fc5999f
401 node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f
403 node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f
402 node--debug: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
404 node--debug: 32a18f097fcccf76ef282f62f8a85b3adf8d13c4
403 node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47
405 node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47
404 node--debug: 97054abb4ab824450e9164180baf491ae0078465
406 node--debug: 97054abb4ab824450e9164180baf491ae0078465
405 node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
407 node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
406 node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f
408 node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f
407 parents: -1:000000000000
409 parents: -1:000000000000
408 parents: 5:13207e5a10d9 4:32a18f097fcc
410 parents: 5:13207e5a10d9 4:32a18f097fcc
409 parents: 3:10e46f2dcbf4
411 parents: 3:10e46f2dcbf4
410 parents:
412 parents:
411 parents:
413 parents:
412 parents:
414 parents:
413 parents:
415 parents:
414 parents:
416 parents:
415 parents--verbose: -1:000000000000
417 parents--verbose: -1:000000000000
416 parents--verbose: 5:13207e5a10d9 4:32a18f097fcc
418 parents--verbose: 5:13207e5a10d9 4:32a18f097fcc
417 parents--verbose: 3:10e46f2dcbf4
419 parents--verbose: 3:10e46f2dcbf4
418 parents--verbose:
420 parents--verbose:
419 parents--verbose:
421 parents--verbose:
420 parents--verbose:
422 parents--verbose:
421 parents--verbose:
423 parents--verbose:
422 parents--verbose:
424 parents--verbose:
423 parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000
425 parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000
424 parents--debug: 5:13207e5a10d9fd28ec424934298e176197f2c67f 4:32a18f097fcccf76ef282f62f8a85b3adf8d13c4
426 parents--debug: 5:13207e5a10d9fd28ec424934298e176197f2c67f 4:32a18f097fcccf76ef282f62f8a85b3adf8d13c4
425 parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000
427 parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000
426 parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000
428 parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000
427 parents--debug: 2:97054abb4ab824450e9164180baf491ae0078465 -1:0000000000000000000000000000000000000000
429 parents--debug: 2:97054abb4ab824450e9164180baf491ae0078465 -1:0000000000000000000000000000000000000000
428 parents--debug: 1:b608e9d1a3f0273ccf70fb85fd6866b3482bf965 -1:0000000000000000000000000000000000000000
430 parents--debug: 1:b608e9d1a3f0273ccf70fb85fd6866b3482bf965 -1:0000000000000000000000000000000000000000
429 parents--debug: 0:1e4e1b8f71e05681d422154f5421e385fec3454f -1:0000000000000000000000000000000000000000
431 parents--debug: 0:1e4e1b8f71e05681d422154f5421e385fec3454f -1:0000000000000000000000000000000000000000
430 parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000
432 parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000
431 rev: 7
433 rev: 7
432 rev: 6
434 rev: 6
433 rev: 5
435 rev: 5
434 rev: 4
436 rev: 4
435 rev: 3
437 rev: 3
436 rev: 2
438 rev: 2
437 rev: 1
439 rev: 1
438 rev: 0
440 rev: 0
439 rev--verbose: 7
441 rev--verbose: 7
440 rev--verbose: 6
442 rev--verbose: 6
441 rev--verbose: 5
443 rev--verbose: 5
442 rev--verbose: 4
444 rev--verbose: 4
443 rev--verbose: 3
445 rev--verbose: 3
444 rev--verbose: 2
446 rev--verbose: 2
445 rev--verbose: 1
447 rev--verbose: 1
446 rev--verbose: 0
448 rev--verbose: 0
447 rev--debug: 7
449 rev--debug: 7
448 rev--debug: 6
450 rev--debug: 6
449 rev--debug: 5
451 rev--debug: 5
450 rev--debug: 4
452 rev--debug: 4
451 rev--debug: 3
453 rev--debug: 3
452 rev--debug: 2
454 rev--debug: 2
453 rev--debug: 1
455 rev--debug: 1
454 rev--debug: 0
456 rev--debug: 0
455 tags: tip
457 tags: tip
456 tags:
458 tags:
457 tags:
459 tags:
458 tags:
460 tags:
459 tags:
461 tags:
460 tags:
462 tags:
461 tags:
463 tags:
462 tags:
464 tags:
463 tags--verbose: tip
465 tags--verbose: tip
464 tags--verbose:
466 tags--verbose:
465 tags--verbose:
467 tags--verbose:
466 tags--verbose:
468 tags--verbose:
467 tags--verbose:
469 tags--verbose:
468 tags--verbose:
470 tags--verbose:
469 tags--verbose:
471 tags--verbose:
470 tags--verbose:
472 tags--verbose:
471 tags--debug: tip
473 tags--debug: tip
472 tags--debug:
474 tags--debug:
473 tags--debug:
475 tags--debug:
474 tags--debug:
476 tags--debug:
475 tags--debug:
477 tags--debug:
476 tags--debug:
478 tags--debug:
477 tags--debug:
479 tags--debug:
478 tags--debug:
480 tags--debug:
479 # filters work
481 # filters work
480 hostname
482 hostname
481
483
482
484
483
485
484
486
485 place
487 place
486 place
488 place
487 hostname
489 hostname
488 User Name
490 User Name
489 person
491 person
490 person
492 person
491 person
493 person
492 person
494 person
493 other
495 other
494 A. N. Other
496 A. N. Other
495 User Name
497 User Name
496 user
498 user
497 person
499 person
498 person
500 person
499 person
501 person
500 person
502 person
501 other
503 other
502 other
504 other
503 user
505 user
504 Mon Jan 12 13:46:40 1970 +0000
506 Mon Jan 12 13:46:40 1970 +0000
505 Sun Jan 18 08:40:01 1970 +0000
507 Sun Jan 18 08:40:01 1970 +0000
506 Sun Jan 18 08:40:00 1970 +0000
508 Sun Jan 18 08:40:00 1970 +0000
507 Sat Jan 17 04:53:20 1970 +0000
509 Sat Jan 17 04:53:20 1970 +0000
508 Fri Jan 16 01:06:40 1970 +0000
510 Fri Jan 16 01:06:40 1970 +0000
509 Wed Jan 14 21:20:00 1970 +0000
511 Wed Jan 14 21:20:00 1970 +0000
510 Tue Jan 13 17:33:20 1970 +0000
512 Tue Jan 13 17:33:20 1970 +0000
511 Mon Jan 12 13:46:40 1970 +0000
513 Mon Jan 12 13:46:40 1970 +0000
512 1970-01-12 13:46 +0000
514 1970-01-12 13:46 +0000
513 1970-01-18 08:40 +0000
515 1970-01-18 08:40 +0000
514 1970-01-18 08:40 +0000
516 1970-01-18 08:40 +0000
515 1970-01-17 04:53 +0000
517 1970-01-17 04:53 +0000
516 1970-01-16 01:06 +0000
518 1970-01-16 01:06 +0000
517 1970-01-14 21:20 +0000
519 1970-01-14 21:20 +0000
518 1970-01-13 17:33 +0000
520 1970-01-13 17:33 +0000
519 1970-01-12 13:46 +0000
521 1970-01-12 13:46 +0000
520 1970-01-12 13:46:40 +0000
522 1970-01-12 13:46:40 +0000
521 1970-01-18 08:40:01 +0000
523 1970-01-18 08:40:01 +0000
522 1970-01-18 08:40:00 +0000
524 1970-01-18 08:40:00 +0000
523 1970-01-17 04:53:20 +0000
525 1970-01-17 04:53:20 +0000
524 1970-01-16 01:06:40 +0000
526 1970-01-16 01:06:40 +0000
525 1970-01-14 21:20:00 +0000
527 1970-01-14 21:20:00 +0000
526 1970-01-13 17:33:20 +0000
528 1970-01-13 17:33:20 +0000
527 1970-01-12 13:46:40 +0000
529 1970-01-12 13:46:40 +0000
528 Mon, 12 Jan 1970 13:46:40 +0000
530 Mon, 12 Jan 1970 13:46:40 +0000
529 Sun, 18 Jan 1970 08:40:01 +0000
531 Sun, 18 Jan 1970 08:40:01 +0000
530 Sun, 18 Jan 1970 08:40:00 +0000
532 Sun, 18 Jan 1970 08:40:00 +0000
531 Sat, 17 Jan 1970 04:53:20 +0000
533 Sat, 17 Jan 1970 04:53:20 +0000
532 Fri, 16 Jan 1970 01:06:40 +0000
534 Fri, 16 Jan 1970 01:06:40 +0000
533 Wed, 14 Jan 1970 21:20:00 +0000
535 Wed, 14 Jan 1970 21:20:00 +0000
534 Tue, 13 Jan 1970 17:33:20 +0000
536 Tue, 13 Jan 1970 17:33:20 +0000
535 Mon, 12 Jan 1970 13:46:40 +0000
537 Mon, 12 Jan 1970 13:46:40 +0000
536 second
538 second
537 merge
539 merge
538 new head
540 new head
539 new branch
541 new branch
540 no user, no domain
542 no user, no domain
541 no person
543 no person
542 other 1
544 other 1
543 line 1
545 line 1
544 29114dbae42b
546 29114dbae42b
545 c7b487c6c50e
547 c7b487c6c50e
546 13207e5a10d9
548 13207e5a10d9
547 32a18f097fcc
549 32a18f097fcc
548 10e46f2dcbf4
550 10e46f2dcbf4
549 97054abb4ab8
551 97054abb4ab8
550 b608e9d1a3f0
552 b608e9d1a3f0
551 1e4e1b8f71e0
553 1e4e1b8f71e0
552 <changeset author="User Name &lt;user@hostname&gt;"/>
554 <changeset author="User Name &lt;user@hostname&gt;"/>
553 <changeset author="person"/>
555 <changeset author="person"/>
554 <changeset author="person"/>
556 <changeset author="person"/>
555 <changeset author="person"/>
557 <changeset author="person"/>
556 <changeset author="person"/>
558 <changeset author="person"/>
557 <changeset author="other@place"/>
559 <changeset author="other@place"/>
558 <changeset author="A. N. Other &lt;other@place&gt;"/>
560 <changeset author="A. N. Other &lt;other@place&gt;"/>
559 <changeset author="User Name &lt;user@hostname&gt;"/>
561 <changeset author="User Name &lt;user@hostname&gt;"/>
560 # formatnode filter works
562 # formatnode filter works
561 # quiet
563 # quiet
562 1e4e1b8f71e0
564 1e4e1b8f71e0
563 # normal
565 # normal
564 1e4e1b8f71e0
566 1e4e1b8f71e0
565 # verbose
567 # verbose
566 1e4e1b8f71e0
568 1e4e1b8f71e0
567 # debug
569 # debug
568 1e4e1b8f71e05681d422154f5421e385fec3454f
570 1e4e1b8f71e05681d422154f5421e385fec3454f
569 # error on syntax
571 # error on syntax
570 abort: t:3: unmatched quotes
572 abort: t:3: unmatched quotes
571 # done
573 # done
@@ -1,16 +1,17 b''
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 created new head
2 merging a
3 merging a
3 warning: conflicts during merge.
4 warning: conflicts during merge.
4 merging a failed!
5 merging a failed!
5 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
6 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
6 There are unresolved merges, you can redo the full merge using:
7 There are unresolved merges, you can redo the full merge using:
7 hg update -C 2
8 hg update -C 2
8 hg merge 1
9 hg merge 1
9 e7fe8eb3e180+0d24b7662d3e+ tip
10 e7fe8eb3e180+0d24b7662d3e+ tip
10 <<<<<<< local
11 <<<<<<< local
11 something else
12 something else
12 =======
13 =======
13 something
14 something
14 >>>>>>> other
15 >>>>>>> other
15 M a
16 M a
16 ? a.orig
17 ? a.orig
@@ -1,28 +1,29 b''
1 %%% should show a removed and b added
1 %%% should show a removed and b added
2 A b
2 A b
3 R a
3 R a
4 reverting...
4 reverting...
5 undeleting a
5 undeleting a
6 forgetting b
6 forgetting b
7 %%% should show b unknown and a back to normal
7 %%% should show b unknown and a back to normal
8 ? b
8 ? b
9 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
9 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
10 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
10 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
11 created new head
11 merging a
12 merging a
12 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
13 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
13 (branch merge, don't forget to commit)
14 (branch merge, don't forget to commit)
14 %%% should show foo-b
15 %%% should show foo-b
15 foo-b
16 foo-b
16 %%% should show a removed and b added
17 %%% should show a removed and b added
17 A b
18 A b
18 R a
19 R a
19 %%% revert should fail
20 %%% revert should fail
20 abort: uncommitted merge - please provide a specific revision
21 abort: uncommitted merge - please provide a specific revision
21 %%% revert should be ok now
22 %%% revert should be ok now
22 undeleting a
23 undeleting a
23 forgetting b
24 forgetting b
24 %%% should show b unknown and a marked modified (merged)
25 %%% should show b unknown and a marked modified (merged)
25 M a
26 M a
26 ? b
27 ? b
27 %%% should show foo-b
28 %%% should show foo-b
28 foo-b
29 foo-b
@@ -1,40 +1,41 b''
1 adding a
1 adding a
2 marked working directory as branch brancha
2 marked working directory as branch brancha
3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 marked working directory as branch branchb
4 marked working directory as branch branchb
5 adding b
5 adding b
6 created new head
6 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
7 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
7 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
8 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
8 % convert with datesort
9 % convert with datesort
9 initializing destination t2 repository
10 initializing destination t2 repository
10 scanning source...
11 scanning source...
11 sorting...
12 sorting...
12 converting...
13 converting...
13 8 a0
14 8 a0
14 7 a1
15 7 a1
15 6 a2
16 6 a2
16 5 a3
17 5 a3
17 4 b0
18 4 b0
18 3 a4
19 3 a4
19 2 a5
20 2 a5
20 1 a6
21 1 a6
21 0 b1
22 0 b1
22 % graph converted repo
23 % graph converted repo
23 o 8 "b1"
24 o 8 "b1"
24 |
25 |
25 | o 7 "a6"
26 | o 7 "a6"
26 | |
27 | |
27 | o 6 "a5"
28 | o 6 "a5"
28 | |
29 | |
29 | o 5 "a4"
30 | o 5 "a4"
30 | |
31 | |
31 o | 4 "b0"
32 o | 4 "b0"
32 | |
33 | |
33 | o 3 "a3"
34 | o 3 "a3"
34 | |
35 | |
35 | o 2 "a2"
36 | o 2 "a2"
36 | |
37 | |
37 | o 1 "a1"
38 | o 1 "a1"
38 |/
39 |/
39 o 0 "a0"
40 o 0 "a0"
40
41
@@ -1,154 +1,156 b''
1 created new head
2 created new head
1 @ 8 "8: change foo" files: foo
3 @ 8 "8: change foo" files: foo
2 |
4 |
3 o 7 "7: second merge; change bar" files: bar baz
5 o 7 "7: second merge; change bar" files: bar baz
4 |\
6 |\
5 | o 6 "6: change foo baz" files: baz foo
7 | o 6 "6: change foo baz" files: baz foo
6 | |
8 | |
7 o | 5 "5: change bar baz quux" files: bar baz quux
9 o | 5 "5: change bar baz quux" files: bar baz quux
8 |/
10 |/
9 o 4 "4: first merge; change bar baz" files: bar baz
11 o 4 "4: first merge; change bar baz" files: bar baz
10 |\
12 |\
11 | o 3 "3: change bar quux" files: bar quux
13 | o 3 "3: change bar quux" files: bar quux
12 | |
14 | |
13 o | 2 "2: change foo" files: foo
15 o | 2 "2: change foo" files: foo
14 |/
16 |/
15 o 1 "1: add bar quux; copy foo to copied" files: bar copied quux
17 o 1 "1: add bar quux; copy foo to copied" files: bar copied quux
16 |
18 |
17 o 0 "0: add foo baz dir/" files: baz dir/file dir/file2 foo
19 o 0 "0: add foo baz dir/" files: baz dir/file dir/file2 foo
18
20
19 % final file versions in this repo:
21 % final file versions in this repo:
20 9463f52fe115e377cf2878d4fc548117211063f2 644 bar
22 9463f52fe115e377cf2878d4fc548117211063f2 644 bar
21 94c1be4dfde2ee8d78db8bbfcf81210813307c3d 644 baz
23 94c1be4dfde2ee8d78db8bbfcf81210813307c3d 644 baz
22 6ca237634e1f6bee1b6db94292fb44f092a25842 644 copied
24 6ca237634e1f6bee1b6db94292fb44f092a25842 644 copied
23 3e20847584beff41d7cd16136b7331ab3d754be0 644 dir/file
25 3e20847584beff41d7cd16136b7331ab3d754be0 644 dir/file
24 75e6d3f8328f5f6ace6bf10b98df793416a09dca 644 dir/file2
26 75e6d3f8328f5f6ace6bf10b98df793416a09dca 644 dir/file2
25 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
27 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
26 bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux
28 bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux
27 copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd
29 copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd
28
30
29 % foo: skip unwanted merges; use 1st parent in 1st merge, 2nd in 2nd
31 % foo: skip unwanted merges; use 1st parent in 1st merge, 2nd in 2nd
30 o 3 "8: change foo" files: foo
32 o 3 "8: change foo" files: foo
31 |
33 |
32 o 2 "6: change foo baz" files: foo
34 o 2 "6: change foo baz" files: foo
33 |
35 |
34 o 1 "2: change foo" files: foo
36 o 1 "2: change foo" files: foo
35 |
37 |
36 o 0 "0: add foo baz dir/" files: foo
38 o 0 "0: add foo baz dir/" files: foo
37
39
38 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
40 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
39 % bar: merges are not merges anymore
41 % bar: merges are not merges anymore
40 o 4 "7: second merge; change bar" files: bar
42 o 4 "7: second merge; change bar" files: bar
41 |
43 |
42 o 3 "5: change bar baz quux" files: bar
44 o 3 "5: change bar baz quux" files: bar
43 |
45 |
44 o 2 "4: first merge; change bar baz" files: bar
46 o 2 "4: first merge; change bar baz" files: bar
45 |
47 |
46 o 1 "3: change bar quux" files: bar
48 o 1 "3: change bar quux" files: bar
47 |
49 |
48 o 0 "1: add bar quux; copy foo to copied" files: bar
50 o 0 "1: add bar quux; copy foo to copied" files: bar
49
51
50 9463f52fe115e377cf2878d4fc548117211063f2 644 bar
52 9463f52fe115e377cf2878d4fc548117211063f2 644 bar
51 % baz: 1st merge is not a merge anymore; 2nd still is
53 % baz: 1st merge is not a merge anymore; 2nd still is
52 o 4 "7: second merge; change bar" files: baz
54 o 4 "7: second merge; change bar" files: baz
53 |\
55 |\
54 | o 3 "6: change foo baz" files: baz
56 | o 3 "6: change foo baz" files: baz
55 | |
57 | |
56 o | 2 "5: change bar baz quux" files: baz
58 o | 2 "5: change bar baz quux" files: baz
57 |/
59 |/
58 o 1 "4: first merge; change bar baz" files: baz
60 o 1 "4: first merge; change bar baz" files: baz
59 |
61 |
60 o 0 "0: add foo baz dir/" files: baz
62 o 0 "0: add foo baz dir/" files: baz
61
63
62 94c1be4dfde2ee8d78db8bbfcf81210813307c3d 644 baz
64 94c1be4dfde2ee8d78db8bbfcf81210813307c3d 644 baz
63 % foo quux: we add additional merges when they are interesting
65 % foo quux: we add additional merges when they are interesting
64 o 8 "8: change foo" files: foo
66 o 8 "8: change foo" files: foo
65 |
67 |
66 o 7 "7: second merge; change bar" files:
68 o 7 "7: second merge; change bar" files:
67 |\
69 |\
68 | o 6 "6: change foo baz" files: foo
70 | o 6 "6: change foo baz" files: foo
69 | |
71 | |
70 o | 5 "5: change bar baz quux" files: quux
72 o | 5 "5: change bar baz quux" files: quux
71 |/
73 |/
72 o 4 "4: first merge; change bar baz" files:
74 o 4 "4: first merge; change bar baz" files:
73 |\
75 |\
74 | o 3 "3: change bar quux" files: quux
76 | o 3 "3: change bar quux" files: quux
75 | |
77 | |
76 o | 2 "2: change foo" files: foo
78 o | 2 "2: change foo" files: foo
77 |/
79 |/
78 o 1 "1: add bar quux; copy foo to copied" files: quux
80 o 1 "1: add bar quux; copy foo to copied" files: quux
79 |
81 |
80 o 0 "0: add foo baz dir/" files: foo
82 o 0 "0: add foo baz dir/" files: foo
81
83
82 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
84 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
83 bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux
85 bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux
84 % bar quux: partial conversion
86 % bar quux: partial conversion
85 o 1 "3: change bar quux" files: bar quux
87 o 1 "3: change bar quux" files: bar quux
86 |
88 |
87 o 0 "1: add bar quux; copy foo to copied" files: bar quux
89 o 0 "1: add bar quux; copy foo to copied" files: bar quux
88
90
89 b79105bedc55102f394e90a789c9c380117c1b4a 644 bar
91 b79105bedc55102f394e90a789c9c380117c1b4a 644 bar
90 db0421cc6b685a458c8d86c7d5c004f94429ea23 644 quux
92 db0421cc6b685a458c8d86c7d5c004f94429ea23 644 quux
91 % bar quux: complete the partial conversion
93 % bar quux: complete the partial conversion
92 o 4 "7: second merge; change bar" files: bar
94 o 4 "7: second merge; change bar" files: bar
93 |
95 |
94 o 3 "5: change bar baz quux" files: bar quux
96 o 3 "5: change bar baz quux" files: bar quux
95 |
97 |
96 o 2 "4: first merge; change bar baz" files: bar
98 o 2 "4: first merge; change bar baz" files: bar
97 |
99 |
98 o 1 "3: change bar quux" files: bar quux
100 o 1 "3: change bar quux" files: bar quux
99 |
101 |
100 o 0 "1: add bar quux; copy foo to copied" files: bar quux
102 o 0 "1: add bar quux; copy foo to copied" files: bar quux
101
103
102 9463f52fe115e377cf2878d4fc548117211063f2 644 bar
104 9463f52fe115e377cf2878d4fc548117211063f2 644 bar
103 bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux
105 bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux
104 % foo: partial conversion
106 % foo: partial conversion
105 o 0 "0: add foo baz dir/" files: foo
107 o 0 "0: add foo baz dir/" files: foo
106
108
107 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 foo
109 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 foo
108 % foo: complete the partial conversion
110 % foo: complete the partial conversion
109 o 3 "8: change foo" files: foo
111 o 3 "8: change foo" files: foo
110 |
112 |
111 o 2 "6: change foo baz" files: foo
113 o 2 "6: change foo baz" files: foo
112 |
114 |
113 o 1 "2: change foo" files: foo
115 o 1 "2: change foo" files: foo
114 |
116 |
115 o 0 "0: add foo baz dir/" files: foo
117 o 0 "0: add foo baz dir/" files: foo
116
118
117 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
119 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
118 % copied: copied file; source not included in new repo
120 % copied: copied file; source not included in new repo
119 o 0 "1: add bar quux; copy foo to copied" files: copied
121 o 0 "1: add bar quux; copy foo to copied" files: copied
120
122
121 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 copied
123 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 copied
122 copied not renamed
124 copied not renamed
123 % foo copied: copied file; source included in new repo
125 % foo copied: copied file; source included in new repo
124 o 4 "8: change foo" files: foo
126 o 4 "8: change foo" files: foo
125 |
127 |
126 o 3 "6: change foo baz" files: foo
128 o 3 "6: change foo baz" files: foo
127 |
129 |
128 o 2 "2: change foo" files: foo
130 o 2 "2: change foo" files: foo
129 |
131 |
130 o 1 "1: add bar quux; copy foo to copied" files: copied
132 o 1 "1: add bar quux; copy foo to copied" files: copied
131 |
133 |
132 o 0 "0: add foo baz dir/" files: foo
134 o 0 "0: add foo baz dir/" files: foo
133
135
134 6ca237634e1f6bee1b6db94292fb44f092a25842 644 copied
136 6ca237634e1f6bee1b6db94292fb44f092a25842 644 copied
135 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
137 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
136 copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd
138 copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd
137 o 4 "8: change foo" files: foo2
139 o 4 "8: change foo" files: foo2
138 |
140 |
139 o 3 "6: change foo baz" files: foo2
141 o 3 "6: change foo baz" files: foo2
140 |
142 |
141 o 2 "2: change foo" files: foo2
143 o 2 "2: change foo" files: foo2
142 |
144 |
143 o 1 "1: add bar quux; copy foo to copied" files: copied2
145 o 1 "1: add bar quux; copy foo to copied" files: copied2
144 |
146 |
145 o 0 "0: add foo baz dir/" files: dir2/file foo2
147 o 0 "0: add foo baz dir/" files: dir2/file foo2
146
148
147 e5e3d520be9be45937d0b06b004fadcd6c221fa2 644 copied2
149 e5e3d520be9be45937d0b06b004fadcd6c221fa2 644 copied2
148 3e20847584beff41d7cd16136b7331ab3d754be0 644 dir2/file
150 3e20847584beff41d7cd16136b7331ab3d754be0 644 dir2/file
149 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo2
151 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo2
150 copied2 renamed from foo2:2ed2a3912a0b24502043eae84ee4b279c18b90dd
152 copied2 renamed from foo2:2ed2a3912a0b24502043eae84ee4b279c18b90dd
151 copied:
153 copied:
152 foo
154 foo
153 copied2:
155 copied2:
154 foo
156 foo
@@ -1,20 +1,22 b''
1 created new head
1 merging baz and foo
2 merging baz and foo
2 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
3 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
3 (branch merge, don't forget to commit)
4 (branch merge, don't forget to commit)
4 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
5 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
5 merging foo and baz
6 merging foo and baz
6 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
7 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
7 (branch merge, don't forget to commit)
8 (branch merge, don't forget to commit)
9 created new head
8 initializing destination new repository
10 initializing destination new repository
9 scanning source...
11 scanning source...
10 sorting...
12 sorting...
11 converting...
13 converting...
12 5 add foo bar
14 5 add foo bar
13 4 change foo
15 4 change foo
14 3 make bar and baz copies of foo
16 3 make bar and baz copies of foo
15 2 merge local copy
17 2 merge local copy
16 1 merge remote copy
18 1 merge remote copy
17 0 mark baz executable
19 0 mark baz executable
18 comparing with ../orig
20 comparing with ../orig
19 searching for changes
21 searching for changes
20 no changes found
22 no changes found
@@ -1,338 +1,339 b''
1 % add
1 % add
2 adding a
2 adding a
3 adding d1/d2/b
3 adding d1/d2/b
4 % modify
4 % modify
5 1:e0e2b8a9156b
5 1:e0e2b8a9156b
6 assuming destination a-hg
6 assuming destination a-hg
7 initializing svn repo 'a-hg'
7 initializing svn repo 'a-hg'
8 initializing svn wc 'a-hg-wc'
8 initializing svn wc 'a-hg-wc'
9 scanning source...
9 scanning source...
10 sorting...
10 sorting...
11 converting...
11 converting...
12 1 add a file
12 1 add a file
13 0 modify a file
13 0 modify a file
14 At revision 2.
14 At revision 2.
15 2 2 test .
15 2 2 test .
16 2 2 test a
16 2 2 test a
17 2 1 test d1
17 2 1 test d1
18 2 1 test d1/d2
18 2 1 test d1/d2
19 2 1 test d1/d2/b
19 2 1 test d1/d2/b
20 <?xml version="1.0"?>
20 <?xml version="1.0"?>
21 <log>
21 <log>
22 <logentry
22 <logentry
23 revision="2">
23 revision="2">
24 <author>test</author>
24 <author>test</author>
25 <date/>
25 <date/>
26 <paths>
26 <paths>
27 <path
27 <path
28 action="M">/a</path>
28 action="M">/a</path>
29 </paths>
29 </paths>
30 <msg>modify a file</msg>
30 <msg>modify a file</msg>
31 </logentry>
31 </logentry>
32 <logentry
32 <logentry
33 revision="1">
33 revision="1">
34 <author>test</author>
34 <author>test</author>
35 <date/>
35 <date/>
36 <paths>
36 <paths>
37 <path
37 <path
38 action="A">/a</path>
38 action="A">/a</path>
39 <path
39 <path
40 action="A">/d1</path>
40 action="A">/d1</path>
41 <path
41 <path
42 action="A">/d1/d2</path>
42 action="A">/d1/d2</path>
43 <path
43 <path
44 action="A">/d1/d2/b</path>
44 action="A">/d1/d2/b</path>
45 </paths>
45 </paths>
46 <msg>add a file</msg>
46 <msg>add a file</msg>
47 </logentry>
47 </logentry>
48 </log>
48 </log>
49 a:
49 a:
50 a
50 a
51 d1
51 d1
52
52
53 a-hg-wc:
53 a-hg-wc:
54 a
54 a
55 d1
55 d1
56 same
56 same
57 % rename
57 % rename
58 2:7009fc4efb34
58 2:7009fc4efb34
59 assuming destination a-hg
59 assuming destination a-hg
60 initializing svn wc 'a-hg-wc'
60 initializing svn wc 'a-hg-wc'
61 scanning source...
61 scanning source...
62 sorting...
62 sorting...
63 converting...
63 converting...
64 0 rename a file
64 0 rename a file
65 At revision 3.
65 At revision 3.
66 3 3 test .
66 3 3 test .
67 3 3 test b
67 3 3 test b
68 3 1 test d1
68 3 1 test d1
69 3 1 test d1/d2
69 3 1 test d1/d2
70 3 1 test d1/d2/b
70 3 1 test d1/d2/b
71 <?xml version="1.0"?>
71 <?xml version="1.0"?>
72 <log>
72 <log>
73 <logentry
73 <logentry
74 revision="3">
74 revision="3">
75 <author>test</author>
75 <author>test</author>
76 <date/>
76 <date/>
77 <paths>
77 <paths>
78 <path
78 <path
79 action="D">/a</path>
79 action="D">/a</path>
80 <path
80 <path
81 copyfrom-path="/a"
81 copyfrom-path="/a"
82 copyfrom-rev="2"
82 copyfrom-rev="2"
83 action="A">/b</path>
83 action="A">/b</path>
84 </paths>
84 </paths>
85 <msg>rename a file</msg>
85 <msg>rename a file</msg>
86 </logentry>
86 </logentry>
87 </log>
87 </log>
88 a:
88 a:
89 b
89 b
90 d1
90 d1
91
91
92 a-hg-wc:
92 a-hg-wc:
93 b
93 b
94 d1
94 d1
95 % copy
95 % copy
96 3:56c519973ce6
96 3:56c519973ce6
97 assuming destination a-hg
97 assuming destination a-hg
98 initializing svn wc 'a-hg-wc'
98 initializing svn wc 'a-hg-wc'
99 scanning source...
99 scanning source...
100 sorting...
100 sorting...
101 converting...
101 converting...
102 0 copy a file
102 0 copy a file
103 At revision 4.
103 At revision 4.
104 4 4 test .
104 4 4 test .
105 4 3 test b
105 4 3 test b
106 4 4 test c
106 4 4 test c
107 4 1 test d1
107 4 1 test d1
108 4 1 test d1/d2
108 4 1 test d1/d2
109 4 1 test d1/d2/b
109 4 1 test d1/d2/b
110 <?xml version="1.0"?>
110 <?xml version="1.0"?>
111 <log>
111 <log>
112 <logentry
112 <logentry
113 revision="4">
113 revision="4">
114 <author>test</author>
114 <author>test</author>
115 <date/>
115 <date/>
116 <paths>
116 <paths>
117 <path
117 <path
118 copyfrom-path="/b"
118 copyfrom-path="/b"
119 copyfrom-rev="3"
119 copyfrom-rev="3"
120 action="A">/c</path>
120 action="A">/c</path>
121 </paths>
121 </paths>
122 <msg>copy a file</msg>
122 <msg>copy a file</msg>
123 </logentry>
123 </logentry>
124 </log>
124 </log>
125 a:
125 a:
126 b
126 b
127 c
127 c
128 d1
128 d1
129
129
130 a-hg-wc:
130 a-hg-wc:
131 b
131 b
132 c
132 c
133 d1
133 d1
134 % remove
134 % remove
135 4:ed4dc9a6f585
135 4:ed4dc9a6f585
136 assuming destination a-hg
136 assuming destination a-hg
137 initializing svn wc 'a-hg-wc'
137 initializing svn wc 'a-hg-wc'
138 scanning source...
138 scanning source...
139 sorting...
139 sorting...
140 converting...
140 converting...
141 0 remove a file
141 0 remove a file
142 At revision 5.
142 At revision 5.
143 5 5 test .
143 5 5 test .
144 5 4 test c
144 5 4 test c
145 5 1 test d1
145 5 1 test d1
146 5 1 test d1/d2
146 5 1 test d1/d2
147 5 1 test d1/d2/b
147 5 1 test d1/d2/b
148 <?xml version="1.0"?>
148 <?xml version="1.0"?>
149 <log>
149 <log>
150 <logentry
150 <logentry
151 revision="5">
151 revision="5">
152 <author>test</author>
152 <author>test</author>
153 <date/>
153 <date/>
154 <paths>
154 <paths>
155 <path
155 <path
156 action="D">/b</path>
156 action="D">/b</path>
157 </paths>
157 </paths>
158 <msg>remove a file</msg>
158 <msg>remove a file</msg>
159 </logentry>
159 </logentry>
160 </log>
160 </log>
161 a:
161 a:
162 c
162 c
163 d1
163 d1
164
164
165 a-hg-wc:
165 a-hg-wc:
166 c
166 c
167 d1
167 d1
168 % executable
168 % executable
169 5:f205b3636d77
169 5:f205b3636d77
170 assuming destination a-hg
170 assuming destination a-hg
171 initializing svn wc 'a-hg-wc'
171 initializing svn wc 'a-hg-wc'
172 scanning source...
172 scanning source...
173 sorting...
173 sorting...
174 converting...
174 converting...
175 0 make a file executable
175 0 make a file executable
176 At revision 6.
176 At revision 6.
177 6 6 test .
177 6 6 test .
178 6 6 test c
178 6 6 test c
179 6 1 test d1
179 6 1 test d1
180 6 1 test d1/d2
180 6 1 test d1/d2
181 6 1 test d1/d2/b
181 6 1 test d1/d2/b
182 <?xml version="1.0"?>
182 <?xml version="1.0"?>
183 <log>
183 <log>
184 <logentry
184 <logentry
185 revision="6">
185 revision="6">
186 <author>test</author>
186 <author>test</author>
187 <date/>
187 <date/>
188 <paths>
188 <paths>
189 <path
189 <path
190 action="M">/c</path>
190 action="M">/c</path>
191 </paths>
191 </paths>
192 <msg>make a file executable</msg>
192 <msg>make a file executable</msg>
193 </logentry>
193 </logentry>
194 </log>
194 </log>
195 executable
195 executable
196 % executable in new directory
196 % executable in new directory
197 adding d1/a
197 adding d1/a
198 assuming destination a-hg
198 assuming destination a-hg
199 initializing svn repo 'a-hg'
199 initializing svn repo 'a-hg'
200 initializing svn wc 'a-hg-wc'
200 initializing svn wc 'a-hg-wc'
201 scanning source...
201 scanning source...
202 sorting...
202 sorting...
203 converting...
203 converting...
204 0 add executable file in new directory
204 0 add executable file in new directory
205 At revision 1.
205 At revision 1.
206 1 1 test .
206 1 1 test .
207 1 1 test d1
207 1 1 test d1
208 1 1 test d1/a
208 1 1 test d1/a
209 <?xml version="1.0"?>
209 <?xml version="1.0"?>
210 <log>
210 <log>
211 <logentry
211 <logentry
212 revision="1">
212 revision="1">
213 <author>test</author>
213 <author>test</author>
214 <date/>
214 <date/>
215 <paths>
215 <paths>
216 <path
216 <path
217 action="A">/d1</path>
217 action="A">/d1</path>
218 <path
218 <path
219 action="A">/d1/a</path>
219 action="A">/d1/a</path>
220 </paths>
220 </paths>
221 <msg>add executable file in new directory</msg>
221 <msg>add executable file in new directory</msg>
222 </logentry>
222 </logentry>
223 </log>
223 </log>
224 executable
224 executable
225 % copy to new directory
225 % copy to new directory
226 assuming destination a-hg
226 assuming destination a-hg
227 initializing svn wc 'a-hg-wc'
227 initializing svn wc 'a-hg-wc'
228 scanning source...
228 scanning source...
229 sorting...
229 sorting...
230 converting...
230 converting...
231 0 copy file to new directory
231 0 copy file to new directory
232 At revision 2.
232 At revision 2.
233 2 2 test .
233 2 2 test .
234 2 1 test d1
234 2 1 test d1
235 2 1 test d1/a
235 2 1 test d1/a
236 2 2 test d2
236 2 2 test d2
237 2 2 test d2/a
237 2 2 test d2/a
238 <?xml version="1.0"?>
238 <?xml version="1.0"?>
239 <log>
239 <log>
240 <logentry
240 <logentry
241 revision="2">
241 revision="2">
242 <author>test</author>
242 <author>test</author>
243 <date/>
243 <date/>
244 <paths>
244 <paths>
245 <path
245 <path
246 action="A">/d2</path>
246 action="A">/d2</path>
247 <path
247 <path
248 copyfrom-path="/d1/a"
248 copyfrom-path="/d1/a"
249 copyfrom-rev="1"
249 copyfrom-rev="1"
250 action="A">/d2/a</path>
250 action="A">/d2/a</path>
251 </paths>
251 </paths>
252 <msg>copy file to new directory</msg>
252 <msg>copy file to new directory</msg>
253 </logentry>
253 </logentry>
254 </log>
254 </log>
255 % branchy history
255 % branchy history
256 adding b
256 adding b
257 adding left-1
257 adding left-1
258 adding left-2
258 adding left-2
259 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
259 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
260 adding right-1
260 adding right-1
261 created new head
261 adding right-2
262 adding right-2
262 3 files updated, 0 files merged, 2 files removed, 0 files unresolved
263 3 files updated, 0 files merged, 2 files removed, 0 files unresolved
263 merging b
264 merging b
264 warning: conflicts during merge.
265 warning: conflicts during merge.
265 merging b failed!
266 merging b failed!
266 2 files updated, 0 files merged, 0 files removed, 1 files unresolved
267 2 files updated, 0 files merged, 0 files removed, 1 files unresolved
267 There are unresolved merges, you can redo the full merge using:
268 There are unresolved merges, you can redo the full merge using:
268 hg update -C 2
269 hg update -C 2
269 hg merge 4
270 hg merge 4
270 assuming destination b-hg
271 assuming destination b-hg
271 initializing svn repo 'b-hg'
272 initializing svn repo 'b-hg'
272 initializing svn wc 'b-hg-wc'
273 initializing svn wc 'b-hg-wc'
273 scanning source...
274 scanning source...
274 sorting...
275 sorting...
275 converting...
276 converting...
276 5 base
277 5 base
277 4 left-1
278 4 left-1
278 3 left-2
279 3 left-2
279 2 right-1
280 2 right-1
280 1 right-2
281 1 right-2
281 0 merge
282 0 merge
282 % expect 4 changes
283 % expect 4 changes
283 At revision 4.
284 At revision 4.
284 4 4 test .
285 4 4 test .
285 4 3 test b
286 4 3 test b
286 4 2 test left-1
287 4 2 test left-1
287 4 3 test left-2
288 4 3 test left-2
288 4 4 test right-1
289 4 4 test right-1
289 4 4 test right-2
290 4 4 test right-2
290 <?xml version="1.0"?>
291 <?xml version="1.0"?>
291 <log>
292 <log>
292 <logentry
293 <logentry
293 revision="4">
294 revision="4">
294 <author>test</author>
295 <author>test</author>
295 <date/>
296 <date/>
296 <paths>
297 <paths>
297 <path
298 <path
298 action="A">/right-1</path>
299 action="A">/right-1</path>
299 <path
300 <path
300 action="A">/right-2</path>
301 action="A">/right-2</path>
301 </paths>
302 </paths>
302 <msg>merge</msg>
303 <msg>merge</msg>
303 </logentry>
304 </logentry>
304 <logentry
305 <logentry
305 revision="3">
306 revision="3">
306 <author>test</author>
307 <author>test</author>
307 <date/>
308 <date/>
308 <paths>
309 <paths>
309 <path
310 <path
310 action="M">/b</path>
311 action="M">/b</path>
311 <path
312 <path
312 action="A">/left-2</path>
313 action="A">/left-2</path>
313 </paths>
314 </paths>
314 <msg>left-2</msg>
315 <msg>left-2</msg>
315 </logentry>
316 </logentry>
316 <logentry
317 <logentry
317 revision="2">
318 revision="2">
318 <author>test</author>
319 <author>test</author>
319 <date/>
320 <date/>
320 <paths>
321 <paths>
321 <path
322 <path
322 action="M">/b</path>
323 action="M">/b</path>
323 <path
324 <path
324 action="A">/left-1</path>
325 action="A">/left-1</path>
325 </paths>
326 </paths>
326 <msg>left-1</msg>
327 <msg>left-1</msg>
327 </logentry>
328 </logentry>
328 <logentry
329 <logentry
329 revision="1">
330 revision="1">
330 <author>test</author>
331 <author>test</author>
331 <date/>
332 <date/>
332 <paths>
333 <paths>
333 <path
334 <path
334 action="A">/b</path>
335 action="A">/b</path>
335 </paths>
336 </paths>
336 <msg>base</msg>
337 <msg>base</msg>
337 </logentry>
338 </logentry>
338 </log>
339 </log>
@@ -1,7 +1,8 b''
1 created new head
1 digraph G {
2 digraph G {
2 -1 -> 0
3 -1 -> 0
3 0 -> 1
4 0 -> 1
4 0 -> 2
5 0 -> 2
5 2 -> 3
6 2 -> 3
6 1 -> 3
7 1 -> 3
7 }
8 }
@@ -1,30 +1,31 b''
1 created new head
1 resolving manifests
2 resolving manifests
2 overwrite None partial False
3 overwrite None partial False
3 ancestor 310fd17130da local 2092631ce82b+ remote 7731dad1c2b9
4 ancestor 310fd17130da local 2092631ce82b+ remote 7731dad1c2b9
4 searching for copies back to rev 1
5 searching for copies back to rev 1
5 unmatched files in other:
6 unmatched files in other:
6 bar
7 bar
7 all copies found (* = to merge, ! = divergent):
8 all copies found (* = to merge, ! = divergent):
8 bar -> foo *
9 bar -> foo *
9 checking for directory renames
10 checking for directory renames
10 foo: versions differ -> m
11 foo: versions differ -> m
11 foo: remote copied to bar -> m
12 foo: remote copied to bar -> m
12 copying foo to bar
13 copying foo to bar
13 picked tool 'internal:merge' for foo (binary False symlink False)
14 picked tool 'internal:merge' for foo (binary False symlink False)
14 merging foo and bar
15 merging foo and bar
15 my foo@2092631ce82b+ other bar@7731dad1c2b9 ancestor foo@310fd17130da
16 my foo@2092631ce82b+ other bar@7731dad1c2b9 ancestor foo@310fd17130da
16 premerge successful
17 premerge successful
17 picked tool 'internal:merge' for foo (binary False symlink False)
18 picked tool 'internal:merge' for foo (binary False symlink False)
18 merging foo
19 merging foo
19 my foo@2092631ce82b+ other foo@7731dad1c2b9 ancestor foo@310fd17130da
20 my foo@2092631ce82b+ other foo@7731dad1c2b9 ancestor foo@310fd17130da
20 premerge successful
21 premerge successful
21 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
22 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
22 (branch merge, don't forget to commit)
23 (branch merge, don't forget to commit)
23 -- foo --
24 -- foo --
24 line 0
25 line 0
25 line 1
26 line 1
26 line 2-1
27 line 2-1
27 -- bar --
28 -- bar --
28 line 0
29 line 0
29 line 1
30 line 1
30 line 2-2
31 line 2-2
@@ -1,19 +1,20 b''
1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
2 created new head
2 changeset: 2:62ec0e86d1e5
3 changeset: 2:62ec0e86d1e5
3 tag: tip
4 tag: tip
4 parent: 0:567dde5e6e98
5 parent: 0:567dde5e6e98
5 user: test
6 user: test
6 date: Mon Jan 12 13:46:40 1970 +0000
7 date: Mon Jan 12 13:46:40 1970 +0000
7 summary: add empty3
8 summary: add empty3
8
9
9 changeset: 1:41ab7b321727
10 changeset: 1:41ab7b321727
10 user: test
11 user: test
11 date: Mon Jan 12 13:46:40 1970 +0000
12 date: Mon Jan 12 13:46:40 1970 +0000
12 summary: add empty2
13 summary: add empty2
13
14
14 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
15 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
15 (branch merge, don't forget to commit)
16 (branch merge, don't forget to commit)
16 M empty2
17 M empty2
17 b80de5d138758541c5f05265ad144ab9fa86d1db 644 empty1
18 b80de5d138758541c5f05265ad144ab9fa86d1db 644 empty1
18 b80de5d138758541c5f05265ad144ab9fa86d1db 644 empty2
19 b80de5d138758541c5f05265ad144ab9fa86d1db 644 empty2
19 b80de5d138758541c5f05265ad144ab9fa86d1db 644 empty3
20 b80de5d138758541c5f05265ad144ab9fa86d1db 644 empty3
@@ -1,76 +1,78 b''
1 adding init
1 adding init
2 adding x
2 adding x
3 adding y
3 adding y
4 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
4 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
5 adding x
5 adding x
6 adding y
6 adding y
7 created new head
7 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
8 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
8 (branch merge, don't forget to commit)
9 (branch merge, don't forget to commit)
9 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
10 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
10 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
11 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
11 (branch merge, don't forget to commit)
12 (branch merge, don't forget to commit)
13 created new head
12 requesting all changes
14 requesting all changes
13 adding changesets
15 adding changesets
14 adding manifests
16 adding manifests
15 adding file changes
17 adding file changes
16 added 4 changesets with 3 changes to 3 files
18 added 4 changesets with 3 changes to 3 files
17 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
19 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
18 requesting all changes
20 requesting all changes
19 adding changesets
21 adding changesets
20 adding manifests
22 adding manifests
21 adding file changes
23 adding file changes
22 added 4 changesets with 3 changes to 3 files
24 added 4 changesets with 3 changes to 3 files
23 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
25 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
24 comparing with b
26 comparing with b
25 searching for changes
27 searching for changes
26 changeset: 4:fdb3c546e859
28 changeset: 4:fdb3c546e859
27 tag: tip
29 tag: tip
28 parent: 1:1f703b3fcbc6
30 parent: 1:1f703b3fcbc6
29 parent: 2:de997049e034
31 parent: 2:de997049e034
30 user: test
32 user: test
31 date: Mon Jan 12 13:46:40 1970 +0000
33 date: Mon Jan 12 13:46:40 1970 +0000
32 summary: m2
34 summary: m2
33
35
34 comparing with c
36 comparing with c
35 searching for changes
37 searching for changes
36 changeset: 3:f40f830c0024
38 changeset: 3:f40f830c0024
37 parent: 2:de997049e034
39 parent: 2:de997049e034
38 parent: 1:1f703b3fcbc6
40 parent: 1:1f703b3fcbc6
39 user: test
41 user: test
40 date: Mon Jan 12 13:46:40 1970 +0000
42 date: Mon Jan 12 13:46:40 1970 +0000
41 summary: m1
43 summary: m1
42
44
43 comparing with c
45 comparing with c
44 searching for changes
46 searching for changes
45 changeset: 3:f40f830c0024
47 changeset: 3:f40f830c0024
46 tag: tip
48 tag: tip
47 parent: 2:de997049e034
49 parent: 2:de997049e034
48 parent: 1:1f703b3fcbc6
50 parent: 1:1f703b3fcbc6
49 user: test
51 user: test
50 date: Mon Jan 12 13:46:40 1970 +0000
52 date: Mon Jan 12 13:46:40 1970 +0000
51 summary: m1
53 summary: m1
52
54
53 comparing with b
55 comparing with b
54 searching for changes
56 searching for changes
55 changeset: 3:fdb3c546e859
57 changeset: 3:fdb3c546e859
56 tag: tip
58 tag: tip
57 parent: 1:1f703b3fcbc6
59 parent: 1:1f703b3fcbc6
58 parent: 2:de997049e034
60 parent: 2:de997049e034
59 user: test
61 user: test
60 date: Mon Jan 12 13:46:40 1970 +0000
62 date: Mon Jan 12 13:46:40 1970 +0000
61 summary: m2
63 summary: m2
62
64
63 pulling from a
65 pulling from a
64 searching for changes
66 searching for changes
65 adding changesets
67 adding changesets
66 adding manifests
68 adding manifests
67 adding file changes
69 adding file changes
68 added 1 changesets with 0 changes to 0 files (+1 heads)
70 added 1 changesets with 0 changes to 0 files (+1 heads)
69 (run 'hg heads' to see heads, 'hg merge' to merge)
71 (run 'hg heads' to see heads, 'hg merge' to merge)
70 pulling from a
72 pulling from a
71 searching for changes
73 searching for changes
72 adding changesets
74 adding changesets
73 adding manifests
75 adding manifests
74 adding file changes
76 adding file changes
75 added 1 changesets with 0 changes to 0 files (+1 heads)
77 added 1 changesets with 0 changes to 0 files (+1 heads)
76 (run 'hg heads' to see heads, 'hg merge' to merge)
78 (run 'hg heads' to see heads, 'hg merge' to merge)
@@ -1,65 +1,67 b''
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 created new head
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 (branch merge, don't forget to commit)
4 (branch merge, don't forget to commit)
4 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
5 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
5 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
6 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
6 (branch merge, don't forget to commit)
7 (branch merge, don't forget to commit)
8 created new head
7 changeset: 4:f6c172c6198c
9 changeset: 4:f6c172c6198c
8 tag: tip
10 tag: tip
9 parent: 1:448a8c5e42f1
11 parent: 1:448a8c5e42f1
10 parent: 2:7c5dc2e857f2
12 parent: 2:7c5dc2e857f2
11 user: test
13 user: test
12 date: Mon Jan 12 13:46:40 1970 +0000
14 date: Mon Jan 12 13:46:40 1970 +0000
13 summary: merge a/b -> blah
15 summary: merge a/b -> blah
14
16
15 changeset: 3:13d875a22764
17 changeset: 3:13d875a22764
16 parent: 2:7c5dc2e857f2
18 parent: 2:7c5dc2e857f2
17 parent: 1:448a8c5e42f1
19 parent: 1:448a8c5e42f1
18 user: test
20 user: test
19 date: Mon Jan 12 13:46:40 1970 +0000
21 date: Mon Jan 12 13:46:40 1970 +0000
20 summary: merge b/a -> blah
22 summary: merge b/a -> blah
21
23
22 changeset: 2:7c5dc2e857f2
24 changeset: 2:7c5dc2e857f2
23 parent: 0:dc1751ec2e9d
25 parent: 0:dc1751ec2e9d
24 user: test
26 user: test
25 date: Mon Jan 12 13:46:40 1970 +0000
27 date: Mon Jan 12 13:46:40 1970 +0000
26 summary: branch b
28 summary: branch b
27
29
28 changeset: 1:448a8c5e42f1
30 changeset: 1:448a8c5e42f1
29 user: test
31 user: test
30 date: Mon Jan 12 13:46:40 1970 +0000
32 date: Mon Jan 12 13:46:40 1970 +0000
31 summary: branch a
33 summary: branch a
32
34
33 changeset: 0:dc1751ec2e9d
35 changeset: 0:dc1751ec2e9d
34 user: test
36 user: test
35 date: Mon Jan 12 13:46:40 1970 +0000
37 date: Mon Jan 12 13:46:40 1970 +0000
36 summary: test
38 summary: test
37
39
38 rev offset length base linkrev nodeid p1 p2
40 rev offset length base linkrev nodeid p1 p2
39 0 0 64 0 0 dc1751ec2e9d 000000000000 000000000000
41 0 0 64 0 0 dc1751ec2e9d 000000000000 000000000000
40 1 64 68 1 1 448a8c5e42f1 dc1751ec2e9d 000000000000
42 1 64 68 1 1 448a8c5e42f1 dc1751ec2e9d 000000000000
41 2 132 68 2 2 7c5dc2e857f2 dc1751ec2e9d 000000000000
43 2 132 68 2 2 7c5dc2e857f2 dc1751ec2e9d 000000000000
42 3 200 75 3 3 13d875a22764 7c5dc2e857f2 448a8c5e42f1
44 3 200 75 3 3 13d875a22764 7c5dc2e857f2 448a8c5e42f1
43 4 275 29 3 4 f6c172c6198c 448a8c5e42f1 7c5dc2e857f2
45 4 275 29 3 4 f6c172c6198c 448a8c5e42f1 7c5dc2e857f2
44
46
45 1
47 1
46 79d7492df40aa0fa093ec4209be78043c181f094 644 a
48 79d7492df40aa0fa093ec4209be78043c181f094 644 a
47 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 b
49 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 b
48 2
50 2
49 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 a
51 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 a
50 79d7492df40aa0fa093ec4209be78043c181f094 644 b
52 79d7492df40aa0fa093ec4209be78043c181f094 644 b
51 3
53 3
52 79d7492df40aa0fa093ec4209be78043c181f094 644 a
54 79d7492df40aa0fa093ec4209be78043c181f094 644 a
53 79d7492df40aa0fa093ec4209be78043c181f094 644 b
55 79d7492df40aa0fa093ec4209be78043c181f094 644 b
54 4
56 4
55 79d7492df40aa0fa093ec4209be78043c181f094 644 a
57 79d7492df40aa0fa093ec4209be78043c181f094 644 a
56 79d7492df40aa0fa093ec4209be78043c181f094 644 b
58 79d7492df40aa0fa093ec4209be78043c181f094 644 b
57
59
58 rev offset length base linkrev nodeid p1 p2
60 rev offset length base linkrev nodeid p1 p2
59 0 0 5 0 0 2ed2a3912a0b 000000000000 000000000000
61 0 0 5 0 0 2ed2a3912a0b 000000000000 000000000000
60 1 5 6 1 1 79d7492df40a 2ed2a3912a0b 000000000000
62 1 5 6 1 1 79d7492df40a 2ed2a3912a0b 000000000000
61 checking changesets
63 checking changesets
62 checking manifests
64 checking manifests
63 crosschecking files in changesets and manifests
65 crosschecking files in changesets and manifests
64 checking files
66 checking files
65 2 files, 5 changesets, 4 total revisions
67 2 files, 5 changesets, 4 total revisions
@@ -1,33 +1,34 b''
1 adding a
1 adding a
2 adding b
2 adding b
3 Only in a: a
3 Only in a: a
4 Only in a: b
4 Only in a: b
5 diffing a.000000000000 a
5 diffing a.000000000000 a
6 hg falabala [OPTION]... [FILE]...
6 hg falabala [OPTION]... [FILE]...
7
7
8 use 'echo' to diff repository (or selected files)
8 use 'echo' to diff repository (or selected files)
9
9
10 Show differences between revisions for the specified
10 Show differences between revisions for the specified
11 files, using the 'echo' program.
11 files, using the 'echo' program.
12
12
13 When two revision arguments are given, then changes are
13 When two revision arguments are given, then changes are
14 shown between those revisions. If only one revision is
14 shown between those revisions. If only one revision is
15 specified then that revision is compared to the working
15 specified then that revision is compared to the working
16 directory, and, when no revisions are specified, the
16 directory, and, when no revisions are specified, the
17 working directory files are compared to its parent.
17 working directory files are compared to its parent.
18
18
19 options:
19 options:
20
20
21 -o --option pass option to comparison program
21 -o --option pass option to comparison program
22 -r --rev revision
22 -r --rev revision
23 -I --include include names matching the given patterns
23 -I --include include names matching the given patterns
24 -X --exclude exclude names matching the given patterns
24 -X --exclude exclude names matching the given patterns
25
25
26 use "hg -v help falabala" to show global options
26 use "hg -v help falabala" to show global options
27 diffing a.8a5febb7f867/a a.34eed99112ab/a
27 diffing a.8a5febb7f867/a a.34eed99112ab/a
28 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
28 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
29 created new head
29 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
30 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
30 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
31 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
31 (branch merge, don't forget to commit)
32 (branch merge, don't forget to commit)
32 diff-like tools yield a non-zero exit code
33 diff-like tools yield a non-zero exit code
33 diffing a.34eed99112ab/c [tmp]/test-extdiff/a/c
34 diffing a.34eed99112ab/c [tmp]/test-extdiff/a/c
@@ -1,323 +1,328 b''
1 % init
1 % init
2 % empty repo
2 % empty repo
3 % building tree
3 % building tree
4 created new head
5 created new head
6 created new head
7 created new head
8 created new head
4 % glog -q
9 % glog -q
5 @ 34:0eed7cd895e0
10 @ 34:0eed7cd895e0
6 |
11 |
7 | o 33:2e9d1b521374
12 | o 33:2e9d1b521374
8 | |
13 | |
9 o | 32:77f7d8438a3c
14 o | 32:77f7d8438a3c
10 |\ \
15 |\ \
11 | o \ 31:82ee55204a79
16 | o \ 31:82ee55204a79
12 | |\ \
17 | |\ \
13 | | o \ 30:777dfc428649
18 | | o \ 30:777dfc428649
14 | | |\ \
19 | | |\ \
15 | | | o | 29:f8e7fee63353
20 | | | o | 29:f8e7fee63353
16 | | | | |
21 | | | | |
17 | | o | | 28:4b6e9bd48cf9
22 | | o | | 28:4b6e9bd48cf9
18 | | |\ \ \
23 | | |\ \ \
19 o | | | | | 27:e9e08174cd30
24 o | | | | | 27:e9e08174cd30
20 |/ / / / /
25 |/ / / / /
21 | | o---+ 26:720dc079a855
26 | | o---+ 26:720dc079a855
22 | | | | |
27 | | | | |
23 +---o | | 25:9d4ed048d013
28 +---o | | 25:9d4ed048d013
24 | | | | |
29 | | | | |
25 | | o | | 24:4a68967db00d
30 | | o | | 24:4a68967db00d
26 | | |\| |
31 | | |\| |
27 | | o | | 23:bc31393cabdf
32 | | o | | 23:bc31393cabdf
28 | |/| | |
33 | |/| | |
29 +---o---+ 22:a37f2ea6ebc6
34 +---o---+ 22:a37f2ea6ebc6
30 | | / /
35 | | / /
31 o | | | 21:e758e8f4ace9
36 o | | | 21:e758e8f4ace9
32 |\ \ \ \
37 |\ \ \ \
33 | o---+-+ 20:aeccadad74b4
38 | o---+-+ 20:aeccadad74b4
34 | / / /
39 | / / /
35 o | | | 19:138069b5dad7
40 o | | | 19:138069b5dad7
36 |\ \ \ \
41 |\ \ \ \
37 +---+---o 18:5a8c9a29ef81
42 +---+---o 18:5a8c9a29ef81
38 | | | |
43 | | | |
39 | o | | 17:43e52b935494
44 | o | | 17:43e52b935494
40 | |\ \ \
45 | |\ \ \
41 | | o---+ 16:449a2f9562a4
46 | | o---+ 16:449a2f9562a4
42 | | |/ /
47 | | |/ /
43 o | | | 15:c0b4283d4c1d
48 o | | | 15:c0b4283d4c1d
44 |\ \ \ \
49 |\ \ \ \
45 | o-----+ 14:9d533950abf0
50 | o-----+ 14:9d533950abf0
46 | |/ / /
51 | |/ / /
47 o | | | 13:c39d0a2b8165
52 o | | | 13:c39d0a2b8165
48 |\ \ \ \
53 |\ \ \ \
49 +---o | | 12:74dc7aea4494
54 +---o | | 12:74dc7aea4494
50 | | |/ /
55 | | |/ /
51 | o | | 11:c3c395dd8b98
56 | o | | 11:c3c395dd8b98
52 | |\ \ \
57 | |\ \ \
53 | | o---+ 10:8094c50149ef
58 | | o---+ 10:8094c50149ef
54 | |/ / /
59 | |/ / /
55 o | | | 9:79ab1812f961
60 o | | | 9:79ab1812f961
56 |\ \ \ \
61 |\ \ \ \
57 | o-----+ 8:d7aa38594334
62 | o-----+ 8:d7aa38594334
58 |/ / / /
63 |/ / / /
59 o | | | 7:699392d1259e
64 o | | | 7:699392d1259e
60 |\ \ \ \
65 |\ \ \ \
61 +---o | | 6:0ca7c061cf45
66 +---o | | 6:0ca7c061cf45
62 | |/ / /
67 | |/ / /
63 | o | | 5:3589c3c477ab
68 | o | | 5:3589c3c477ab
64 | |\ \ \
69 | |\ \ \
65 | | o | | 4:e2cad8233c77
70 | | o | | 4:e2cad8233c77
66 | |/|/ /
71 | |/|/ /
67 | o / / 3:02173ffbf857
72 | o / / 3:02173ffbf857
68 |/ / /
73 |/ / /
69 o / / 2:e8ea2256f9ec
74 o / / 2:e8ea2256f9ec
70 |/ /
75 |/ /
71 o / 1:3cae7826a707
76 o / 1:3cae7826a707
72 |/
77 |/
73 o 0:7aa22e58e8c1
78 o 0:7aa22e58e8c1
74
79
75 % glog
80 % glog
76 @ changeset: 34:0eed7cd895e0
81 @ changeset: 34:0eed7cd895e0
77 | tag: tip
82 | tag: tip
78 | parent: 32:77f7d8438a3c
83 | parent: 32:77f7d8438a3c
79 | user: test
84 | user: test
80 | date: Thu Jan 01 00:00:34 1970 +0000
85 | date: Thu Jan 01 00:00:34 1970 +0000
81 | summary: (34) head
86 | summary: (34) head
82 |
87 |
83 | o changeset: 33:2e9d1b521374
88 | o changeset: 33:2e9d1b521374
84 | | parent: 18:5a8c9a29ef81
89 | | parent: 18:5a8c9a29ef81
85 | | user: test
90 | | user: test
86 | | date: Thu Jan 01 00:00:33 1970 +0000
91 | | date: Thu Jan 01 00:00:33 1970 +0000
87 | | summary: (33) head
92 | | summary: (33) head
88 | |
93 | |
89 o | changeset: 32:77f7d8438a3c
94 o | changeset: 32:77f7d8438a3c
90 |\ \ parent: 27:e9e08174cd30
95 |\ \ parent: 27:e9e08174cd30
91 | | | parent: 31:82ee55204a79
96 | | | parent: 31:82ee55204a79
92 | | | user: test
97 | | | user: test
93 | | | date: Thu Jan 01 00:00:32 1970 +0000
98 | | | date: Thu Jan 01 00:00:32 1970 +0000
94 | | | summary: (32) expand
99 | | | summary: (32) expand
95 | | |
100 | | |
96 | o | changeset: 31:82ee55204a79
101 | o | changeset: 31:82ee55204a79
97 | |\ \ parent: 21:e758e8f4ace9
102 | |\ \ parent: 21:e758e8f4ace9
98 | | | | parent: 30:777dfc428649
103 | | | | parent: 30:777dfc428649
99 | | | | user: test
104 | | | | user: test
100 | | | | date: Thu Jan 01 00:00:31 1970 +0000
105 | | | | date: Thu Jan 01 00:00:31 1970 +0000
101 | | | | summary: (31) expand
106 | | | | summary: (31) expand
102 | | | |
107 | | | |
103 | | o | changeset: 30:777dfc428649
108 | | o | changeset: 30:777dfc428649
104 | | |\ \ parent: 28:4b6e9bd48cf9
109 | | |\ \ parent: 28:4b6e9bd48cf9
105 | | | | | parent: 29:f8e7fee63353
110 | | | | | parent: 29:f8e7fee63353
106 | | | | | user: test
111 | | | | | user: test
107 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
112 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
108 | | | | | summary: (30) expand
113 | | | | | summary: (30) expand
109 | | | | |
114 | | | | |
110 | | | o | changeset: 29:f8e7fee63353
115 | | | o | changeset: 29:f8e7fee63353
111 | | | | | parent: 0:7aa22e58e8c1
116 | | | | | parent: 0:7aa22e58e8c1
112 | | | | | user: test
117 | | | | | user: test
113 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
118 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
114 | | | | | summary: (29) regular commit
119 | | | | | summary: (29) regular commit
115 | | | | |
120 | | | | |
116 | | o | | changeset: 28:4b6e9bd48cf9
121 | | o | | changeset: 28:4b6e9bd48cf9
117 | | |\ \ \ parent: 1:3cae7826a707
122 | | |\ \ \ parent: 1:3cae7826a707
118 | | | | | | parent: 26:720dc079a855
123 | | | | | | parent: 26:720dc079a855
119 | | | | | | user: test
124 | | | | | | user: test
120 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
125 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
121 | | | | | | summary: (28) merge zero known
126 | | | | | | summary: (28) merge zero known
122 | | | | | |
127 | | | | | |
123 o | | | | | changeset: 27:e9e08174cd30
128 o | | | | | changeset: 27:e9e08174cd30
124 |/ / / / / parent: 21:e758e8f4ace9
129 |/ / / / / parent: 21:e758e8f4ace9
125 | | | | | user: test
130 | | | | | user: test
126 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
131 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
127 | | | | | summary: (27) collapse
132 | | | | | summary: (27) collapse
128 | | | | |
133 | | | | |
129 | | o---+ changeset: 26:720dc079a855
134 | | o---+ changeset: 26:720dc079a855
130 | | | | | parent: 18:5a8c9a29ef81
135 | | | | | parent: 18:5a8c9a29ef81
131 | | | | | parent: 25:9d4ed048d013
136 | | | | | parent: 25:9d4ed048d013
132 | | | | | user: test
137 | | | | | user: test
133 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
138 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
134 | | | | | summary: (26) merge one known; far right
139 | | | | | summary: (26) merge one known; far right
135 | | | | |
140 | | | | |
136 +---o | | changeset: 25:9d4ed048d013
141 +---o | | changeset: 25:9d4ed048d013
137 | | | | | parent: 21:e758e8f4ace9
142 | | | | | parent: 21:e758e8f4ace9
138 | | | | | parent: 24:4a68967db00d
143 | | | | | parent: 24:4a68967db00d
139 | | | | | user: test
144 | | | | | user: test
140 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
145 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
141 | | | | | summary: (25) merge one known; far left
146 | | | | | summary: (25) merge one known; far left
142 | | | | |
147 | | | | |
143 | | o | | changeset: 24:4a68967db00d
148 | | o | | changeset: 24:4a68967db00d
144 | | |\| | parent: 0:7aa22e58e8c1
149 | | |\| | parent: 0:7aa22e58e8c1
145 | | | | | parent: 23:bc31393cabdf
150 | | | | | parent: 23:bc31393cabdf
146 | | | | | user: test
151 | | | | | user: test
147 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
152 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
148 | | | | | summary: (24) merge one known; immediate right
153 | | | | | summary: (24) merge one known; immediate right
149 | | | | |
154 | | | | |
150 | | o | | changeset: 23:bc31393cabdf
155 | | o | | changeset: 23:bc31393cabdf
151 | |/| | | parent: 1:3cae7826a707
156 | |/| | | parent: 1:3cae7826a707
152 | | | | | parent: 22:a37f2ea6ebc6
157 | | | | | parent: 22:a37f2ea6ebc6
153 | | | | | user: test
158 | | | | | user: test
154 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
159 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
155 | | | | | summary: (23) merge one known; immediate left
160 | | | | | summary: (23) merge one known; immediate left
156 | | | | |
161 | | | | |
157 +---o---+ changeset: 22:a37f2ea6ebc6
162 +---o---+ changeset: 22:a37f2ea6ebc6
158 | | | | parent: 18:5a8c9a29ef81
163 | | | | parent: 18:5a8c9a29ef81
159 | | / / parent: 21:e758e8f4ace9
164 | | / / parent: 21:e758e8f4ace9
160 | | | | user: test
165 | | | | user: test
161 | | | | date: Thu Jan 01 00:00:22 1970 +0000
166 | | | | date: Thu Jan 01 00:00:22 1970 +0000
162 | | | | summary: (22) merge two known; one far left, one far right
167 | | | | summary: (22) merge two known; one far left, one far right
163 | | | |
168 | | | |
164 o | | | changeset: 21:e758e8f4ace9
169 o | | | changeset: 21:e758e8f4ace9
165 |\ \ \ \ parent: 19:138069b5dad7
170 |\ \ \ \ parent: 19:138069b5dad7
166 | | | | | parent: 20:aeccadad74b4
171 | | | | | parent: 20:aeccadad74b4
167 | | | | | user: test
172 | | | | | user: test
168 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
173 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
169 | | | | | summary: (21) expand
174 | | | | | summary: (21) expand
170 | | | | |
175 | | | | |
171 | o---+-+ changeset: 20:aeccadad74b4
176 | o---+-+ changeset: 20:aeccadad74b4
172 | | | | parent: 0:7aa22e58e8c1
177 | | | | parent: 0:7aa22e58e8c1
173 | / / / parent: 18:5a8c9a29ef81
178 | / / / parent: 18:5a8c9a29ef81
174 | | | | user: test
179 | | | | user: test
175 | | | | date: Thu Jan 01 00:00:20 1970 +0000
180 | | | | date: Thu Jan 01 00:00:20 1970 +0000
176 | | | | summary: (20) merge two known; two far right
181 | | | | summary: (20) merge two known; two far right
177 | | | |
182 | | | |
178 o | | | changeset: 19:138069b5dad7
183 o | | | changeset: 19:138069b5dad7
179 |\ \ \ \ parent: 15:c0b4283d4c1d
184 |\ \ \ \ parent: 15:c0b4283d4c1d
180 | | | | | parent: 17:43e52b935494
185 | | | | | parent: 17:43e52b935494
181 | | | | | user: test
186 | | | | | user: test
182 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
187 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
183 | | | | | summary: (19) expand
188 | | | | | summary: (19) expand
184 | | | | |
189 | | | | |
185 +---+---o changeset: 18:5a8c9a29ef81
190 +---+---o changeset: 18:5a8c9a29ef81
186 | | | | parent: 1:3cae7826a707
191 | | | | parent: 1:3cae7826a707
187 | | | | parent: 15:c0b4283d4c1d
192 | | | | parent: 15:c0b4283d4c1d
188 | | | | user: test
193 | | | | user: test
189 | | | | date: Thu Jan 01 00:00:18 1970 +0000
194 | | | | date: Thu Jan 01 00:00:18 1970 +0000
190 | | | | summary: (18) merge two known; two far left
195 | | | | summary: (18) merge two known; two far left
191 | | | |
196 | | | |
192 | o | | changeset: 17:43e52b935494
197 | o | | changeset: 17:43e52b935494
193 | |\ \ \ parent: 12:74dc7aea4494
198 | |\ \ \ parent: 12:74dc7aea4494
194 | | | | | parent: 16:449a2f9562a4
199 | | | | | parent: 16:449a2f9562a4
195 | | | | | user: test
200 | | | | | user: test
196 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
201 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
197 | | | | | summary: (17) expand
202 | | | | | summary: (17) expand
198 | | | | |
203 | | | | |
199 | | o---+ changeset: 16:449a2f9562a4
204 | | o---+ changeset: 16:449a2f9562a4
200 | | | | | parent: 0:7aa22e58e8c1
205 | | | | | parent: 0:7aa22e58e8c1
201 | | |/ / parent: 1:3cae7826a707
206 | | |/ / parent: 1:3cae7826a707
202 | | | | user: test
207 | | | | user: test
203 | | | | date: Thu Jan 01 00:00:16 1970 +0000
208 | | | | date: Thu Jan 01 00:00:16 1970 +0000
204 | | | | summary: (16) merge two known; one immediate right, one near right
209 | | | | summary: (16) merge two known; one immediate right, one near right
205 | | | |
210 | | | |
206 o | | | changeset: 15:c0b4283d4c1d
211 o | | | changeset: 15:c0b4283d4c1d
207 |\ \ \ \ parent: 13:c39d0a2b8165
212 |\ \ \ \ parent: 13:c39d0a2b8165
208 | | | | | parent: 14:9d533950abf0
213 | | | | | parent: 14:9d533950abf0
209 | | | | | user: test
214 | | | | | user: test
210 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
215 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
211 | | | | | summary: (15) expand
216 | | | | | summary: (15) expand
212 | | | | |
217 | | | | |
213 | o-----+ changeset: 14:9d533950abf0
218 | o-----+ changeset: 14:9d533950abf0
214 | | | | | parent: 0:7aa22e58e8c1
219 | | | | | parent: 0:7aa22e58e8c1
215 | |/ / / parent: 12:74dc7aea4494
220 | |/ / / parent: 12:74dc7aea4494
216 | | | | user: test
221 | | | | user: test
217 | | | | date: Thu Jan 01 00:00:14 1970 +0000
222 | | | | date: Thu Jan 01 00:00:14 1970 +0000
218 | | | | summary: (14) merge two known; one immediate right, one far right
223 | | | | summary: (14) merge two known; one immediate right, one far right
219 | | | |
224 | | | |
220 o | | | changeset: 13:c39d0a2b8165
225 o | | | changeset: 13:c39d0a2b8165
221 |\ \ \ \ parent: 9:79ab1812f961
226 |\ \ \ \ parent: 9:79ab1812f961
222 | | | | | parent: 11:c3c395dd8b98
227 | | | | | parent: 11:c3c395dd8b98
223 | | | | | user: test
228 | | | | | user: test
224 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
229 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
225 | | | | | summary: (13) expand
230 | | | | | summary: (13) expand
226 | | | | |
231 | | | | |
227 +---o | | changeset: 12:74dc7aea4494
232 +---o | | changeset: 12:74dc7aea4494
228 | | |/ / parent: 1:3cae7826a707
233 | | |/ / parent: 1:3cae7826a707
229 | | | | parent: 9:79ab1812f961
234 | | | | parent: 9:79ab1812f961
230 | | | | user: test
235 | | | | user: test
231 | | | | date: Thu Jan 01 00:00:12 1970 +0000
236 | | | | date: Thu Jan 01 00:00:12 1970 +0000
232 | | | | summary: (12) merge two known; one immediate right, one far left
237 | | | | summary: (12) merge two known; one immediate right, one far left
233 | | | |
238 | | | |
234 | o | | changeset: 11:c3c395dd8b98
239 | o | | changeset: 11:c3c395dd8b98
235 | |\ \ \ parent: 6:0ca7c061cf45
240 | |\ \ \ parent: 6:0ca7c061cf45
236 | | | | | parent: 10:8094c50149ef
241 | | | | | parent: 10:8094c50149ef
237 | | | | | user: test
242 | | | | | user: test
238 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
243 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
239 | | | | | summary: (11) expand
244 | | | | | summary: (11) expand
240 | | | | |
245 | | | | |
241 | | o---+ changeset: 10:8094c50149ef
246 | | o---+ changeset: 10:8094c50149ef
242 | | | | | parent: 0:7aa22e58e8c1
247 | | | | | parent: 0:7aa22e58e8c1
243 | |/ / / parent: 6:0ca7c061cf45
248 | |/ / / parent: 6:0ca7c061cf45
244 | | | | user: test
249 | | | | user: test
245 | | | | date: Thu Jan 01 00:00:10 1970 +0000
250 | | | | date: Thu Jan 01 00:00:10 1970 +0000
246 | | | | summary: (10) merge two known; one immediate left, one near right
251 | | | | summary: (10) merge two known; one immediate left, one near right
247 | | | |
252 | | | |
248 o | | | changeset: 9:79ab1812f961
253 o | | | changeset: 9:79ab1812f961
249 |\ \ \ \ parent: 7:699392d1259e
254 |\ \ \ \ parent: 7:699392d1259e
250 | | | | | parent: 8:d7aa38594334
255 | | | | | parent: 8:d7aa38594334
251 | | | | | user: test
256 | | | | | user: test
252 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
257 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
253 | | | | | summary: (9) expand
258 | | | | | summary: (9) expand
254 | | | | |
259 | | | | |
255 | o-----+ changeset: 8:d7aa38594334
260 | o-----+ changeset: 8:d7aa38594334
256 | | | | | parent: 0:7aa22e58e8c1
261 | | | | | parent: 0:7aa22e58e8c1
257 |/ / / / parent: 7:699392d1259e
262 |/ / / / parent: 7:699392d1259e
258 | | | | user: test
263 | | | | user: test
259 | | | | date: Thu Jan 01 00:00:08 1970 +0000
264 | | | | date: Thu Jan 01 00:00:08 1970 +0000
260 | | | | summary: (8) merge two known; one immediate left, one far right
265 | | | | summary: (8) merge two known; one immediate left, one far right
261 | | | |
266 | | | |
262 o | | | changeset: 7:699392d1259e
267 o | | | changeset: 7:699392d1259e
263 |\ \ \ \ parent: 2:e8ea2256f9ec
268 |\ \ \ \ parent: 2:e8ea2256f9ec
264 | | | | | parent: 5:3589c3c477ab
269 | | | | | parent: 5:3589c3c477ab
265 | | | | | user: test
270 | | | | | user: test
266 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
271 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
267 | | | | | summary: (7) expand
272 | | | | | summary: (7) expand
268 | | | | |
273 | | | | |
269 +---o | | changeset: 6:0ca7c061cf45
274 +---o | | changeset: 6:0ca7c061cf45
270 | |/ / / parent: 2:e8ea2256f9ec
275 | |/ / / parent: 2:e8ea2256f9ec
271 | | | | parent: 5:3589c3c477ab
276 | | | | parent: 5:3589c3c477ab
272 | | | | user: test
277 | | | | user: test
273 | | | | date: Thu Jan 01 00:00:06 1970 +0000
278 | | | | date: Thu Jan 01 00:00:06 1970 +0000
274 | | | | summary: (6) merge two known; one immediate left, one far left
279 | | | | summary: (6) merge two known; one immediate left, one far left
275 | | | |
280 | | | |
276 | o | | changeset: 5:3589c3c477ab
281 | o | | changeset: 5:3589c3c477ab
277 | |\ \ \ parent: 3:02173ffbf857
282 | |\ \ \ parent: 3:02173ffbf857
278 | | | | | parent: 4:e2cad8233c77
283 | | | | | parent: 4:e2cad8233c77
279 | | | | | user: test
284 | | | | | user: test
280 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
285 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
281 | | | | | summary: (5) expand
286 | | | | | summary: (5) expand
282 | | | | |
287 | | | | |
283 | | o | | changeset: 4:e2cad8233c77
288 | | o | | changeset: 4:e2cad8233c77
284 | |/|/ / parent: 1:3cae7826a707
289 | |/|/ / parent: 1:3cae7826a707
285 | | | | parent: 3:02173ffbf857
290 | | | | parent: 3:02173ffbf857
286 | | | | user: test
291 | | | | user: test
287 | | | | date: Thu Jan 01 00:00:04 1970 +0000
292 | | | | date: Thu Jan 01 00:00:04 1970 +0000
288 | | | | summary: (4) merge two known; one immediate left, one immediate right
293 | | | | summary: (4) merge two known; one immediate left, one immediate right
289 | | | |
294 | | | |
290 | o | | changeset: 3:02173ffbf857
295 | o | | changeset: 3:02173ffbf857
291 |/ / / user: test
296 |/ / / user: test
292 | | | date: Thu Jan 01 00:00:03 1970 +0000
297 | | | date: Thu Jan 01 00:00:03 1970 +0000
293 | | | summary: (3) collapse
298 | | | summary: (3) collapse
294 | | |
299 | | |
295 o | | changeset: 2:e8ea2256f9ec
300 o | | changeset: 2:e8ea2256f9ec
296 |/ / user: test
301 |/ / user: test
297 | | date: Thu Jan 01 00:00:02 1970 +0000
302 | | date: Thu Jan 01 00:00:02 1970 +0000
298 | | summary: (2) collapse
303 | | summary: (2) collapse
299 | |
304 | |
300 o | changeset: 1:3cae7826a707
305 o | changeset: 1:3cae7826a707
301 |/ user: test
306 |/ user: test
302 | date: Thu Jan 01 00:00:01 1970 +0000
307 | date: Thu Jan 01 00:00:01 1970 +0000
303 | summary: (1) collapse
308 | summary: (1) collapse
304 |
309 |
305 o changeset: 0:7aa22e58e8c1
310 o changeset: 0:7aa22e58e8c1
306 user: test
311 user: test
307 date: Thu Jan 01 00:00:00 1970 +0000
312 date: Thu Jan 01 00:00:00 1970 +0000
308 summary: (0) root
313 summary: (0) root
309
314
310 % file glog
315 % file glog
311 o changeset: 5:3589c3c477ab
316 o changeset: 5:3589c3c477ab
312 parent: 3:02173ffbf857
317 parent: 3:02173ffbf857
313 parent: 4:e2cad8233c77
318 parent: 4:e2cad8233c77
314 user: test
319 user: test
315 date: Thu Jan 01 00:00:05 1970 +0000
320 date: Thu Jan 01 00:00:05 1970 +0000
316 summary: (5) expand
321 summary: (5) expand
317
322
318 % unused arguments
323 % unused arguments
319 hg glog: invalid arguments
324 hg glog: invalid arguments
320 hg glog [OPTION]... [FILE]
325 hg glog [OPTION]... [FILE]
321
326
322 show revision history alongside an ASCII revision graph
327 show revision history alongside an ASCII revision graph
323 failed
328 failed
@@ -1,151 +1,152 b''
1 precommit hook: HG_PARENT1=0000000000000000000000000000000000000000
1 precommit hook: HG_PARENT1=0000000000000000000000000000000000000000
2 pretxncommit hook: HG_NODE=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b HG_PARENT1=0000000000000000000000000000000000000000
2 pretxncommit hook: HG_NODE=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b HG_PARENT1=0000000000000000000000000000000000000000
3 0:29b62aeb769f
3 0:29b62aeb769f
4 commit hook: HG_NODE=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b HG_PARENT1=0000000000000000000000000000000000000000
4 commit hook: HG_NODE=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b HG_PARENT1=0000000000000000000000000000000000000000
5 commit.b hook: HG_NODE=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b HG_PARENT1=0000000000000000000000000000000000000000
5 commit.b hook: HG_NODE=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b HG_PARENT1=0000000000000000000000000000000000000000
6 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
6 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
7 precommit hook: HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
7 precommit hook: HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
8 pretxncommit hook: HG_NODE=b702efe9688826e3a91283852b328b84dbf37bc2 HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
8 pretxncommit hook: HG_NODE=b702efe9688826e3a91283852b328b84dbf37bc2 HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
9 1:b702efe96888
9 1:b702efe96888
10 commit hook: HG_NODE=b702efe9688826e3a91283852b328b84dbf37bc2 HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
10 commit hook: HG_NODE=b702efe9688826e3a91283852b328b84dbf37bc2 HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
11 commit.b hook: HG_NODE=b702efe9688826e3a91283852b328b84dbf37bc2 HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
11 commit.b hook: HG_NODE=b702efe9688826e3a91283852b328b84dbf37bc2 HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
12 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
12 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
13 precommit hook: HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
13 precommit hook: HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
14 pretxncommit hook: HG_NODE=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
14 pretxncommit hook: HG_NODE=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
15 2:1324a5531bac
15 2:1324a5531bac
16 commit hook: HG_NODE=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
16 commit hook: HG_NODE=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
17 commit.b hook: HG_NODE=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
17 commit.b hook: HG_NODE=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
18 created new head
18 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
19 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
19 (branch merge, don't forget to commit)
20 (branch merge, don't forget to commit)
20 precommit hook: HG_PARENT1=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT2=b702efe9688826e3a91283852b328b84dbf37bc2
21 precommit hook: HG_PARENT1=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT2=b702efe9688826e3a91283852b328b84dbf37bc2
21 pretxncommit hook: HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_PARENT1=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT2=b702efe9688826e3a91283852b328b84dbf37bc2
22 pretxncommit hook: HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_PARENT1=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT2=b702efe9688826e3a91283852b328b84dbf37bc2
22 3:4c52fb2e4022
23 3:4c52fb2e4022
23 commit hook: HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_PARENT1=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT2=b702efe9688826e3a91283852b328b84dbf37bc2
24 commit hook: HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_PARENT1=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT2=b702efe9688826e3a91283852b328b84dbf37bc2
24 commit.b hook: HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_PARENT1=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT2=b702efe9688826e3a91283852b328b84dbf37bc2
25 commit.b hook: HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_PARENT1=1324a5531bac09b329c3845d35ae6a7526874edb HG_PARENT2=b702efe9688826e3a91283852b328b84dbf37bc2
25 pre-identify hook: HG_ARGS=id
26 pre-identify hook: HG_ARGS=id
26 warning: pre-identify hook exited with status 1
27 warning: pre-identify hook exited with status 1
27 pre-cat hook: HG_ARGS=cat b
28 pre-cat hook: HG_ARGS=cat b
28 post-cat hook: HG_ARGS=cat b HG_RESULT=0
29 post-cat hook: HG_ARGS=cat b HG_RESULT=0
29 b
30 b
30 prechangegroup hook: HG_SOURCE=pull HG_URL=file:
31 prechangegroup hook: HG_SOURCE=pull HG_URL=file:
31 changegroup hook: HG_NODE=b702efe9688826e3a91283852b328b84dbf37bc2 HG_SOURCE=pull HG_URL=file:
32 changegroup hook: HG_NODE=b702efe9688826e3a91283852b328b84dbf37bc2 HG_SOURCE=pull HG_URL=file:
32 incoming hook: HG_NODE=b702efe9688826e3a91283852b328b84dbf37bc2 HG_SOURCE=pull HG_URL=file:
33 incoming hook: HG_NODE=b702efe9688826e3a91283852b328b84dbf37bc2 HG_SOURCE=pull HG_URL=file:
33 incoming hook: HG_NODE=1324a5531bac09b329c3845d35ae6a7526874edb HG_SOURCE=pull HG_URL=file:
34 incoming hook: HG_NODE=1324a5531bac09b329c3845d35ae6a7526874edb HG_SOURCE=pull HG_URL=file:
34 incoming hook: HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_SOURCE=pull HG_URL=file:
35 incoming hook: HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_SOURCE=pull HG_URL=file:
35 pulling from ../a
36 pulling from ../a
36 searching for changes
37 searching for changes
37 adding changesets
38 adding changesets
38 adding manifests
39 adding manifests
39 adding file changes
40 adding file changes
40 added 3 changesets with 2 changes to 2 files
41 added 3 changesets with 2 changes to 2 files
41 (run 'hg update' to get a working copy)
42 (run 'hg update' to get a working copy)
42 pretag hook: HG_LOCAL=0 HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_TAG=a
43 pretag hook: HG_LOCAL=0 HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_TAG=a
43 precommit hook: HG_PARENT1=4c52fb2e402287dd5dc052090682536c8406c321
44 precommit hook: HG_PARENT1=4c52fb2e402287dd5dc052090682536c8406c321
44 pretxncommit hook: HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_PARENT1=4c52fb2e402287dd5dc052090682536c8406c321
45 pretxncommit hook: HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_PARENT1=4c52fb2e402287dd5dc052090682536c8406c321
45 4:8ea2ef7ad3e8
46 4:8ea2ef7ad3e8
46 commit hook: HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_PARENT1=4c52fb2e402287dd5dc052090682536c8406c321
47 commit hook: HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_PARENT1=4c52fb2e402287dd5dc052090682536c8406c321
47 commit.b hook: HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_PARENT1=4c52fb2e402287dd5dc052090682536c8406c321
48 commit.b hook: HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_PARENT1=4c52fb2e402287dd5dc052090682536c8406c321
48 tag hook: HG_LOCAL=0 HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_TAG=a
49 tag hook: HG_LOCAL=0 HG_NODE=4c52fb2e402287dd5dc052090682536c8406c321 HG_TAG=a
49 pretag hook: HG_LOCAL=1 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=la
50 pretag hook: HG_LOCAL=1 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=la
50 tag hook: HG_LOCAL=1 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=la
51 tag hook: HG_LOCAL=1 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=la
51 pretag hook: HG_LOCAL=0 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=fa
52 pretag hook: HG_LOCAL=0 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=fa
52 pretag.forbid hook: HG_LOCAL=0 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=fa
53 pretag.forbid hook: HG_LOCAL=0 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=fa
53 abort: pretag.forbid hook exited with status 1
54 abort: pretag.forbid hook exited with status 1
54 pretag hook: HG_LOCAL=1 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=fla
55 pretag hook: HG_LOCAL=1 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=fla
55 pretag.forbid hook: HG_LOCAL=1 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=fla
56 pretag.forbid hook: HG_LOCAL=1 HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_TAG=fla
56 abort: pretag.forbid hook exited with status 1
57 abort: pretag.forbid hook exited with status 1
57 4:8ea2ef7ad3e8
58 4:8ea2ef7ad3e8
58 precommit hook: HG_PARENT1=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198
59 precommit hook: HG_PARENT1=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198
59 pretxncommit hook: HG_NODE=fad284daf8c032148abaffcd745dafeceefceb61 HG_PARENT1=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198
60 pretxncommit hook: HG_NODE=fad284daf8c032148abaffcd745dafeceefceb61 HG_PARENT1=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198
60 5:fad284daf8c0
61 5:fad284daf8c0
61 pretxncommit.forbid hook: HG_NODE=fad284daf8c032148abaffcd745dafeceefceb61 HG_PARENT1=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198
62 pretxncommit.forbid hook: HG_NODE=fad284daf8c032148abaffcd745dafeceefceb61 HG_PARENT1=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198
62 transaction abort!
63 transaction abort!
63 rollback completed
64 rollback completed
64 abort: pretxncommit.forbid1 hook exited with status 1
65 abort: pretxncommit.forbid1 hook exited with status 1
65 4:8ea2ef7ad3e8
66 4:8ea2ef7ad3e8
66 precommit hook: HG_PARENT1=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198
67 precommit hook: HG_PARENT1=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198
67 precommit.forbid hook: HG_PARENT1=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198
68 precommit.forbid hook: HG_PARENT1=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198
68 abort: precommit.forbid hook exited with status 1
69 abort: precommit.forbid hook exited with status 1
69 4:8ea2ef7ad3e8
70 4:8ea2ef7ad3e8
70 preupdate hook: HG_PARENT1=b702efe96888
71 preupdate hook: HG_PARENT1=b702efe96888
71 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
72 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
72 preupdate hook: HG_PARENT1=8ea2ef7ad3e8
73 preupdate hook: HG_PARENT1=8ea2ef7ad3e8
73 update hook: HG_ERROR=0 HG_PARENT1=8ea2ef7ad3e8
74 update hook: HG_ERROR=0 HG_PARENT1=8ea2ef7ad3e8
74 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
75 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
75 3:4c52fb2e4022
76 3:4c52fb2e4022
76 prechangegroup.forbid hook: HG_SOURCE=pull HG_URL=file:
77 prechangegroup.forbid hook: HG_SOURCE=pull HG_URL=file:
77 pulling from ../a
78 pulling from ../a
78 searching for changes
79 searching for changes
79 abort: prechangegroup.forbid hook exited with status 1
80 abort: prechangegroup.forbid hook exited with status 1
80 4:8ea2ef7ad3e8
81 4:8ea2ef7ad3e8
81 pretxnchangegroup.forbid hook: HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_SOURCE=pull HG_URL=file:
82 pretxnchangegroup.forbid hook: HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_SOURCE=pull HG_URL=file:
82 pulling from ../a
83 pulling from ../a
83 searching for changes
84 searching for changes
84 adding changesets
85 adding changesets
85 adding manifests
86 adding manifests
86 adding file changes
87 adding file changes
87 added 1 changesets with 1 changes to 1 files
88 added 1 changesets with 1 changes to 1 files
88 transaction abort!
89 transaction abort!
89 rollback completed
90 rollback completed
90 abort: pretxnchangegroup.forbid1 hook exited with status 1
91 abort: pretxnchangegroup.forbid1 hook exited with status 1
91 3:4c52fb2e4022
92 3:4c52fb2e4022
92 preoutgoing hook: HG_SOURCE=pull
93 preoutgoing hook: HG_SOURCE=pull
93 outgoing hook: HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_SOURCE=pull
94 outgoing hook: HG_NODE=8ea2ef7ad3e8cac946c72f1e0c79d6aebc301198 HG_SOURCE=pull
94 pulling from ../a
95 pulling from ../a
95 searching for changes
96 searching for changes
96 adding changesets
97 adding changesets
97 adding manifests
98 adding manifests
98 adding file changes
99 adding file changes
99 added 1 changesets with 1 changes to 1 files
100 added 1 changesets with 1 changes to 1 files
100 (run 'hg update' to get a working copy)
101 (run 'hg update' to get a working copy)
101 rolling back last transaction
102 rolling back last transaction
102 preoutgoing hook: HG_SOURCE=pull
103 preoutgoing hook: HG_SOURCE=pull
103 preoutgoing.forbid hook: HG_SOURCE=pull
104 preoutgoing.forbid hook: HG_SOURCE=pull
104 pulling from ../a
105 pulling from ../a
105 searching for changes
106 searching for changes
106 abort: preoutgoing.forbid hook exited with status 1
107 abort: preoutgoing.forbid hook exited with status 1
107 # test python hooks
108 # test python hooks
108 error: preoutgoing.broken hook raised an exception: unsupported operand type(s) for +: 'int' and 'dict'
109 error: preoutgoing.broken hook raised an exception: unsupported operand type(s) for +: 'int' and 'dict'
109 error: preoutgoing.raise hook raised an exception: exception from hook
110 error: preoutgoing.raise hook raised an exception: exception from hook
110 pulling from ../a
111 pulling from ../a
111 searching for changes
112 searching for changes
112 error: preoutgoing.abort hook failed: raise abort from hook
113 error: preoutgoing.abort hook failed: raise abort from hook
113 abort: raise abort from hook
114 abort: raise abort from hook
114 pulling from ../a
115 pulling from ../a
115 searching for changes
116 searching for changes
116 hook args:
117 hook args:
117 hooktype preoutgoing
118 hooktype preoutgoing
118 source pull
119 source pull
119 abort: preoutgoing.fail hook failed
120 abort: preoutgoing.fail hook failed
120 pulling from ../a
121 pulling from ../a
121 searching for changes
122 searching for changes
122 abort: preoutgoing.uncallable hook is invalid ("hooktests.uncallable" is not callable)
123 abort: preoutgoing.uncallable hook is invalid ("hooktests.uncallable" is not callable)
123 pulling from ../a
124 pulling from ../a
124 searching for changes
125 searching for changes
125 abort: preoutgoing.nohook hook is invalid ("hooktests.nohook" is not defined)
126 abort: preoutgoing.nohook hook is invalid ("hooktests.nohook" is not defined)
126 pulling from ../a
127 pulling from ../a
127 searching for changes
128 searching for changes
128 abort: preoutgoing.nomodule hook is invalid ("nomodule" not in a module)
129 abort: preoutgoing.nomodule hook is invalid ("nomodule" not in a module)
129 pulling from ../a
130 pulling from ../a
130 searching for changes
131 searching for changes
131 abort: preoutgoing.badmodule hook is invalid (import of "nomodule" failed)
132 abort: preoutgoing.badmodule hook is invalid (import of "nomodule" failed)
132 pulling from ../a
133 pulling from ../a
133 searching for changes
134 searching for changes
134 abort: preoutgoing.unreachable hook is invalid (import of "hooktests.container" failed)
135 abort: preoutgoing.unreachable hook is invalid (import of "hooktests.container" failed)
135 pulling from ../a
136 pulling from ../a
136 searching for changes
137 searching for changes
137 hook args:
138 hook args:
138 hooktype preoutgoing
139 hooktype preoutgoing
139 source pull
140 source pull
140 adding changesets
141 adding changesets
141 adding manifests
142 adding manifests
142 adding file changes
143 adding file changes
143 added 1 changesets with 1 changes to 1 files
144 added 1 changesets with 1 changes to 1 files
144 (run 'hg update' to get a working copy)
145 (run 'hg update' to get a working copy)
145 # make sure --traceback works
146 # make sure --traceback works
146 Traceback (most recent call last):
147 Traceback (most recent call last):
147 Automatically installed hook
148 Automatically installed hook
148 foo
149 foo
149 calling hook commit.auto: <function autohook>
150 calling hook commit.auto: <function autohook>
150 Automatically installed hook
151 Automatically installed hook
151 hooks.commit.auto=<function autohook>
152 hooks.commit.auto=<function autohook>
@@ -1,183 +1,184 b''
1 # creating 'remote'
1 # creating 'remote'
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 created new head
3 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
4 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
4 rev offset length base linkrev nodeid p1 p2
5 rev offset length base linkrev nodeid p1 p2
5 0 0 3 0 0 362fef284ce2 000000000000 000000000000
6 0 0 3 0 0 362fef284ce2 000000000000 000000000000
6 1 3 5 1 1 125144f7e028 362fef284ce2 000000000000
7 1 3 5 1 1 125144f7e028 362fef284ce2 000000000000
7 2 8 7 2 2 4c982badb186 125144f7e028 000000000000
8 2 8 7 2 2 4c982badb186 125144f7e028 000000000000
8 3 15 9 3 3 19b1fc555737 4c982badb186 000000000000
9 3 15 9 3 3 19b1fc555737 4c982badb186 000000000000
9 rev offset length base linkrev nodeid p1 p2
10 rev offset length base linkrev nodeid p1 p2
10 0 0 75 0 7 905359268f77 000000000000 000000000000
11 0 0 75 0 7 905359268f77 000000000000 000000000000
11 rev offset length base linkrev nodeid p1 p2
12 rev offset length base linkrev nodeid p1 p2
12 0 0 75 0 8 905359268f77 000000000000 000000000000
13 0 0 75 0 8 905359268f77 000000000000 000000000000
13 rev offset length base linkrev nodeid p1 p2
14 rev offset length base linkrev nodeid p1 p2
14 0 0 8 0 6 12ab3bcc5ea4 000000000000 000000000000
15 0 0 8 0 6 12ab3bcc5ea4 000000000000 000000000000
15 rev offset length base linkrev nodeid p1 p2
16 rev offset length base linkrev nodeid p1 p2
16 0 0 48 0 0 43eadb1d2d06 000000000000 000000000000
17 0 0 48 0 0 43eadb1d2d06 000000000000 000000000000
17 1 48 48 1 1 8b89697eba2c 43eadb1d2d06 000000000000
18 1 48 48 1 1 8b89697eba2c 43eadb1d2d06 000000000000
18 2 96 48 2 2 626a32663c2f 8b89697eba2c 000000000000
19 2 96 48 2 2 626a32663c2f 8b89697eba2c 000000000000
19 3 144 48 3 3 f54c32f13478 626a32663c2f 000000000000
20 3 144 48 3 3 f54c32f13478 626a32663c2f 000000000000
20 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000
21 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000
21 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000
22 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000
22 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000
23 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000
23 checking changesets
24 checking changesets
24 checking manifests
25 checking manifests
25 crosschecking files in changesets and manifests
26 crosschecking files in changesets and manifests
26 checking files
27 checking files
27 4 files, 9 changesets, 7 total revisions
28 4 files, 9 changesets, 7 total revisions
28 # Starting server
29 # Starting server
29 # clone remote via stream
30 # clone remote via stream
30 requesting all changes
31 requesting all changes
31 adding changesets
32 adding changesets
32 adding manifests
33 adding manifests
33 adding file changes
34 adding file changes
34 added 1 changesets with 1 changes to 1 files
35 added 1 changesets with 1 changes to 1 files
35 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
36 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
36 checking changesets
37 checking changesets
37 checking manifests
38 checking manifests
38 crosschecking files in changesets and manifests
39 crosschecking files in changesets and manifests
39 checking files
40 checking files
40 1 files, 1 changesets, 1 total revisions
41 1 files, 1 changesets, 1 total revisions
41 requesting all changes
42 requesting all changes
42 adding changesets
43 adding changesets
43 adding manifests
44 adding manifests
44 adding file changes
45 adding file changes
45 added 2 changesets with 2 changes to 1 files
46 added 2 changesets with 2 changes to 1 files
46 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
47 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
47 checking changesets
48 checking changesets
48 checking manifests
49 checking manifests
49 crosschecking files in changesets and manifests
50 crosschecking files in changesets and manifests
50 checking files
51 checking files
51 1 files, 2 changesets, 2 total revisions
52 1 files, 2 changesets, 2 total revisions
52 requesting all changes
53 requesting all changes
53 adding changesets
54 adding changesets
54 adding manifests
55 adding manifests
55 adding file changes
56 adding file changes
56 added 3 changesets with 3 changes to 1 files
57 added 3 changesets with 3 changes to 1 files
57 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
58 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
58 checking changesets
59 checking changesets
59 checking manifests
60 checking manifests
60 crosschecking files in changesets and manifests
61 crosschecking files in changesets and manifests
61 checking files
62 checking files
62 1 files, 3 changesets, 3 total revisions
63 1 files, 3 changesets, 3 total revisions
63 requesting all changes
64 requesting all changes
64 adding changesets
65 adding changesets
65 adding manifests
66 adding manifests
66 adding file changes
67 adding file changes
67 added 4 changesets with 4 changes to 1 files
68 added 4 changesets with 4 changes to 1 files
68 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
69 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
69 checking changesets
70 checking changesets
70 checking manifests
71 checking manifests
71 crosschecking files in changesets and manifests
72 crosschecking files in changesets and manifests
72 checking files
73 checking files
73 1 files, 4 changesets, 4 total revisions
74 1 files, 4 changesets, 4 total revisions
74 requesting all changes
75 requesting all changes
75 adding changesets
76 adding changesets
76 adding manifests
77 adding manifests
77 adding file changes
78 adding file changes
78 added 2 changesets with 2 changes to 1 files
79 added 2 changesets with 2 changes to 1 files
79 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
80 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
80 checking changesets
81 checking changesets
81 checking manifests
82 checking manifests
82 crosschecking files in changesets and manifests
83 crosschecking files in changesets and manifests
83 checking files
84 checking files
84 1 files, 2 changesets, 2 total revisions
85 1 files, 2 changesets, 2 total revisions
85 requesting all changes
86 requesting all changes
86 adding changesets
87 adding changesets
87 adding manifests
88 adding manifests
88 adding file changes
89 adding file changes
89 added 3 changesets with 3 changes to 1 files
90 added 3 changesets with 3 changes to 1 files
90 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
91 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
91 checking changesets
92 checking changesets
92 checking manifests
93 checking manifests
93 crosschecking files in changesets and manifests
94 crosschecking files in changesets and manifests
94 checking files
95 checking files
95 1 files, 3 changesets, 3 total revisions
96 1 files, 3 changesets, 3 total revisions
96 requesting all changes
97 requesting all changes
97 adding changesets
98 adding changesets
98 adding manifests
99 adding manifests
99 adding file changes
100 adding file changes
100 added 4 changesets with 5 changes to 2 files
101 added 4 changesets with 5 changes to 2 files
101 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
102 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
102 checking changesets
103 checking changesets
103 checking manifests
104 checking manifests
104 crosschecking files in changesets and manifests
105 crosschecking files in changesets and manifests
105 checking files
106 checking files
106 2 files, 4 changesets, 5 total revisions
107 2 files, 4 changesets, 5 total revisions
107 requesting all changes
108 requesting all changes
108 adding changesets
109 adding changesets
109 adding manifests
110 adding manifests
110 adding file changes
111 adding file changes
111 added 5 changesets with 6 changes to 3 files
112 added 5 changesets with 6 changes to 3 files
112 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
113 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
113 checking changesets
114 checking changesets
114 checking manifests
115 checking manifests
115 crosschecking files in changesets and manifests
116 crosschecking files in changesets and manifests
116 checking files
117 checking files
117 3 files, 5 changesets, 6 total revisions
118 3 files, 5 changesets, 6 total revisions
118 requesting all changes
119 requesting all changes
119 adding changesets
120 adding changesets
120 adding manifests
121 adding manifests
121 adding file changes
122 adding file changes
122 added 5 changesets with 5 changes to 2 files
123 added 5 changesets with 5 changes to 2 files
123 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
124 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
124 checking changesets
125 checking changesets
125 checking manifests
126 checking manifests
126 crosschecking files in changesets and manifests
127 crosschecking files in changesets and manifests
127 checking files
128 checking files
128 2 files, 5 changesets, 5 total revisions
129 2 files, 5 changesets, 5 total revisions
129 pulling from ../test-7
130 pulling from ../test-7
130 searching for changes
131 searching for changes
131 adding changesets
132 adding changesets
132 adding manifests
133 adding manifests
133 adding file changes
134 adding file changes
134 added 4 changesets with 2 changes to 3 files (+1 heads)
135 added 4 changesets with 2 changes to 3 files (+1 heads)
135 (run 'hg heads' to see heads, 'hg merge' to merge)
136 (run 'hg heads' to see heads, 'hg merge' to merge)
136 checking changesets
137 checking changesets
137 checking manifests
138 checking manifests
138 crosschecking files in changesets and manifests
139 crosschecking files in changesets and manifests
139 checking files
140 checking files
140 4 files, 9 changesets, 7 total revisions
141 4 files, 9 changesets, 7 total revisions
141 pulling from http://localhost/
142 pulling from http://localhost/
142 searching for changes
143 searching for changes
143 adding changesets
144 adding changesets
144 adding manifests
145 adding manifests
145 adding file changes
146 adding file changes
146 added 1 changesets with 0 changes to 1 files (+1 heads)
147 added 1 changesets with 0 changes to 1 files (+1 heads)
147 (run 'hg heads' to see heads, 'hg merge' to merge)
148 (run 'hg heads' to see heads, 'hg merge' to merge)
148 checking changesets
149 checking changesets
149 checking manifests
150 checking manifests
150 crosschecking files in changesets and manifests
151 crosschecking files in changesets and manifests
151 checking files
152 checking files
152 1 files, 3 changesets, 2 total revisions
153 1 files, 3 changesets, 2 total revisions
153 pulling from http://localhost/
154 pulling from http://localhost/
154 searching for changes
155 searching for changes
155 adding changesets
156 adding changesets
156 adding manifests
157 adding manifests
157 adding file changes
158 adding file changes
158 added 6 changesets with 5 changes to 4 files
159 added 6 changesets with 5 changes to 4 files
159 (run 'hg update' to get a working copy)
160 (run 'hg update' to get a working copy)
160 pulling from http://localhost/
161 pulling from http://localhost/
161 searching for changes
162 searching for changes
162 adding changesets
163 adding changesets
163 adding manifests
164 adding manifests
164 adding file changes
165 adding file changes
165 added 2 changesets with 0 changes to 1 files (+1 heads)
166 added 2 changesets with 0 changes to 1 files (+1 heads)
166 (run 'hg heads' to see heads, 'hg merge' to merge)
167 (run 'hg heads' to see heads, 'hg merge' to merge)
167 checking changesets
168 checking changesets
168 checking manifests
169 checking manifests
169 crosschecking files in changesets and manifests
170 crosschecking files in changesets and manifests
170 checking files
171 checking files
171 1 files, 5 changesets, 3 total revisions
172 1 files, 5 changesets, 3 total revisions
172 pulling from http://localhost/
173 pulling from http://localhost/
173 searching for changes
174 searching for changes
174 adding changesets
175 adding changesets
175 adding manifests
176 adding manifests
176 adding file changes
177 adding file changes
177 added 4 changesets with 4 changes to 4 files
178 added 4 changesets with 4 changes to 4 files
178 (run 'hg update' to get a working copy)
179 (run 'hg update' to get a working copy)
179 checking changesets
180 checking changesets
180 checking manifests
181 checking manifests
181 crosschecking files in changesets and manifests
182 crosschecking files in changesets and manifests
182 checking files
183 checking files
183 4 files, 9 changesets, 7 total revisions
184 4 files, 9 changesets, 7 total revisions
@@ -1,50 +1,51 b''
1 adding bar
1 adding bar
2 adding foo
2 adding foo
3 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
4 created new head
4 % start imerge
5 % start imerge
5 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
6 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
6 (branch merge, don't forget to commit)
7 (branch merge, don't forget to commit)
7 U foo
8 U foo
8 foo
9 foo
9 bar
10 bar
10 bar
11 bar
11 bar
12 bar
12 % status -v
13 % status -v
13 merging e6da46716401 and 30d266f502e7
14 merging e6da46716401 and 30d266f502e7
14 U foo (foo2)
15 U foo (foo2)
15 % next
16 % next
16 foo
17 foo
17 % merge next
18 % merge next
18 merging foo and foo2
19 merging foo and foo2
19 all conflicts resolved
20 all conflicts resolved
20 % unresolve
21 % unresolve
21 % merge foo
22 % merge foo
22 merging foo and foo2
23 merging foo and foo2
23 all conflicts resolved
24 all conflicts resolved
24 % save
25 % save
25 % load
26 % load
26 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
27 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
27 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
28 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
28 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
29 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
29 (branch merge, don't forget to commit)
30 (branch merge, don't forget to commit)
30 R foo
31 R foo
31 all conflicts resolved
32 all conflicts resolved
32 foo
33 foo
33 changeset: 3:fa9a6defdcaf
34 changeset: 3:fa9a6defdcaf
34 tag: tip
35 tag: tip
35 parent: 2:e6da46716401
36 parent: 2:e6da46716401
36 parent: 1:30d266f502e7
37 parent: 1:30d266f502e7
37 user: test
38 user: test
38 date: Thu Jan 01 00:00:03 1970 +0000
39 date: Thu Jan 01 00:00:03 1970 +0000
39 files: foo foo2
40 files: foo foo2
40 description:
41 description:
41 merged
42 merged
42
43
43
44
44 % nothing to merge -- tip
45 % nothing to merge -- tip
45 abort: there is nothing to merge
46 abort: there is nothing to merge
46 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
47 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
47 % nothing to merge
48 % nothing to merge
48 abort: there is nothing to merge - use "hg update" instead
49 abort: there is nothing to merge - use "hg update" instead
49 % load unknown parent
50 % load unknown parent
50 abort: merge parent e6da46716401 not in repository
51 abort: merge parent e6da46716401 not in repository
@@ -1,242 +1,243 b''
1 adding a
1 adding a
2 adding d1/d2/a
2 adding d1/d2/a
3 % import exported patch
3 % import exported patch
4 requesting all changes
4 requesting all changes
5 adding changesets
5 adding changesets
6 adding manifests
6 adding manifests
7 adding file changes
7 adding file changes
8 added 1 changesets with 2 changes to 2 files
8 added 1 changesets with 2 changes to 2 files
9 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
9 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
10 applying ../tip.patch
10 applying ../tip.patch
11 % message should be same
11 % message should be same
12 summary: second change
12 summary: second change
13 % committer should be same
13 % committer should be same
14 user: someone
14 user: someone
15 % import of plain diff should fail without message
15 % import of plain diff should fail without message
16 requesting all changes
16 requesting all changes
17 adding changesets
17 adding changesets
18 adding manifests
18 adding manifests
19 adding file changes
19 adding file changes
20 added 1 changesets with 2 changes to 2 files
20 added 1 changesets with 2 changes to 2 files
21 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
21 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
22 applying ../tip.patch
22 applying ../tip.patch
23 transaction abort!
23 transaction abort!
24 rollback completed
24 rollback completed
25 abort: empty commit message
25 abort: empty commit message
26 % import of plain diff should be ok with message
26 % import of plain diff should be ok with message
27 requesting all changes
27 requesting all changes
28 adding changesets
28 adding changesets
29 adding manifests
29 adding manifests
30 adding file changes
30 adding file changes
31 added 1 changesets with 2 changes to 2 files
31 added 1 changesets with 2 changes to 2 files
32 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
32 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
33 applying ../tip.patch
33 applying ../tip.patch
34 % import of plain diff with specific date and user
34 % import of plain diff with specific date and user
35 requesting all changes
35 requesting all changes
36 adding changesets
36 adding changesets
37 adding manifests
37 adding manifests
38 adding file changes
38 adding file changes
39 added 1 changesets with 2 changes to 2 files
39 added 1 changesets with 2 changes to 2 files
40 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
40 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
41 applying ../tip.patch
41 applying ../tip.patch
42 changeset: 1:ca68f19f3a40
42 changeset: 1:ca68f19f3a40
43 tag: tip
43 tag: tip
44 user: user@nowhere.net
44 user: user@nowhere.net
45 date: Thu Jan 01 00:00:01 1970 +0000
45 date: Thu Jan 01 00:00:01 1970 +0000
46 files: a
46 files: a
47 description:
47 description:
48 patch
48 patch
49
49
50
50
51 diff -r 80971e65b431 -r ca68f19f3a40 a
51 diff -r 80971e65b431 -r ca68f19f3a40 a
52 --- a/a Thu Jan 01 00:00:00 1970 +0000
52 --- a/a Thu Jan 01 00:00:00 1970 +0000
53 +++ b/a Thu Jan 01 00:00:01 1970 +0000
53 +++ b/a Thu Jan 01 00:00:01 1970 +0000
54 @@ -1,1 +1,2 @@
54 @@ -1,1 +1,2 @@
55 line 1
55 line 1
56 +line 2
56 +line 2
57
57
58 % import of plain diff should be ok with --no-commit
58 % import of plain diff should be ok with --no-commit
59 requesting all changes
59 requesting all changes
60 adding changesets
60 adding changesets
61 adding manifests
61 adding manifests
62 adding file changes
62 adding file changes
63 added 1 changesets with 2 changes to 2 files
63 added 1 changesets with 2 changes to 2 files
64 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
64 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
65 applying ../tip.patch
65 applying ../tip.patch
66 diff -r 80971e65b431 a
66 diff -r 80971e65b431 a
67 --- a/a
67 --- a/a
68 +++ b/a
68 +++ b/a
69 @@ -1,1 +1,2 @@
69 @@ -1,1 +1,2 @@
70 line 1
70 line 1
71 +line 2
71 +line 2
72 % hg -R repo import
72 % hg -R repo import
73 requesting all changes
73 requesting all changes
74 adding changesets
74 adding changesets
75 adding manifests
75 adding manifests
76 adding file changes
76 adding file changes
77 added 1 changesets with 2 changes to 2 files
77 added 1 changesets with 2 changes to 2 files
78 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
78 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
79 applying tip.patch
79 applying tip.patch
80 % import from stdin
80 % import from stdin
81 requesting all changes
81 requesting all changes
82 adding changesets
82 adding changesets
83 adding manifests
83 adding manifests
84 adding file changes
84 adding file changes
85 added 1 changesets with 2 changes to 2 files
85 added 1 changesets with 2 changes to 2 files
86 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
86 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
87 applying patch from stdin
87 applying patch from stdin
88 % override commit message
88 % override commit message
89 requesting all changes
89 requesting all changes
90 adding changesets
90 adding changesets
91 adding manifests
91 adding manifests
92 adding file changes
92 adding file changes
93 added 1 changesets with 2 changes to 2 files
93 added 1 changesets with 2 changes to 2 files
94 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
94 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
95 applying patch from stdin
95 applying patch from stdin
96 summary: override
96 summary: override
97 % plain diff in email, subject, message body
97 % plain diff in email, subject, message body
98 requesting all changes
98 requesting all changes
99 adding changesets
99 adding changesets
100 adding manifests
100 adding manifests
101 adding file changes
101 adding file changes
102 added 1 changesets with 2 changes to 2 files
102 added 1 changesets with 2 changes to 2 files
103 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
103 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
104 applying ../msg.patch
104 applying ../msg.patch
105 user: email patcher
105 user: email patcher
106 summary: email patch
106 summary: email patch
107 % plain diff in email, no subject, message body
107 % plain diff in email, no subject, message body
108 requesting all changes
108 requesting all changes
109 adding changesets
109 adding changesets
110 adding manifests
110 adding manifests
111 adding file changes
111 adding file changes
112 added 1 changesets with 2 changes to 2 files
112 added 1 changesets with 2 changes to 2 files
113 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
113 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
114 applying patch from stdin
114 applying patch from stdin
115 % plain diff in email, subject, no message body
115 % plain diff in email, subject, no message body
116 requesting all changes
116 requesting all changes
117 adding changesets
117 adding changesets
118 adding manifests
118 adding manifests
119 adding file changes
119 adding file changes
120 added 1 changesets with 2 changes to 2 files
120 added 1 changesets with 2 changes to 2 files
121 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
121 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
122 applying patch from stdin
122 applying patch from stdin
123 % plain diff in email, no subject, no message body, should fail
123 % plain diff in email, no subject, no message body, should fail
124 requesting all changes
124 requesting all changes
125 adding changesets
125 adding changesets
126 adding manifests
126 adding manifests
127 adding file changes
127 adding file changes
128 added 1 changesets with 2 changes to 2 files
128 added 1 changesets with 2 changes to 2 files
129 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
129 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
130 applying patch from stdin
130 applying patch from stdin
131 transaction abort!
131 transaction abort!
132 rollback completed
132 rollback completed
133 abort: empty commit message
133 abort: empty commit message
134 % hg export in email, should use patch header
134 % hg export in email, should use patch header
135 requesting all changes
135 requesting all changes
136 adding changesets
136 adding changesets
137 adding manifests
137 adding manifests
138 adding file changes
138 adding file changes
139 added 1 changesets with 2 changes to 2 files
139 added 1 changesets with 2 changes to 2 files
140 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
140 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
141 applying patch from stdin
141 applying patch from stdin
142 summary: second change
142 summary: second change
143 % plain diff in email, [PATCH] subject, message body with subject
143 % plain diff in email, [PATCH] subject, message body with subject
144 requesting all changes
144 requesting all changes
145 adding changesets
145 adding changesets
146 adding manifests
146 adding manifests
147 adding file changes
147 adding file changes
148 added 1 changesets with 2 changes to 2 files
148 added 1 changesets with 2 changes to 2 files
149 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
149 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
150 applying patch from stdin
150 applying patch from stdin
151 email patch
151 email patch
152
152
153 next line
153 next line
154 ---
154 ---
155 % import patch1 patch2; rollback
155 % import patch1 patch2; rollback
156 parent: 0
156 parent: 0
157 applying ../patch1
157 applying ../patch1
158 applying ../patch2
158 applying ../patch2
159 rolling back last transaction
159 rolling back last transaction
160 parent: 1
160 parent: 1
161 % hg import in a subdirectory
161 % hg import in a subdirectory
162 requesting all changes
162 requesting all changes
163 adding changesets
163 adding changesets
164 adding manifests
164 adding manifests
165 adding file changes
165 adding file changes
166 added 1 changesets with 2 changes to 2 files
166 added 1 changesets with 2 changes to 2 files
167 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
167 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
168 applying ../../../tip.patch
168 applying ../../../tip.patch
169 % message should be 'subdir change'
169 % message should be 'subdir change'
170 summary: subdir change
170 summary: subdir change
171 % committer should be 'someoneelse'
171 % committer should be 'someoneelse'
172 user: someoneelse
172 user: someoneelse
173 % should be empty
173 % should be empty
174 % test fuzziness
174 % test fuzziness
175 adding a
175 adding a
176 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
176 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
177 created new head
177 applying tip.patch
178 applying tip.patch
178 patching file a
179 patching file a
179 Hunk #1 succeeded at 1 with fuzz 2 (offset -2 lines).
180 Hunk #1 succeeded at 1 with fuzz 2 (offset -2 lines).
180 a
181 a
181 adding a
182 adding a
182 adding b1
183 adding b1
183 adding c1
184 adding c1
184 adding d
185 adding d
185 diff --git a/a b/a
186 diff --git a/a b/a
186 --- a/a
187 --- a/a
187 +++ b/a
188 +++ b/a
188 @@ -0,0 +1,1 @@
189 @@ -0,0 +1,1 @@
189 +a
190 +a
190 diff --git a/b1 b/b2
191 diff --git a/b1 b/b2
191 rename from b1
192 rename from b1
192 rename to b2
193 rename to b2
193 --- a/b1
194 --- a/b1
194 +++ b/b2
195 +++ b/b2
195 @@ -0,0 +1,1 @@
196 @@ -0,0 +1,1 @@
196 +b
197 +b
197 diff --git a/c1 b/c1
198 diff --git a/c1 b/c1
198 --- a/c1
199 --- a/c1
199 +++ b/c1
200 +++ b/c1
200 @@ -0,0 +1,1 @@
201 @@ -0,0 +1,1 @@
201 +c
202 +c
202 diff --git a/c1 b/c2
203 diff --git a/c1 b/c2
203 copy from c1
204 copy from c1
204 copy to c2
205 copy to c2
205 --- a/c1
206 --- a/c1
206 +++ b/c2
207 +++ b/c2
207 @@ -0,0 +1,1 @@
208 @@ -0,0 +1,1 @@
208 +c
209 +c
209 diff --git a/d b/d
210 diff --git a/d b/d
210 --- a/d
211 --- a/d
211 +++ b/d
212 +++ b/d
212 @@ -1,1 +0,0 @@
213 @@ -1,1 +0,0 @@
213 -d
214 -d
214 4 files updated, 0 files merged, 2 files removed, 0 files unresolved
215 4 files updated, 0 files merged, 2 files removed, 0 files unresolved
215 applying empty.diff
216 applying empty.diff
216 % a file
217 % a file
217 a
218 a
218 % b1 file
219 % b1 file
219 % b2 file
220 % b2 file
220 b
221 b
221 % c1 file
222 % c1 file
222 c
223 c
223 % c2 file
224 % c2 file
224 c
225 c
225 % d file
226 % d file
226 % test trailing binary removal
227 % test trailing binary removal
227 adding a
228 adding a
228 adding b
229 adding b
229 R a
230 R a
230 R b
231 R b
231 diff --git a/a b/a
232 diff --git a/a b/a
232 diff --git a/b b/b
233 diff --git a/b b/b
233 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
234 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
234 applying remove.diff
235 applying remove.diff
235 % test update+rename with common name (issue 927)
236 % test update+rename with common name (issue 927)
236 adding a
237 adding a
237 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
238 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
238 applying copy.diff
239 applying copy.diff
239 % view a
240 % view a
240 a
241 a
241 % view a2
242 % view a2
242 a
243 a
@@ -1,10 +1,11 b''
1 adding src/a.c
1 adding src/a.c
2 moving src/a.c to source/a.c
2 moving src/a.c to source/a.c
3 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
4 created new head
4 ? src/a.o
5 ? src/a.o
5 merging src/a.c and source/a.c
6 merging src/a.c and source/a.c
6 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
7 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
7 (branch merge, don't forget to commit)
8 (branch merge, don't forget to commit)
8 M source/a.c
9 M source/a.c
9 R src/a.c
10 R src/a.c
10 ? source/a.o
11 ? source/a.o
@@ -1,55 +1,57 b''
1 adding 1
1 adding 1
2 adding 2
2 adding 2
3 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
4 created new head
4 resolving manifests
5 resolving manifests
5 overwrite None partial False
6 overwrite None partial False
6 ancestor 81f4b099af3d local c64f439569a9+ remote 2f8037f47a5c
7 ancestor 81f4b099af3d local c64f439569a9+ remote 2f8037f47a5c
7 searching for copies back to rev 1
8 searching for copies back to rev 1
8 unmatched files in other:
9 unmatched files in other:
9 1a
10 1a
10 all copies found (* = to merge, ! = divergent):
11 all copies found (* = to merge, ! = divergent):
11 1a -> 1
12 1a -> 1
12 checking for directory renames
13 checking for directory renames
13 1: other deleted -> r
14 1: other deleted -> r
14 1a: remote created -> g
15 1a: remote created -> g
15 removing 1
16 removing 1
16 getting 1a
17 getting 1a
17 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
18 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
18 (branch merge, don't forget to commit)
19 (branch merge, don't forget to commit)
19 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
20 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
21 created new head
20 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
22 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
21 resolving manifests
23 resolving manifests
22 overwrite None partial False
24 overwrite None partial False
23 ancestor c64f439569a9 local ac7575e3c052+ remote 746e9549ea96
25 ancestor c64f439569a9 local ac7575e3c052+ remote 746e9549ea96
24 searching for copies back to rev 1
26 searching for copies back to rev 1
25 unmatched files in local:
27 unmatched files in local:
26 1a
28 1a
27 all copies found (* = to merge, ! = divergent):
29 all copies found (* = to merge, ! = divergent):
28 1a -> 1 *
30 1a -> 1 *
29 checking for directory renames
31 checking for directory renames
30 1a: local moved to 1 -> m
32 1a: local moved to 1 -> m
31 picked tool 'internal:merge' for 1a (binary False symlink False)
33 picked tool 'internal:merge' for 1a (binary False symlink False)
32 merging 1a and 1
34 merging 1a and 1
33 my 1a@ac7575e3c052+ other 1@746e9549ea96 ancestor 1@81f4b099af3d
35 my 1a@ac7575e3c052+ other 1@746e9549ea96 ancestor 1@81f4b099af3d
34 premerge successful
36 premerge successful
35 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
37 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
36 (branch merge, don't forget to commit)
38 (branch merge, don't forget to commit)
37 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
39 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
38 resolving manifests
40 resolving manifests
39 overwrite None partial False
41 overwrite None partial False
40 ancestor c64f439569a9 local 746e9549ea96+ remote ac7575e3c052
42 ancestor c64f439569a9 local 746e9549ea96+ remote ac7575e3c052
41 searching for copies back to rev 1
43 searching for copies back to rev 1
42 unmatched files in other:
44 unmatched files in other:
43 1a
45 1a
44 all copies found (* = to merge, ! = divergent):
46 all copies found (* = to merge, ! = divergent):
45 1a -> 1 *
47 1a -> 1 *
46 checking for directory renames
48 checking for directory renames
47 1: remote moved to 1a -> m
49 1: remote moved to 1a -> m
48 copying 1 to 1a
50 copying 1 to 1a
49 picked tool 'internal:merge' for 1 (binary False symlink False)
51 picked tool 'internal:merge' for 1 (binary False symlink False)
50 merging 1 and 1a
52 merging 1 and 1a
51 my 1@746e9549ea96+ other 1a@ac7575e3c052 ancestor 1@81f4b099af3d
53 my 1@746e9549ea96+ other 1a@ac7575e3c052 ancestor 1@81f4b099af3d
52 premerge successful
54 premerge successful
53 removing 1
55 removing 1
54 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
56 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
55 (branch merge, don't forget to commit)
57 (branch merge, don't forget to commit)
@@ -1,223 +1,226 b''
1 adding a
1 adding a
2 changeset: 0:8580ff50825a
2 changeset: 0:8580ff50825a
3 user: test
3 user: test
4 date: Thu Jan 01 00:00:01 1970 +0000
4 date: Thu Jan 01 00:00:01 1970 +0000
5 summary: a
5 summary: a
6
6
7 % -f, directory
7 % -f, directory
8 abort: can only follow copies/renames for explicit file names
8 abort: can only follow copies/renames for explicit file names
9 % -f, but no args
9 % -f, but no args
10 changeset: 4:b30c444c7c84
10 changeset: 4:b30c444c7c84
11 tag: tip
11 tag: tip
12 user: test
12 user: test
13 date: Thu Jan 01 00:00:05 1970 +0000
13 date: Thu Jan 01 00:00:05 1970 +0000
14 summary: e
14 summary: e
15
15
16 changeset: 3:16b60bf3f99a
16 changeset: 3:16b60bf3f99a
17 user: test
17 user: test
18 date: Thu Jan 01 00:00:04 1970 +0000
18 date: Thu Jan 01 00:00:04 1970 +0000
19 summary: d
19 summary: d
20
20
21 changeset: 2:21fba396af4c
21 changeset: 2:21fba396af4c
22 user: test
22 user: test
23 date: Thu Jan 01 00:00:03 1970 +0000
23 date: Thu Jan 01 00:00:03 1970 +0000
24 summary: c
24 summary: c
25
25
26 changeset: 1:c0296dabce9b
26 changeset: 1:c0296dabce9b
27 user: test
27 user: test
28 date: Thu Jan 01 00:00:02 1970 +0000
28 date: Thu Jan 01 00:00:02 1970 +0000
29 summary: b
29 summary: b
30
30
31 changeset: 0:8580ff50825a
31 changeset: 0:8580ff50825a
32 user: test
32 user: test
33 date: Thu Jan 01 00:00:01 1970 +0000
33 date: Thu Jan 01 00:00:01 1970 +0000
34 summary: a
34 summary: a
35
35
36 % one rename
36 % one rename
37 changeset: 0:8580ff50825a
37 changeset: 0:8580ff50825a
38 user: test
38 user: test
39 date: Thu Jan 01 00:00:01 1970 +0000
39 date: Thu Jan 01 00:00:01 1970 +0000
40 files: a
40 files: a
41 description:
41 description:
42 a
42 a
43
43
44
44
45 % many renames
45 % many renames
46 changeset: 4:b30c444c7c84
46 changeset: 4:b30c444c7c84
47 tag: tip
47 tag: tip
48 user: test
48 user: test
49 date: Thu Jan 01 00:00:05 1970 +0000
49 date: Thu Jan 01 00:00:05 1970 +0000
50 files: dir/b e
50 files: dir/b e
51 description:
51 description:
52 e
52 e
53
53
54
54
55 changeset: 2:21fba396af4c
55 changeset: 2:21fba396af4c
56 user: test
56 user: test
57 date: Thu Jan 01 00:00:03 1970 +0000
57 date: Thu Jan 01 00:00:03 1970 +0000
58 files: b dir/b
58 files: b dir/b
59 description:
59 description:
60 c
60 c
61
61
62
62
63 changeset: 1:c0296dabce9b
63 changeset: 1:c0296dabce9b
64 user: test
64 user: test
65 date: Thu Jan 01 00:00:02 1970 +0000
65 date: Thu Jan 01 00:00:02 1970 +0000
66 files: b
66 files: b
67 description:
67 description:
68 b
68 b
69
69
70
70
71 changeset: 0:8580ff50825a
71 changeset: 0:8580ff50825a
72 user: test
72 user: test
73 date: Thu Jan 01 00:00:01 1970 +0000
73 date: Thu Jan 01 00:00:01 1970 +0000
74 files: a
74 files: a
75 description:
75 description:
76 a
76 a
77
77
78
78
79 % log copies
79 % log copies
80 4 e (dir/b)
80 4 e (dir/b)
81 3 b (a)
81 3 b (a)
82 2 dir/b (b)
82 2 dir/b (b)
83 1 b (a)
83 1 b (a)
84 0
84 0
85 % log copies, non-linear manifest
85 % log copies, non-linear manifest
86 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
86 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
87 adding foo
87 adding foo
88 created new head
88 5 e (dir/b)
89 5 e (dir/b)
89 % log copies, execute bit set
90 % log copies, execute bit set
90 6
91 6
91 % log -p d
92 % log -p d
92 changeset: 3:16b60bf3f99a
93 changeset: 3:16b60bf3f99a
93 user: test
94 user: test
94 date: Thu Jan 01 00:00:04 1970 +0000
95 date: Thu Jan 01 00:00:04 1970 +0000
95 files: a b d
96 files: a b d
96 description:
97 description:
97 d
98 d
98
99
99
100
100 diff -r 21fba396af4c -r 16b60bf3f99a d
101 diff -r 21fba396af4c -r 16b60bf3f99a d
101 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
102 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
102 +++ b/d Thu Jan 01 00:00:04 1970 +0000
103 +++ b/d Thu Jan 01 00:00:04 1970 +0000
103 @@ -0,0 +1,1 @@
104 @@ -0,0 +1,1 @@
104 +a
105 +a
105
106
106 adding base
107 adding base
107 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
108 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
108 adding b1
109 adding b1
110 created new head
109 % log -f
111 % log -f
110 changeset: 3:e62f78d544b4
112 changeset: 3:e62f78d544b4
111 tag: tip
113 tag: tip
112 parent: 1:3d5bf5654eda
114 parent: 1:3d5bf5654eda
113 user: test
115 user: test
114 date: Thu Jan 01 00:00:01 1970 +0000
116 date: Thu Jan 01 00:00:01 1970 +0000
115 summary: b1
117 summary: b1
116
118
117 changeset: 1:3d5bf5654eda
119 changeset: 1:3d5bf5654eda
118 user: test
120 user: test
119 date: Thu Jan 01 00:00:01 1970 +0000
121 date: Thu Jan 01 00:00:01 1970 +0000
120 summary: r1
122 summary: r1
121
123
122 changeset: 0:67e992f2c4f3
124 changeset: 0:67e992f2c4f3
123 user: test
125 user: test
124 date: Thu Jan 01 00:00:01 1970 +0000
126 date: Thu Jan 01 00:00:01 1970 +0000
125 summary: base
127 summary: base
126
128
127 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
129 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
128 adding b2
130 adding b2
131 created new head
129 % log -f -r 1:tip
132 % log -f -r 1:tip
130 changeset: 1:3d5bf5654eda
133 changeset: 1:3d5bf5654eda
131 user: test
134 user: test
132 date: Thu Jan 01 00:00:01 1970 +0000
135 date: Thu Jan 01 00:00:01 1970 +0000
133 summary: r1
136 summary: r1
134
137
135 changeset: 2:60c670bf5b30
138 changeset: 2:60c670bf5b30
136 user: test
139 user: test
137 date: Thu Jan 01 00:00:01 1970 +0000
140 date: Thu Jan 01 00:00:01 1970 +0000
138 summary: r2
141 summary: r2
139
142
140 changeset: 3:e62f78d544b4
143 changeset: 3:e62f78d544b4
141 parent: 1:3d5bf5654eda
144 parent: 1:3d5bf5654eda
142 user: test
145 user: test
143 date: Thu Jan 01 00:00:01 1970 +0000
146 date: Thu Jan 01 00:00:01 1970 +0000
144 summary: b1
147 summary: b1
145
148
146 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
149 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
147 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
150 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
148 (branch merge, don't forget to commit)
151 (branch merge, don't forget to commit)
149 % log -r . with two parents
152 % log -r . with two parents
150 warning: working directory has two parents, tag '.' uses the first
153 warning: working directory has two parents, tag '.' uses the first
151 changeset: 3:e62f78d544b4
154 changeset: 3:e62f78d544b4
152 parent: 1:3d5bf5654eda
155 parent: 1:3d5bf5654eda
153 user: test
156 user: test
154 date: Thu Jan 01 00:00:01 1970 +0000
157 date: Thu Jan 01 00:00:01 1970 +0000
155 summary: b1
158 summary: b1
156
159
157 % log -r . with one parent
160 % log -r . with one parent
158 changeset: 5:302e9dd6890d
161 changeset: 5:302e9dd6890d
159 tag: tip
162 tag: tip
160 parent: 3:e62f78d544b4
163 parent: 3:e62f78d544b4
161 parent: 4:ddb82e70d1a1
164 parent: 4:ddb82e70d1a1
162 user: test
165 user: test
163 date: Thu Jan 01 00:00:01 1970 +0000
166 date: Thu Jan 01 00:00:01 1970 +0000
164 summary: m12
167 summary: m12
165
168
166 % log --follow-first
169 % log --follow-first
167 changeset: 6:2404bbcab562
170 changeset: 6:2404bbcab562
168 tag: tip
171 tag: tip
169 user: test
172 user: test
170 date: Thu Jan 01 00:00:01 1970 +0000
173 date: Thu Jan 01 00:00:01 1970 +0000
171 summary: b1.1
174 summary: b1.1
172
175
173 changeset: 5:302e9dd6890d
176 changeset: 5:302e9dd6890d
174 parent: 3:e62f78d544b4
177 parent: 3:e62f78d544b4
175 parent: 4:ddb82e70d1a1
178 parent: 4:ddb82e70d1a1
176 user: test
179 user: test
177 date: Thu Jan 01 00:00:01 1970 +0000
180 date: Thu Jan 01 00:00:01 1970 +0000
178 summary: m12
181 summary: m12
179
182
180 changeset: 3:e62f78d544b4
183 changeset: 3:e62f78d544b4
181 parent: 1:3d5bf5654eda
184 parent: 1:3d5bf5654eda
182 user: test
185 user: test
183 date: Thu Jan 01 00:00:01 1970 +0000
186 date: Thu Jan 01 00:00:01 1970 +0000
184 summary: b1
187 summary: b1
185
188
186 changeset: 1:3d5bf5654eda
189 changeset: 1:3d5bf5654eda
187 user: test
190 user: test
188 date: Thu Jan 01 00:00:01 1970 +0000
191 date: Thu Jan 01 00:00:01 1970 +0000
189 summary: r1
192 summary: r1
190
193
191 changeset: 0:67e992f2c4f3
194 changeset: 0:67e992f2c4f3
192 user: test
195 user: test
193 date: Thu Jan 01 00:00:01 1970 +0000
196 date: Thu Jan 01 00:00:01 1970 +0000
194 summary: base
197 summary: base
195
198
196 % log -P 2
199 % log -P 2
197 changeset: 6:2404bbcab562
200 changeset: 6:2404bbcab562
198 tag: tip
201 tag: tip
199 user: test
202 user: test
200 date: Thu Jan 01 00:00:01 1970 +0000
203 date: Thu Jan 01 00:00:01 1970 +0000
201 summary: b1.1
204 summary: b1.1
202
205
203 changeset: 5:302e9dd6890d
206 changeset: 5:302e9dd6890d
204 parent: 3:e62f78d544b4
207 parent: 3:e62f78d544b4
205 parent: 4:ddb82e70d1a1
208 parent: 4:ddb82e70d1a1
206 user: test
209 user: test
207 date: Thu Jan 01 00:00:01 1970 +0000
210 date: Thu Jan 01 00:00:01 1970 +0000
208 summary: m12
211 summary: m12
209
212
210 changeset: 4:ddb82e70d1a1
213 changeset: 4:ddb82e70d1a1
211 parent: 0:67e992f2c4f3
214 parent: 0:67e992f2c4f3
212 user: test
215 user: test
213 date: Thu Jan 01 00:00:01 1970 +0000
216 date: Thu Jan 01 00:00:01 1970 +0000
214 summary: b2
217 summary: b2
215
218
216 changeset: 3:e62f78d544b4
219 changeset: 3:e62f78d544b4
217 parent: 1:3d5bf5654eda
220 parent: 1:3d5bf5654eda
218 user: test
221 user: test
219 date: Thu Jan 01 00:00:01 1970 +0000
222 date: Thu Jan 01 00:00:01 1970 +0000
220 summary: b1
223 summary: b1
221
224
222 % log -r ""
225 % log -r ""
223 abort: 00changelog.i@: ambiguous identifier!
226 abort: 00changelog.i@: ambiguous identifier!
@@ -1,89 +1,92 b''
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 created new head
2 merging bar and foo
3 merging bar and foo
3 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
4 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
4 (branch merge, don't forget to commit)
5 (branch merge, don't forget to commit)
5 % contents of bar should be line0 line1 line2
6 % contents of bar should be line0 line1 line2
6 line0
7 line0
7 line1
8 line1
8 line2
9 line2
9 rev offset length base linkrev nodeid p1 p2
10 rev offset length base linkrev nodeid p1 p2
10 0 0 77 0 2 da78c0659611 000000000000 000000000000
11 0 0 77 0 2 da78c0659611 000000000000 000000000000
11 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
12 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
12 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
13 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
13 rev offset length base linkrev nodeid p1 p2
14 rev offset length base linkrev nodeid p1 p2
14 0 0 7 0 0 690b295714ae 000000000000 000000000000
15 0 0 7 0 0 690b295714ae 000000000000 000000000000
15 1 7 13 1 1 9e25c27b8757 690b295714ae 000000000000
16 1 7 13 1 1 9e25c27b8757 690b295714ae 000000000000
16 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
17 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
18 created new head
17 4:2d2f9a22c82b 2:0a3ab4856510
19 4:2d2f9a22c82b 2:0a3ab4856510
18 3:7d3b554bfdf1 2:0a3ab4856510 1:5cd961e4045d
20 3:7d3b554bfdf1 2:0a3ab4856510 1:5cd961e4045d
19 2:0a3ab4856510 0:2665aaee66e9
21 2:0a3ab4856510 0:2665aaee66e9
20 1:5cd961e4045d
22 1:5cd961e4045d
21 0:2665aaee66e9
23 0:2665aaee66e9
22 % this should use bar@rev2 as the ancestor
24 % this should use bar@rev2 as the ancestor
23 resolving manifests
25 resolving manifests
24 overwrite None partial False
26 overwrite None partial False
25 ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 7d3b554bfdf1
27 ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 7d3b554bfdf1
26 searching for copies back to rev 1
28 searching for copies back to rev 1
27 bar: versions differ -> m
29 bar: versions differ -> m
28 picked tool 'internal:merge' for bar (binary False symlink False)
30 picked tool 'internal:merge' for bar (binary False symlink False)
29 merging bar
31 merging bar
30 my bar@2d2f9a22c82b+ other bar@7d3b554bfdf1 ancestor bar@0a3ab4856510
32 my bar@2d2f9a22c82b+ other bar@7d3b554bfdf1 ancestor bar@0a3ab4856510
31 premerge successful
33 premerge successful
32 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
34 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
33 (branch merge, don't forget to commit)
35 (branch merge, don't forget to commit)
34 % contents of bar should be line1 line2
36 % contents of bar should be line1 line2
35 line1
37 line1
36 line2
38 line2
37 rev offset length base linkrev nodeid p1 p2
39 rev offset length base linkrev nodeid p1 p2
38 0 0 77 0 2 da78c0659611 000000000000 000000000000
40 0 0 77 0 2 da78c0659611 000000000000 000000000000
39 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
41 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
40 2 153 7 2 4 4defe5eec418 da78c0659611 000000000000
42 2 153 7 2 4 4defe5eec418 da78c0659611 000000000000
41 3 160 13 3 5 4663501da27b 4defe5eec418 4b358025380b
43 3 160 13 3 5 4663501da27b 4defe5eec418 4b358025380b
42
44
43
45
44 requesting all changes
46 requesting all changes
45 adding changesets
47 adding changesets
46 adding manifests
48 adding manifests
47 adding file changes
49 adding file changes
48 added 3 changesets with 3 changes to 2 files (+1 heads)
50 added 3 changesets with 3 changes to 2 files (+1 heads)
49 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
51 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
50 merging foo and bar
52 merging foo and bar
51 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
53 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
52 (branch merge, don't forget to commit)
54 (branch merge, don't forget to commit)
53 % contents of bar should be line0 line1 line2
55 % contents of bar should be line0 line1 line2
54 line0
56 line0
55 line1
57 line1
56 line2
58 line2
57 rev offset length base linkrev nodeid p1 p2
59 rev offset length base linkrev nodeid p1 p2
58 0 0 77 0 2 da78c0659611 000000000000 000000000000
60 0 0 77 0 2 da78c0659611 000000000000 000000000000
59 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
61 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
60 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
62 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
61 rev offset length base linkrev nodeid p1 p2
63 rev offset length base linkrev nodeid p1 p2
62 0 0 7 0 0 690b295714ae 000000000000 000000000000
64 0 0 7 0 0 690b295714ae 000000000000 000000000000
63 1 7 13 1 1 9e25c27b8757 690b295714ae 000000000000
65 1 7 13 1 1 9e25c27b8757 690b295714ae 000000000000
64 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
66 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
67 created new head
65 4:2d2f9a22c82b 2:0a3ab4856510
68 4:2d2f9a22c82b 2:0a3ab4856510
66 3:96ab80c60897 1:5cd961e4045d 2:0a3ab4856510
69 3:96ab80c60897 1:5cd961e4045d 2:0a3ab4856510
67 2:0a3ab4856510 0:2665aaee66e9
70 2:0a3ab4856510 0:2665aaee66e9
68 1:5cd961e4045d
71 1:5cd961e4045d
69 0:2665aaee66e9
72 0:2665aaee66e9
70 % this should use bar@rev2 as the ancestor
73 % this should use bar@rev2 as the ancestor
71 resolving manifests
74 resolving manifests
72 overwrite None partial False
75 overwrite None partial False
73 ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 96ab80c60897
76 ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 96ab80c60897
74 searching for copies back to rev 1
77 searching for copies back to rev 1
75 bar: versions differ -> m
78 bar: versions differ -> m
76 picked tool 'internal:merge' for bar (binary False symlink False)
79 picked tool 'internal:merge' for bar (binary False symlink False)
77 merging bar
80 merging bar
78 my bar@2d2f9a22c82b+ other bar@96ab80c60897 ancestor bar@0a3ab4856510
81 my bar@2d2f9a22c82b+ other bar@96ab80c60897 ancestor bar@0a3ab4856510
79 premerge successful
82 premerge successful
80 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
83 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
81 (branch merge, don't forget to commit)
84 (branch merge, don't forget to commit)
82 % contents of bar should be line1 line2
85 % contents of bar should be line1 line2
83 line1
86 line1
84 line2
87 line2
85 rev offset length base linkrev nodeid p1 p2
88 rev offset length base linkrev nodeid p1 p2
86 0 0 77 0 2 da78c0659611 000000000000 000000000000
89 0 0 77 0 2 da78c0659611 000000000000 000000000000
87 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
90 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
88 2 153 7 2 4 4defe5eec418 da78c0659611 000000000000
91 2 153 7 2 4 4defe5eec418 da78c0659611 000000000000
89 3 160 13 3 5 4663501da27b 4defe5eec418 4b358025380b
92 3 160 13 3 5 4663501da27b 4defe5eec418 4b358025380b
@@ -1,20 +1,22 b''
1 adding a
1 adding a
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 created new head
3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
5 created new head
4 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
6 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
5 % should fail because not at a head
7 % should fail because not at a head
6 abort: repo has 3 heads - please merge with an explicit rev
8 abort: repo has 3 heads - please merge with an explicit rev
7 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
9 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
8 % should fail because > 2 heads
10 % should fail because > 2 heads
9 abort: repo has 3 heads - please merge with an explicit rev
11 abort: repo has 3 heads - please merge with an explicit rev
10 % should succeed
12 % should succeed
11 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
13 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
12 (branch merge, don't forget to commit)
14 (branch merge, don't forget to commit)
13 % should succeed - 2 heads
15 % should succeed - 2 heads
14 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
16 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
15 (branch merge, don't forget to commit)
17 (branch merge, don't forget to commit)
16 % should fail because at tip
18 % should fail because at tip
17 abort: there is nothing to merge
19 abort: there is nothing to merge
18 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
20 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
19 % should fail because 1 head
21 % should fail because 1 head
20 abort: there is nothing to merge - use "hg update" instead
22 abort: there is nothing to merge - use "hg update" instead
@@ -1,10 +1,11 b''
1 created new head
1 % local deleted a file, remote removed
2 % local deleted a file, remote removed
2 abort: outstanding uncommitted changes
3 abort: outstanding uncommitted changes
3 resolving manifests
4 resolving manifests
4 removing a
5 removing a
5 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
6 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
6 (branch merge, don't forget to commit)
7 (branch merge, don't forget to commit)
7 % should show a as removed
8 % should show a as removed
8 R a
9 R a
9 % manifest. should not have a:
10 % manifest. should not have a:
10 b
11 b
@@ -1,64 +1,65 b''
1 adding file1
1 adding file1
2 adding file2
2 adding file2
3 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 created new head
4
5
5 # non-interactive merge
6 # non-interactive merge
6 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
7 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
7 (branch merge, don't forget to commit)
8 (branch merge, don't forget to commit)
8 status:
9 status:
9 M file2
10 M file2
10 C file1
11 C file1
11 file1:
12 file1:
12 1
13 1
13 changed
14 changed
14 file2:
15 file2:
15 2
16 2
16 changed
17 changed
17
18
18 # interactive merge
19 # interactive merge
19 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
20 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
20 local changed file1 which remote deleted
21 local changed file1 which remote deleted
21 use (c)hanged version or (d)elete? remote changed file2 which local deleted
22 use (c)hanged version or (d)elete? remote changed file2 which local deleted
22 use (c)hanged version or leave (d)eleted? 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
23 use (c)hanged version or leave (d)eleted? 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
23 (branch merge, don't forget to commit)
24 (branch merge, don't forget to commit)
24 status:
25 status:
25 file2: No such file or directory
26 file2: No such file or directory
26 C file1
27 C file1
27 file1:
28 file1:
28 1
29 1
29 changed
30 changed
30 file2 does not exist
31 file2 does not exist
31
32
32 # interactive merge with bad input
33 # interactive merge with bad input
33 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
34 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
34 local changed file1 which remote deleted
35 local changed file1 which remote deleted
35 use (c)hanged version or (d)elete? unrecognized response
36 use (c)hanged version or (d)elete? unrecognized response
36 local changed file1 which remote deleted
37 local changed file1 which remote deleted
37 use (c)hanged version or (d)elete? unrecognized response
38 use (c)hanged version or (d)elete? unrecognized response
38 local changed file1 which remote deleted
39 local changed file1 which remote deleted
39 use (c)hanged version or (d)elete? remote changed file2 which local deleted
40 use (c)hanged version or (d)elete? remote changed file2 which local deleted
40 use (c)hanged version or leave (d)eleted? unrecognized response
41 use (c)hanged version or leave (d)eleted? unrecognized response
41 remote changed file2 which local deleted
42 remote changed file2 which local deleted
42 use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
43 use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
43 (branch merge, don't forget to commit)
44 (branch merge, don't forget to commit)
44 status:
45 status:
45 M file2
46 M file2
46 R file1
47 R file1
47 file1 does not exist
48 file1 does not exist
48 file2:
49 file2:
49 2
50 2
50 changed
51 changed
51
52
52 # interactive merge with not enough input
53 # interactive merge with not enough input
53 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
54 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
54 local changed file1 which remote deleted
55 local changed file1 which remote deleted
55 use (c)hanged version or (d)elete? remote changed file2 which local deleted
56 use (c)hanged version or (d)elete? remote changed file2 which local deleted
56 use (c)hanged version or leave (d)eleted? abort: response expected
57 use (c)hanged version or leave (d)eleted? abort: response expected
57 failed
58 failed
58 status:
59 status:
59 file2: No such file or directory
60 file2: No such file or directory
60 C file1
61 C file1
61 file1:
62 file1:
62 1
63 1
63 changed
64 changed
64 file2 does not exist
65 file2 does not exist
@@ -1,36 +1,37 b''
1 created new head
1 merging foo1 and foo
2 merging foo1 and foo
2 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
3 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
3 (branch merge, don't forget to commit)
4 (branch merge, don't forget to commit)
4 n 0 -2 bar
5 n 0 -2 bar
5 m 644 14 foo1
6 m 644 14 foo1
6 copy: foo -> foo1
7 copy: foo -> foo1
7 M bar
8 M bar
8 M foo1
9 M foo1
9 % removing foo1 and bar
10 % removing foo1 and bar
10 r 0 -2 bar
11 r 0 -2 bar
11 r 0 -1 foo1
12 r 0 -1 foo1
12 copy: foo -> foo1
13 copy: foo -> foo1
13 R bar
14 R bar
14 R foo1
15 R foo1
15 foo
16 foo
16 % readding foo1 and bar
17 % readding foo1 and bar
17 adding bar
18 adding bar
18 adding foo1
19 adding foo1
19 n 0 -2 bar
20 n 0 -2 bar
20 m 644 14 foo1
21 m 644 14 foo1
21 copy: foo -> foo1
22 copy: foo -> foo1
22 M bar
23 M bar
23 M foo1
24 M foo1
24 foo
25 foo
25 % reverting foo1 and bar
26 % reverting foo1 and bar
26 warning: working directory has two parents, tag '.' uses the first
27 warning: working directory has two parents, tag '.' uses the first
27 saving current version of bar as bar.orig
28 saving current version of bar as bar.orig
28 reverting bar
29 reverting bar
29 saving current version of foo1 as foo1.orig
30 saving current version of foo1 as foo1.orig
30 reverting foo1
31 reverting foo1
31 n 0 -2 bar
32 n 0 -2 bar
32 m 644 14 foo1
33 m 644 14 foo1
33 copy: foo -> foo1
34 copy: foo -> foo1
34 M bar
35 M bar
35 M foo1
36 M foo1
36 foo
37 foo
@@ -1,22 +1,23 b''
1 adding a
1 adding a
2 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 created new head
3 resolving manifests
4 resolving manifests
4 overwrite None partial False
5 overwrite None partial False
5 ancestor c334dc3be0da local 521a1e40188f+ remote 3574f3e69b1c
6 ancestor c334dc3be0da local 521a1e40188f+ remote 3574f3e69b1c
6 searching for copies back to rev 1
7 searching for copies back to rev 1
7 a: update permissions -> e
8 a: update permissions -> e
8 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
9 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
9 (branch merge, don't forget to commit)
10 (branch merge, don't forget to commit)
10 % symlink is local parent, executable is other
11 % symlink is local parent, executable is other
11 a has no flags (default for conflicts)
12 a has no flags (default for conflicts)
12 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
13 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
13 resolving manifests
14 resolving manifests
14 overwrite None partial False
15 overwrite None partial False
15 ancestor c334dc3be0da local 3574f3e69b1c+ remote 521a1e40188f
16 ancestor c334dc3be0da local 3574f3e69b1c+ remote 521a1e40188f
16 searching for copies back to rev 1
17 searching for copies back to rev 1
17 a: remote is newer -> g
18 a: remote is newer -> g
18 getting a
19 getting a
19 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
20 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
20 (branch merge, don't forget to commit)
21 (branch merge, don't forget to commit)
21 % symlink is other parent, executable is local
22 % symlink is other parent, executable is local
22 a has no flags (default for conflicts)
23 a has no flags (default for conflicts)
@@ -1,55 +1,59 b''
1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
2 created new head
2 %% no merges expected
3 %% no merges expected
3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 (branch merge, don't forget to commit)
5 (branch merge, don't forget to commit)
5 diff -r d9e5953b9dec b
6 diff -r d9e5953b9dec b
6 --- /dev/null
7 --- /dev/null
7 +++ b/b
8 +++ b/b
8 @@ -0,0 +1,1 @@
9 @@ -0,0 +1,1 @@
9 +This is file b1
10 +This is file b1
10 M b
11 M b
11 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
12 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
13 created new head
12 %% merge should fail
14 %% merge should fail
13 abort: untracked file in working directory differs from file in requested revision: 'b'
15 abort: untracked file in working directory differs from file in requested revision: 'b'
14 %% merge of b expected
16 %% merge of b expected
15 merging for b
17 merging for b
16 merging b
18 merging b
17 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
19 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
18 (branch merge, don't forget to commit)
20 (branch merge, don't forget to commit)
19 diff -r d9e5953b9dec b
21 diff -r d9e5953b9dec b
20 --- /dev/null
22 --- /dev/null
21 +++ b/b
23 +++ b/b
22 @@ -0,0 +1,1 @@
24 @@ -0,0 +1,1 @@
23 +This is file b2
25 +This is file b2
24 M b
26 M b
25 %%
27 %%
26 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
28 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
29 created new head
27 Contents of b should be "this is file b1"
30 Contents of b should be "this is file b1"
28 This is file b1
31 This is file b1
29 %% merge fails
32 %% merge fails
30 abort: outstanding uncommitted changes
33 abort: outstanding uncommitted changes
31 %% merge expected!
34 %% merge expected!
32 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
35 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
33 (branch merge, don't forget to commit)
36 (branch merge, don't forget to commit)
34 diff -r c1dd73cbf59f b
37 diff -r c1dd73cbf59f b
35 --- a/b
38 --- a/b
36 +++ b/b
39 +++ b/b
37 @@ -1,1 +1,1 @@
40 @@ -1,1 +1,1 @@
38 -This is file b1
41 -This is file b1
39 +This is file b22
42 +This is file b22
40 M b
43 M b
41 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
44 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
45 created new head
42 %% merge of b should fail
46 %% merge of b should fail
43 abort: outstanding uncommitted changes
47 abort: outstanding uncommitted changes
44 %% merge of b expected
48 %% merge of b expected
45 merging for b
49 merging for b
46 merging b
50 merging b
47 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
51 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
48 (branch merge, don't forget to commit)
52 (branch merge, don't forget to commit)
49 diff -r c1dd73cbf59f b
53 diff -r c1dd73cbf59f b
50 --- a/b
54 --- a/b
51 +++ b/b
55 +++ b/b
52 @@ -1,1 +1,1 @@
56 @@ -1,1 +1,1 @@
53 -This is file b1
57 -This is file b1
54 +This is file b33
58 +This is file b33
55 M b
59 M b
@@ -1,5 +1,8 b''
1 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 created new head
2 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 adding b
4 adding b
5 created new head
4 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
6 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
5 adding b
7 adding b
8 created new head
@@ -1,3 +1,4 b''
1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
2 created new head
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 (branch merge, don't forget to commit)
4 (branch merge, don't forget to commit)
@@ -1,3 +1,4 b''
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 removing b
2 removing b
3 created new head
3 abort: update spans branches, use 'hg merge' or 'hg update -C' to lose changes
4 abort: update spans branches, use 'hg merge' or 'hg update -C' to lose changes
@@ -1,19 +1,20 b''
1 adding bar
1 adding bar
2 adding foo
2 adding foo
3 adding quux1
3 adding quux1
4 adding quux2
4 adding quux2
5 created new head
5 merging bar
6 merging bar
6 merging bar failed!
7 merging bar failed!
7 merging foo and baz
8 merging foo and baz
8 1 files updated, 1 files merged, 0 files removed, 1 files unresolved
9 1 files updated, 1 files merged, 0 files removed, 1 files unresolved
9 There are unresolved merges, you can redo the full merge using:
10 There are unresolved merges, you can redo the full merge using:
10 hg update -C 2
11 hg update -C 2
11 hg merge 1
12 hg merge 1
12 3 files updated, 0 files merged, 1 files removed, 0 files unresolved
13 3 files updated, 0 files merged, 1 files removed, 0 files unresolved
13 merging bar
14 merging bar
14 merging bar failed!
15 merging bar failed!
15 merging baz and foo
16 merging baz and foo
16 1 files updated, 1 files merged, 0 files removed, 1 files unresolved
17 1 files updated, 1 files merged, 0 files removed, 1 files unresolved
17 There are unresolved merges, you can redo the full merge using:
18 There are unresolved merges, you can redo the full merge using:
18 hg update -C 1
19 hg update -C 1
19 hg merge 2
20 hg merge 2
@@ -1,12 +1,13 b''
1 adding a
1 adding a
2 adding b
2 adding b
3 copy .hg/patches to .hg/patches.1
3 copy .hg/patches to .hg/patches.1
4 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
5 M b
5 M b
6 created new head
6 a
7 a
7 b
8 b
8 merging with queue at: .hg/patches.1
9 merging with queue at: .hg/patches.1
9 applying rm_a
10 applying rm_a
10 Now at: rm_a
11 Now at: rm_a
11 b
12 b
12 Patch queue now empty
13 Patch queue now empty
@@ -1,479 +1,481 b''
1 % help
1 % help
2 mq extension - patch management and development
2 mq extension - patch management and development
3
3
4 This extension lets you work with a stack of patches in a Mercurial
4 This extension lets you work with a stack of patches in a Mercurial
5 repository. It manages two stacks of patches - all known patches, and
5 repository. It manages two stacks of patches - all known patches, and
6 applied patches (subset of known patches).
6 applied patches (subset of known patches).
7
7
8 Known patches are represented as patch files in the .hg/patches
8 Known patches are represented as patch files in the .hg/patches
9 directory. Applied patches are both patch files and changesets.
9 directory. Applied patches are both patch files and changesets.
10
10
11 Common tasks (use "hg help command" for more details):
11 Common tasks (use "hg help command" for more details):
12
12
13 prepare repository to work with patches qinit
13 prepare repository to work with patches qinit
14 create new patch qnew
14 create new patch qnew
15 import existing patch qimport
15 import existing patch qimport
16
16
17 print patch series qseries
17 print patch series qseries
18 print applied patches qapplied
18 print applied patches qapplied
19 print name of top applied patch qtop
19 print name of top applied patch qtop
20
20
21 add known patch to applied stack qpush
21 add known patch to applied stack qpush
22 remove patch from applied stack qpop
22 remove patch from applied stack qpop
23 refresh contents of top applied patch qrefresh
23 refresh contents of top applied patch qrefresh
24
24
25 list of commands:
25 list of commands:
26
26
27 qapplied print the patches already applied
27 qapplied print the patches already applied
28 qclone clone main and patch repository at same time
28 qclone clone main and patch repository at same time
29 qcommit commit changes in the queue repository
29 qcommit commit changes in the queue repository
30 qdelete remove patches from queue
30 qdelete remove patches from queue
31 qdiff diff of the current patch
31 qdiff diff of the current patch
32 qfold fold the named patches into the current patch
32 qfold fold the named patches into the current patch
33 qgoto push or pop patches until named patch is at top of stack
33 qgoto push or pop patches until named patch is at top of stack
34 qguard set or print guards for a patch
34 qguard set or print guards for a patch
35 qheader Print the header of the topmost or specified patch
35 qheader Print the header of the topmost or specified patch
36 qimport import a patch
36 qimport import a patch
37 qinit init a new queue repository
37 qinit init a new queue repository
38 qnew create a new patch
38 qnew create a new patch
39 qnext print the name of the next patch
39 qnext print the name of the next patch
40 qpop pop the current patch off the stack
40 qpop pop the current patch off the stack
41 qprev print the name of the previous patch
41 qprev print the name of the previous patch
42 qpush push the next patch onto the stack
42 qpush push the next patch onto the stack
43 qrefresh update the current patch
43 qrefresh update the current patch
44 qrename rename a patch
44 qrename rename a patch
45 qrestore restore the queue state saved by a rev
45 qrestore restore the queue state saved by a rev
46 qsave save current queue state
46 qsave save current queue state
47 qselect set or print guarded patches to push
47 qselect set or print guarded patches to push
48 qseries print the entire series file
48 qseries print the entire series file
49 qtop print the name of the current patch
49 qtop print the name of the current patch
50 qunapplied print the patches not yet applied
50 qunapplied print the patches not yet applied
51 strip strip a revision and all later revs on the same branch
51 strip strip a revision and all later revs on the same branch
52
52
53 use "hg -v help mq" to show aliases and global options
53 use "hg -v help mq" to show aliases and global options
54 adding a
54 adding a
55 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
55 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
56 adding b/z
56 adding b/z
57 % qinit
57 % qinit
58 % -R qinit
58 % -R qinit
59 % qinit -c
59 % qinit -c
60 A .hgignore
60 A .hgignore
61 A series
61 A series
62 % qnew should refuse bad patch names
62 % qnew should refuse bad patch names
63 abort: "series" cannot be used as the name of a patch
63 abort: "series" cannot be used as the name of a patch
64 abort: "status" cannot be used as the name of a patch
64 abort: "status" cannot be used as the name of a patch
65 abort: "guards" cannot be used as the name of a patch
65 abort: "guards" cannot be used as the name of a patch
66 abort: ".hgignore" cannot be used as the name of a patch
66 abort: ".hgignore" cannot be used as the name of a patch
67 % qnew implies add
67 % qnew implies add
68 A .hgignore
68 A .hgignore
69 A series
69 A series
70 A test.patch
70 A test.patch
71 % qinit; qinit -c
71 % qinit; qinit -c
72 .hgignore:
72 .hgignore:
73 ^\.hg
73 ^\.hg
74 ^\.mq
74 ^\.mq
75 syntax: glob
75 syntax: glob
76 status
76 status
77 guards
77 guards
78 series:
78 series:
79 abort: repository already exists!
79 abort: repository already exists!
80 % qinit; <stuff>; qinit -c
80 % qinit; <stuff>; qinit -c
81 adding .hg/patches/A
81 adding .hg/patches/A
82 adding .hg/patches/B
82 adding .hg/patches/B
83 A .hgignore
83 A .hgignore
84 A A
84 A A
85 A B
85 A B
86 A series
86 A series
87 .hgignore:
87 .hgignore:
88 status
88 status
89 bleh
89 bleh
90 series:
90 series:
91 A
91 A
92 B
92 B
93 % qnew with uncommitted changes
93 % qnew with uncommitted changes
94 abort: local changes found, refresh first
94 abort: local changes found, refresh first
95 A somefile
95 A somefile
96 % qnew with uncommitted changes and missing file (issue 803)
96 % qnew with uncommitted changes and missing file (issue 803)
97 someotherfile: No such file or directory
97 someotherfile: No such file or directory
98 A somefile
98 A somefile
99 issue803.patch
99 issue803.patch
100 Patch queue now empty
100 Patch queue now empty
101 % qnew -m
101 % qnew -m
102 foo bar
102 foo bar
103 % qrefresh
103 % qrefresh
104 foo bar
104 foo bar
105
105
106 diff -r xa
106 diff -r xa
107 --- a/a
107 --- a/a
108 +++ b/a
108 +++ b/a
109 @@ -1,1 +1,2 @@
109 @@ -1,1 +1,2 @@
110 a
110 a
111 +a
111 +a
112 % empty qrefresh
112 % empty qrefresh
113 revision:
113 revision:
114 patch:
114 patch:
115 foo bar
115 foo bar
116
116
117 working dir diff:
117 working dir diff:
118 --- a/a
118 --- a/a
119 +++ b/a
119 +++ b/a
120 @@ -1,1 +1,2 @@
120 @@ -1,1 +1,2 @@
121 a
121 a
122 +a
122 +a
123 % qpop
123 % qpop
124 Patch queue now empty
124 Patch queue now empty
125 % qpush
125 % qpush
126 applying test.patch
126 applying test.patch
127 Now at: test.patch
127 Now at: test.patch
128 % pop/push outside repo
128 % pop/push outside repo
129 Patch queue now empty
129 Patch queue now empty
130 applying test.patch
130 applying test.patch
131 Now at: test.patch
131 Now at: test.patch
132 % qrefresh in subdir
132 % qrefresh in subdir
133 % pop/push -a in subdir
133 % pop/push -a in subdir
134 Patch queue now empty
134 Patch queue now empty
135 applying test.patch
135 applying test.patch
136 applying test2.patch
136 applying test2.patch
137 Now at: test2.patch
137 Now at: test2.patch
138 % qseries
138 % qseries
139 test.patch
139 test.patch
140 test2.patch
140 test2.patch
141 Now at: test.patch
141 Now at: test.patch
142 0 A test.patch: foo bar
142 0 A test.patch: foo bar
143 1 U test2.patch:
143 1 U test2.patch:
144 applying test2.patch
144 applying test2.patch
145 Now at: test2.patch
145 Now at: test2.patch
146 % qapplied
146 % qapplied
147 test.patch
147 test.patch
148 test2.patch
148 test2.patch
149 % qtop
149 % qtop
150 test2.patch
150 test2.patch
151 % qprev
151 % qprev
152 test.patch
152 test.patch
153 % qnext
153 % qnext
154 All patches applied
154 All patches applied
155 % pop, qnext, qprev, qapplied
155 % pop, qnext, qprev, qapplied
156 Now at: test.patch
156 Now at: test.patch
157 test2.patch
157 test2.patch
158 Only one patch applied
158 Only one patch applied
159 test.patch
159 test.patch
160 % commit should fail
160 % commit should fail
161 abort: cannot commit over an applied mq patch
161 abort: cannot commit over an applied mq patch
162 % push should fail
162 % push should fail
163 pushing to ../../k
163 pushing to ../../k
164 abort: source has mq patches applied
164 abort: source has mq patches applied
165 % qunapplied
165 % qunapplied
166 test2.patch
166 test2.patch
167 % qpush/qpop with index
167 % qpush/qpop with index
168 applying test2.patch
168 applying test2.patch
169 Now at: test2.patch
169 Now at: test2.patch
170 Now at: test.patch
170 Now at: test.patch
171 applying test1b.patch
171 applying test1b.patch
172 Now at: test1b.patch
172 Now at: test1b.patch
173 applying test2.patch
173 applying test2.patch
174 Now at: test2.patch
174 Now at: test2.patch
175 Now at: test1b.patch
175 Now at: test1b.patch
176 Now at: test.patch
176 Now at: test.patch
177 applying test1b.patch
177 applying test1b.patch
178 applying test2.patch
178 applying test2.patch
179 Now at: test2.patch
179 Now at: test2.patch
180 % push should succeed
180 % push should succeed
181 Patch queue now empty
181 Patch queue now empty
182 pushing to ../../k
182 pushing to ../../k
183 searching for changes
183 searching for changes
184 adding changesets
184 adding changesets
185 adding manifests
185 adding manifests
186 adding file changes
186 adding file changes
187 added 1 changesets with 1 changes to 1 files
187 added 1 changesets with 1 changes to 1 files
188 % qpush/qpop error codes
188 % qpush/qpop error codes
189 applying test.patch
189 applying test.patch
190 applying test1b.patch
190 applying test1b.patch
191 applying test2.patch
191 applying test2.patch
192 Now at: test2.patch
192 Now at: test2.patch
193 % pops all patches and succeeds
193 % pops all patches and succeeds
194 Patch queue now empty
194 Patch queue now empty
195 qpop -a succeeds
195 qpop -a succeeds
196 % does nothing and succeeds
196 % does nothing and succeeds
197 no patches applied
197 no patches applied
198 qpop -a succeeds
198 qpop -a succeeds
199 % fails - nothing else to pop
199 % fails - nothing else to pop
200 no patches applied
200 no patches applied
201 qpop fails
201 qpop fails
202 % pushes a patch and succeeds
202 % pushes a patch and succeeds
203 applying test.patch
203 applying test.patch
204 Now at: test.patch
204 Now at: test.patch
205 qpush succeeds
205 qpush succeeds
206 % pops a patch and succeeds
206 % pops a patch and succeeds
207 Patch queue now empty
207 Patch queue now empty
208 qpop succeeds
208 qpop succeeds
209 % pushes up to test1b.patch and succeeds
209 % pushes up to test1b.patch and succeeds
210 applying test.patch
210 applying test.patch
211 applying test1b.patch
211 applying test1b.patch
212 Now at: test1b.patch
212 Now at: test1b.patch
213 qpush test1b.patch succeeds
213 qpush test1b.patch succeeds
214 % does nothing and succeeds
214 % does nothing and succeeds
215 qpush: test1b.patch is already at the top
215 qpush: test1b.patch is already at the top
216 qpush test1b.patch succeeds
216 qpush test1b.patch succeeds
217 % does nothing and succeeds
217 % does nothing and succeeds
218 qpop: test1b.patch is already at the top
218 qpop: test1b.patch is already at the top
219 qpop test1b.patch succeeds
219 qpop test1b.patch succeeds
220 % fails - can't push to this patch
220 % fails - can't push to this patch
221 abort: cannot push to a previous patch: test.patch
221 abort: cannot push to a previous patch: test.patch
222 qpush test.patch fails
222 qpush test.patch fails
223 % fails - can't pop to this patch
223 % fails - can't pop to this patch
224 abort: patch test2.patch is not applied
224 abort: patch test2.patch is not applied
225 qpop test2.patch fails
225 qpop test2.patch fails
226 % pops up to test.patch and succeeds
226 % pops up to test.patch and succeeds
227 Now at: test.patch
227 Now at: test.patch
228 qpop test.patch succeeds
228 qpop test.patch succeeds
229 % pushes all patches and succeeds
229 % pushes all patches and succeeds
230 applying test1b.patch
230 applying test1b.patch
231 applying test2.patch
231 applying test2.patch
232 Now at: test2.patch
232 Now at: test2.patch
233 qpush -a succeeds
233 qpush -a succeeds
234 % does nothing and succeeds
234 % does nothing and succeeds
235 all patches are currently applied
235 all patches are currently applied
236 qpush -a succeeds
236 qpush -a succeeds
237 % fails - nothing else to push
237 % fails - nothing else to push
238 patch series already fully applied
238 patch series already fully applied
239 qpush fails
239 qpush fails
240 % does nothing and succeeds
240 % does nothing and succeeds
241 all patches are currently applied
241 all patches are currently applied
242 qpush test2.patch succeeds
242 qpush test2.patch succeeds
243 % strip
243 % strip
244 adding x
244 adding x
245 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
245 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
246 saving bundle to
246 saving bundle to
247 adding changesets
247 adding changesets
248 adding manifests
248 adding manifests
249 adding file changes
249 adding file changes
250 added 1 changesets with 1 changes to 1 files
250 added 1 changesets with 1 changes to 1 files
251 (run 'hg update' to get a working copy)
251 (run 'hg update' to get a working copy)
252 % cd b; hg qrefresh
252 % cd b; hg qrefresh
253 adding a
253 adding a
254 foo
254 foo
255
255
256 diff -r cb9a9f314b8b a
256 diff -r cb9a9f314b8b a
257 --- a/a
257 --- a/a
258 +++ b/a
258 +++ b/a
259 @@ -1,1 +1,2 @@
259 @@ -1,1 +1,2 @@
260 a
260 a
261 +a
261 +a
262 diff -r cb9a9f314b8b b/f
262 diff -r cb9a9f314b8b b/f
263 --- /dev/null
263 --- /dev/null
264 +++ b/b/f
264 +++ b/b/f
265 @@ -0,0 +1,1 @@
265 @@ -0,0 +1,1 @@
266 +f
266 +f
267 % hg qrefresh .
267 % hg qrefresh .
268 foo
268 foo
269
269
270 diff -r cb9a9f314b8b b/f
270 diff -r cb9a9f314b8b b/f
271 --- /dev/null
271 --- /dev/null
272 +++ b/b/f
272 +++ b/b/f
273 @@ -0,0 +1,1 @@
273 @@ -0,0 +1,1 @@
274 +f
274 +f
275 M a
275 M a
276 % qpush failure
276 % qpush failure
277 Patch queue now empty
277 Patch queue now empty
278 applying foo
278 applying foo
279 applying bar
279 applying bar
280 file foo already exists
280 file foo already exists
281 1 out of 1 hunk FAILED -- saving rejects to file foo.rej
281 1 out of 1 hunk FAILED -- saving rejects to file foo.rej
282 patch failed, unable to continue (try -v)
282 patch failed, unable to continue (try -v)
283 patch failed, rejects left in working dir
283 patch failed, rejects left in working dir
284 Errors during apply, please fix and refresh bar
284 Errors during apply, please fix and refresh bar
285 ? foo
285 ? foo
286 ? foo.rej
286 ? foo.rej
287 % mq tags
287 % mq tags
288 0 qparent
288 0 qparent
289 1 qbase foo
289 1 qbase foo
290 2 qtip bar tip
290 2 qtip bar tip
291 % bad node in status
291 % bad node in status
292 Now at: foo
292 Now at: foo
293 changeset: 0:cb9a9f314b8b
293 changeset: 0:cb9a9f314b8b
294 mq status file refers to unknown node
294 mq status file refers to unknown node
295 tag: tip
295 tag: tip
296 user: test
296 user: test
297 date: Thu Jan 01 00:00:00 1970 +0000
297 date: Thu Jan 01 00:00:00 1970 +0000
298 summary: a
298 summary: a
299
299
300 mq status file refers to unknown node
300 mq status file refers to unknown node
301 default 0:cb9a9f314b8b
301 default 0:cb9a9f314b8b
302 abort: working directory revision is not qtip
302 abort: working directory revision is not qtip
303 new file
303 new file
304
304
305 diff --git a/new b/new
305 diff --git a/new b/new
306 new file mode 100755
306 new file mode 100755
307 --- /dev/null
307 --- /dev/null
308 +++ b/new
308 +++ b/new
309 @@ -0,0 +1,1 @@
309 @@ -0,0 +1,1 @@
310 +foo
310 +foo
311 copy file
311 copy file
312
312
313 diff --git a/new b/copy
313 diff --git a/new b/copy
314 copy from new
314 copy from new
315 copy to copy
315 copy to copy
316 Now at: new
316 Now at: new
317 applying copy
317 applying copy
318 Now at: copy
318 Now at: copy
319 diff --git a/new b/copy
319 diff --git a/new b/copy
320 copy from new
320 copy from new
321 copy to copy
321 copy to copy
322 diff --git a/new b/copy
322 diff --git a/new b/copy
323 copy from new
323 copy from new
324 copy to copy
324 copy to copy
325 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
325 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
326 created new head
326 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
327 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
327 adding branch
328 adding branch
328 adding changesets
329 adding changesets
329 adding manifests
330 adding manifests
330 adding file changes
331 adding file changes
331 added 1 changesets with 1 changes to 1 files
332 added 1 changesets with 1 changes to 1 files
332 Patch queue now empty
333 Patch queue now empty
333 applying bar
334 applying bar
334 Now at: bar
335 Now at: bar
335 diff --git a/bar b/bar
336 diff --git a/bar b/bar
336 new file mode 100644
337 new file mode 100644
337 --- /dev/null
338 --- /dev/null
338 +++ b/bar
339 +++ b/bar
339 @@ -0,0 +1,1 @@
340 @@ -0,0 +1,1 @@
340 +bar
341 +bar
341 diff --git a/foo b/baz
342 diff --git a/foo b/baz
342 rename from foo
343 rename from foo
343 rename to baz
344 rename to baz
344 2 baz (foo)
345 2 baz (foo)
345 diff --git a/bar b/bar
346 diff --git a/bar b/bar
346 new file mode 100644
347 new file mode 100644
347 --- /dev/null
348 --- /dev/null
348 +++ b/bar
349 +++ b/bar
349 @@ -0,0 +1,1 @@
350 @@ -0,0 +1,1 @@
350 +bar
351 +bar
351 diff --git a/foo b/baz
352 diff --git a/foo b/baz
352 rename from foo
353 rename from foo
353 rename to baz
354 rename to baz
354 2 baz (foo)
355 2 baz (foo)
355 diff --git a/bar b/bar
356 diff --git a/bar b/bar
356 diff --git a/foo b/baz
357 diff --git a/foo b/baz
357
358
358 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
359 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
359 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
360 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
360 adding branch
361 adding branch
361 adding changesets
362 adding changesets
362 adding manifests
363 adding manifests
363 adding file changes
364 adding file changes
364 added 1 changesets with 1 changes to 1 files
365 added 1 changesets with 1 changes to 1 files
365 Patch queue now empty
366 Patch queue now empty
366 applying bar
367 applying bar
367 Now at: bar
368 Now at: bar
368 diff --git a/foo b/bleh
369 diff --git a/foo b/bleh
369 rename from foo
370 rename from foo
370 rename to bleh
371 rename to bleh
371 diff --git a/quux b/quux
372 diff --git a/quux b/quux
372 new file mode 100644
373 new file mode 100644
373 --- /dev/null
374 --- /dev/null
374 +++ b/quux
375 +++ b/quux
375 @@ -0,0 +1,1 @@
376 @@ -0,0 +1,1 @@
376 +bar
377 +bar
377 3 bleh (foo)
378 3 bleh (foo)
378 diff --git a/foo b/barney
379 diff --git a/foo b/barney
379 rename from foo
380 rename from foo
380 rename to barney
381 rename to barney
381 diff --git a/fred b/fred
382 diff --git a/fred b/fred
382 new file mode 100644
383 new file mode 100644
383 --- /dev/null
384 --- /dev/null
384 +++ b/fred
385 +++ b/fred
385 @@ -0,0 +1,1 @@
386 @@ -0,0 +1,1 @@
386 +bar
387 +bar
387 3 barney (foo)
388 3 barney (foo)
388 % refresh omitting an added file
389 % refresh omitting an added file
389 C newfile
390 C newfile
390 A newfile
391 A newfile
391 Now at: bar
392 Now at: bar
392 % create a git patch
393 % create a git patch
393 diff --git a/alexander b/alexander
394 diff --git a/alexander b/alexander
394 % create a git binary patch
395 % create a git binary patch
395 8ba2a2f3e77b55d03051ff9c24ad65e7 bucephalus
396 8ba2a2f3e77b55d03051ff9c24ad65e7 bucephalus
396 diff --git a/bucephalus b/bucephalus
397 diff --git a/bucephalus b/bucephalus
397 % check binary patches can be popped and pushed
398 % check binary patches can be popped and pushed
398 Now at: addalexander
399 Now at: addalexander
399 applying addbucephalus
400 applying addbucephalus
400 Now at: addbucephalus
401 Now at: addbucephalus
401 8ba2a2f3e77b55d03051ff9c24ad65e7 bucephalus
402 8ba2a2f3e77b55d03051ff9c24ad65e7 bucephalus
402 % strip again
403 % strip again
403 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
404 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
405 created new head
404 merging foo
406 merging foo
405 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
407 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
406 (branch merge, don't forget to commit)
408 (branch merge, don't forget to commit)
407 changeset: 3:99615015637b
409 changeset: 3:99615015637b
408 tag: tip
410 tag: tip
409 parent: 2:20cbbe65cff7
411 parent: 2:20cbbe65cff7
410 parent: 1:d2871fc282d4
412 parent: 1:d2871fc282d4
411 user: test
413 user: test
412 date: Thu Jan 01 00:00:00 1970 +0000
414 date: Thu Jan 01 00:00:00 1970 +0000
413 summary: merge
415 summary: merge
414
416
415 changeset: 2:20cbbe65cff7
417 changeset: 2:20cbbe65cff7
416 parent: 0:53245c60e682
418 parent: 0:53245c60e682
417 user: test
419 user: test
418 date: Thu Jan 01 00:00:00 1970 +0000
420 date: Thu Jan 01 00:00:00 1970 +0000
419 summary: change foo 2
421 summary: change foo 2
420
422
421 changeset: 1:d2871fc282d4
423 changeset: 1:d2871fc282d4
422 user: test
424 user: test
423 date: Thu Jan 01 00:00:00 1970 +0000
425 date: Thu Jan 01 00:00:00 1970 +0000
424 summary: change foo 1
426 summary: change foo 1
425
427
426 changeset: 0:53245c60e682
428 changeset: 0:53245c60e682
427 user: test
429 user: test
428 date: Thu Jan 01 00:00:00 1970 +0000
430 date: Thu Jan 01 00:00:00 1970 +0000
429 summary: add foo
431 summary: add foo
430
432
431 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
433 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
432 saving bundle to
434 saving bundle to
433 saving bundle to
435 saving bundle to
434 adding branch
436 adding branch
435 adding changesets
437 adding changesets
436 adding manifests
438 adding manifests
437 adding file changes
439 adding file changes
438 added 1 changesets with 1 changes to 1 files
440 added 1 changesets with 1 changes to 1 files
439 changeset: 1:20cbbe65cff7
441 changeset: 1:20cbbe65cff7
440 tag: tip
442 tag: tip
441 user: test
443 user: test
442 date: Thu Jan 01 00:00:00 1970 +0000
444 date: Thu Jan 01 00:00:00 1970 +0000
443 summary: change foo 2
445 summary: change foo 2
444
446
445 changeset: 0:53245c60e682
447 changeset: 0:53245c60e682
446 user: test
448 user: test
447 date: Thu Jan 01 00:00:00 1970 +0000
449 date: Thu Jan 01 00:00:00 1970 +0000
448 summary: add foo
450 summary: add foo
449
451
450 % qclone
452 % qclone
451 abort: versioned patch repository not found (see qinit -c)
453 abort: versioned patch repository not found (see qinit -c)
452 adding .hg/patches/patch1
454 adding .hg/patches/patch1
453 main repo:
455 main repo:
454 rev 1: change foo
456 rev 1: change foo
455 rev 0: add foo
457 rev 0: add foo
456 patch repo:
458 patch repo:
457 rev 0: checkpoint
459 rev 0: checkpoint
458 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
460 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
459 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
461 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
460 main repo:
462 main repo:
461 rev 0: add foo
463 rev 0: add foo
462 patch repo:
464 patch repo:
463 rev 0: checkpoint
465 rev 0: checkpoint
464 Patch queue now empty
466 Patch queue now empty
465 main repo:
467 main repo:
466 rev 0: add foo
468 rev 0: add foo
467 patch repo:
469 patch repo:
468 rev 0: checkpoint
470 rev 0: checkpoint
469 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
471 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
470 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
472 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
471 main repo:
473 main repo:
472 rev 0: add foo
474 rev 0: add foo
473 patch repo:
475 patch repo:
474 rev 0: checkpoint
476 rev 0: checkpoint
475 % test applying on an empty file (issue 1033)
477 % test applying on an empty file (issue 1033)
476 adding a
478 adding a
477 Patch queue now empty
479 Patch queue now empty
478 applying changea
480 applying changea
479 Now at: changea
481 Now at: changea
@@ -1,895 +1,902 b''
1 created new head
1 ** rename in working dir **
2 ** rename in working dir **
2 ** add a a1 / add a a2 / hg mv a b
3 ** add a a1 / add a a2 / hg mv a b
3 - working to parent:
4 - working to parent:
4 A b
5 A b
5 a
6 a
6 R a
7 R a
7
8
8 diff --git a/a b/b
9 diff --git a/a b/b
9 rename from a
10 rename from a
10 rename to b
11 rename to b
11
12
12 - working to root: --rev 0
13 - working to root: --rev 0
13 A b
14 A b
14 a
15 a
15 R a
16 R a
16
17
17 diff --git a/a b/b
18 diff --git a/a b/b
18 rename from a
19 rename from a
19 rename to b
20 rename to b
20 --- a/a
21 --- a/a
21 +++ b/b
22 +++ b/b
22 @@ -1,1 +1,4 @@
23 @@ -1,1 +1,4 @@
23 a
24 a
24 +0
25 +0
25 +a1
26 +a1
26 +a2
27 +a2
27
28
28 - working to branch: --rev 2
29 - working to branch: --rev 2
29 A b
30 A b
30 a
31 a
31 R a
32 R a
32
33
33 diff --git a/a b/b
34 diff --git a/a b/b
34 rename from a
35 rename from a
35 rename to b
36 rename to b
36 --- a/a
37 --- a/a
37 +++ b/b
38 +++ b/b
38 @@ -1,3 +1,4 @@
39 @@ -1,3 +1,4 @@
39 a
40 a
40 -m1
41 -m1
41 -m2
42 -m2
42 +0
43 +0
43 +a1
44 +a1
44 +a2
45 +a2
45
46
46 - root to parent: --rev 0 --rev .
47 - root to parent: --rev 0 --rev .
47 M a
48 M a
48
49
49 diff --git a/a b/a
50 diff --git a/a b/a
50 --- a/a
51 --- a/a
51 +++ b/a
52 +++ b/a
52 @@ -1,1 +1,4 @@
53 @@ -1,1 +1,4 @@
53 a
54 a
54 +0
55 +0
55 +a1
56 +a1
56 +a2
57 +a2
57
58
58 - parent to root: --rev . --rev 0
59 - parent to root: --rev . --rev 0
59 M a
60 M a
60
61
61 diff --git a/a b/a
62 diff --git a/a b/a
62 --- a/a
63 --- a/a
63 +++ b/a
64 +++ b/a
64 @@ -1,4 +1,1 @@
65 @@ -1,4 +1,1 @@
65 a
66 a
66 -0
67 -0
67 -a1
68 -a1
68 -a2
69 -a2
69
70
70 - branch to parent: --rev 2 --rev .
71 - branch to parent: --rev 2 --rev .
71 M a
72 M a
72
73
73 diff --git a/a b/a
74 diff --git a/a b/a
74 --- a/a
75 --- a/a
75 +++ b/a
76 +++ b/a
76 @@ -1,3 +1,4 @@
77 @@ -1,3 +1,4 @@
77 a
78 a
78 -m1
79 -m1
79 -m2
80 -m2
80 +0
81 +0
81 +a1
82 +a1
82 +a2
83 +a2
83
84
84 - parent to branch: --rev . --rev 2
85 - parent to branch: --rev . --rev 2
85 M a
86 M a
86
87
87 diff --git a/a b/a
88 diff --git a/a b/a
88 --- a/a
89 --- a/a
89 +++ b/a
90 +++ b/a
90 @@ -1,4 +1,3 @@
91 @@ -1,4 +1,3 @@
91 a
92 a
92 -0
93 -0
93 -a1
94 -a1
94 -a2
95 -a2
95 +m1
96 +m1
96 +m2
97 +m2
97
98
98
99
100 created new head
99 ** copy in working dir **
101 ** copy in working dir **
100 ** add a a1 / add a a2 / hg cp a b
102 ** add a a1 / add a a2 / hg cp a b
101 - working to parent:
103 - working to parent:
102 A b
104 A b
103 a
105 a
104
106
105 diff --git a/a b/b
107 diff --git a/a b/b
106 copy from a
108 copy from a
107 copy to b
109 copy to b
108
110
109 - working to root: --rev 0
111 - working to root: --rev 0
110 M a
112 M a
111 A b
113 A b
112 a
114 a
113
115
114 diff --git a/a b/a
116 diff --git a/a b/a
115 --- a/a
117 --- a/a
116 +++ b/a
118 +++ b/a
117 @@ -1,1 +1,4 @@
119 @@ -1,1 +1,4 @@
118 a
120 a
119 +1
121 +1
120 +a1
122 +a1
121 +a2
123 +a2
122 diff --git a/a b/b
124 diff --git a/a b/b
123 copy from a
125 copy from a
124 copy to b
126 copy to b
125 --- a/a
127 --- a/a
126 +++ b/b
128 +++ b/b
127 @@ -1,1 +1,4 @@
129 @@ -1,1 +1,4 @@
128 a
130 a
129 +1
131 +1
130 +a1
132 +a1
131 +a2
133 +a2
132
134
133 - working to branch: --rev 2
135 - working to branch: --rev 2
134 M a
136 M a
135 A b
137 A b
136 a
138 a
137
139
138 diff --git a/a b/a
140 diff --git a/a b/a
139 --- a/a
141 --- a/a
140 +++ b/a
142 +++ b/a
141 @@ -1,3 +1,4 @@
143 @@ -1,3 +1,4 @@
142 a
144 a
143 -m1
145 -m1
144 -m2
146 -m2
145 +1
147 +1
146 +a1
148 +a1
147 +a2
149 +a2
148 diff --git a/a b/b
150 diff --git a/a b/b
149 copy from a
151 copy from a
150 copy to b
152 copy to b
151 --- a/a
153 --- a/a
152 +++ b/b
154 +++ b/b
153 @@ -1,3 +1,4 @@
155 @@ -1,3 +1,4 @@
154 a
156 a
155 -m1
157 -m1
156 -m2
158 -m2
157 +1
159 +1
158 +a1
160 +a1
159 +a2
161 +a2
160
162
161 - root to parent: --rev 0 --rev .
163 - root to parent: --rev 0 --rev .
162 M a
164 M a
163
165
164 diff --git a/a b/a
166 diff --git a/a b/a
165 --- a/a
167 --- a/a
166 +++ b/a
168 +++ b/a
167 @@ -1,1 +1,4 @@
169 @@ -1,1 +1,4 @@
168 a
170 a
169 +1
171 +1
170 +a1
172 +a1
171 +a2
173 +a2
172
174
173 - parent to root: --rev . --rev 0
175 - parent to root: --rev . --rev 0
174 M a
176 M a
175
177
176 diff --git a/a b/a
178 diff --git a/a b/a
177 --- a/a
179 --- a/a
178 +++ b/a
180 +++ b/a
179 @@ -1,4 +1,1 @@
181 @@ -1,4 +1,1 @@
180 a
182 a
181 -1
183 -1
182 -a1
184 -a1
183 -a2
185 -a2
184
186
185 - branch to parent: --rev 2 --rev .
187 - branch to parent: --rev 2 --rev .
186 M a
188 M a
187
189
188 diff --git a/a b/a
190 diff --git a/a b/a
189 --- a/a
191 --- a/a
190 +++ b/a
192 +++ b/a
191 @@ -1,3 +1,4 @@
193 @@ -1,3 +1,4 @@
192 a
194 a
193 -m1
195 -m1
194 -m2
196 -m2
195 +1
197 +1
196 +a1
198 +a1
197 +a2
199 +a2
198
200
199 - parent to branch: --rev . --rev 2
201 - parent to branch: --rev . --rev 2
200 M a
202 M a
201
203
202 diff --git a/a b/a
204 diff --git a/a b/a
203 --- a/a
205 --- a/a
204 +++ b/a
206 +++ b/a
205 @@ -1,4 +1,3 @@
207 @@ -1,4 +1,3 @@
206 a
208 a
207 -1
209 -1
208 -a1
210 -a1
209 -a2
211 -a2
210 +m1
212 +m1
211 +m2
213 +m2
212
214
213
215
216 created new head
214 ** single rename **
217 ** single rename **
215 ** hg mv a b / add b b1 / add b w
218 ** hg mv a b / add b b1 / add b w
216 - working to parent:
219 - working to parent:
217 M b
220 M b
218
221
219 diff --git a/b b/b
222 diff --git a/b b/b
220 --- a/b
223 --- a/b
221 +++ b/b
224 +++ b/b
222 @@ -1,3 +1,4 @@
225 @@ -1,3 +1,4 @@
223 a
226 a
224 2
227 2
225 b1
228 b1
226 +w
229 +w
227
230
228 - working to root: --rev 0
231 - working to root: --rev 0
229 A b
232 A b
230 a
233 a
231 R a
234 R a
232
235
233 diff --git a/a b/b
236 diff --git a/a b/b
234 rename from a
237 rename from a
235 rename to b
238 rename to b
236 --- a/a
239 --- a/a
237 +++ b/b
240 +++ b/b
238 @@ -1,1 +1,4 @@
241 @@ -1,1 +1,4 @@
239 a
242 a
240 +2
243 +2
241 +b1
244 +b1
242 +w
245 +w
243
246
244 - working to branch: --rev 2
247 - working to branch: --rev 2
245 A b
248 A b
246 a
249 a
247 R a
250 R a
248
251
249 diff --git a/a b/b
252 diff --git a/a b/b
250 rename from a
253 rename from a
251 rename to b
254 rename to b
252 --- a/a
255 --- a/a
253 +++ b/b
256 +++ b/b
254 @@ -1,3 +1,4 @@
257 @@ -1,3 +1,4 @@
255 a
258 a
256 -m1
259 -m1
257 -m2
260 -m2
258 +2
261 +2
259 +b1
262 +b1
260 +w
263 +w
261
264
262 - root to parent: --rev 0 --rev .
265 - root to parent: --rev 0 --rev .
263 A b
266 A b
264 a
267 a
265 R a
268 R a
266
269
267 diff --git a/a b/b
270 diff --git a/a b/b
268 rename from a
271 rename from a
269 rename to b
272 rename to b
270 --- a/a
273 --- a/a
271 +++ b/b
274 +++ b/b
272 @@ -1,1 +1,3 @@
275 @@ -1,1 +1,3 @@
273 a
276 a
274 +2
277 +2
275 +b1
278 +b1
276
279
277 - parent to root: --rev . --rev 0
280 - parent to root: --rev . --rev 0
278 A a
281 A a
279 b
282 b
280 R b
283 R b
281
284
282 diff --git a/b b/a
285 diff --git a/b b/a
283 rename from b
286 rename from b
284 rename to a
287 rename to a
285 --- a/b
288 --- a/b
286 +++ b/a
289 +++ b/a
287 @@ -1,3 +1,1 @@
290 @@ -1,3 +1,1 @@
288 a
291 a
289 -2
292 -2
290 -b1
293 -b1
291
294
292 - branch to parent: --rev 2 --rev .
295 - branch to parent: --rev 2 --rev .
293 A b
296 A b
294 a
297 a
295 R a
298 R a
296
299
297 diff --git a/a b/b
300 diff --git a/a b/b
298 rename from a
301 rename from a
299 rename to b
302 rename to b
300 --- a/a
303 --- a/a
301 +++ b/b
304 +++ b/b
302 @@ -1,3 +1,3 @@
305 @@ -1,3 +1,3 @@
303 a
306 a
304 -m1
307 -m1
305 -m2
308 -m2
306 +2
309 +2
307 +b1
310 +b1
308
311
309 - parent to branch: --rev . --rev 2
312 - parent to branch: --rev . --rev 2
310 A a
313 A a
311 b
314 b
312 R b
315 R b
313
316
314 diff --git a/b b/a
317 diff --git a/b b/a
315 rename from b
318 rename from b
316 rename to a
319 rename to a
317 --- a/b
320 --- a/b
318 +++ b/a
321 +++ b/a
319 @@ -1,3 +1,3 @@
322 @@ -1,3 +1,3 @@
320 a
323 a
321 -2
324 -2
322 -b1
325 -b1
323 +m1
326 +m1
324 +m2
327 +m2
325
328
326
329
330 created new head
327 ** single copy **
331 ** single copy **
328 ** hg cp a b / add b b1 / add a w
332 ** hg cp a b / add b b1 / add a w
329 - working to parent:
333 - working to parent:
330 M a
334 M a
331
335
332 diff --git a/a b/a
336 diff --git a/a b/a
333 --- a/a
337 --- a/a
334 +++ b/a
338 +++ b/a
335 @@ -1,2 +1,3 @@
339 @@ -1,2 +1,3 @@
336 a
340 a
337 3
341 3
338 +w
342 +w
339
343
340 - working to root: --rev 0
344 - working to root: --rev 0
341 M a
345 M a
342 A b
346 A b
343 a
347 a
344
348
345 diff --git a/a b/a
349 diff --git a/a b/a
346 --- a/a
350 --- a/a
347 +++ b/a
351 +++ b/a
348 @@ -1,1 +1,3 @@
352 @@ -1,1 +1,3 @@
349 a
353 a
350 +3
354 +3
351 +w
355 +w
352 diff --git a/a b/b
356 diff --git a/a b/b
353 copy from a
357 copy from a
354 copy to b
358 copy to b
355 --- a/a
359 --- a/a
356 +++ b/b
360 +++ b/b
357 @@ -1,1 +1,3 @@
361 @@ -1,1 +1,3 @@
358 a
362 a
359 +3
363 +3
360 +b1
364 +b1
361
365
362 - working to branch: --rev 2
366 - working to branch: --rev 2
363 M a
367 M a
364 A b
368 A b
365 a
369 a
366
370
367 diff --git a/a b/a
371 diff --git a/a b/a
368 --- a/a
372 --- a/a
369 +++ b/a
373 +++ b/a
370 @@ -1,3 +1,3 @@
374 @@ -1,3 +1,3 @@
371 a
375 a
372 -m1
376 -m1
373 -m2
377 -m2
374 +3
378 +3
375 +w
379 +w
376 diff --git a/a b/b
380 diff --git a/a b/b
377 copy from a
381 copy from a
378 copy to b
382 copy to b
379 --- a/a
383 --- a/a
380 +++ b/b
384 +++ b/b
381 @@ -1,3 +1,3 @@
385 @@ -1,3 +1,3 @@
382 a
386 a
383 -m1
387 -m1
384 -m2
388 -m2
385 +3
389 +3
386 +b1
390 +b1
387
391
388 - root to parent: --rev 0 --rev .
392 - root to parent: --rev 0 --rev .
389 M a
393 M a
390 A b
394 A b
391 a
395 a
392
396
393 diff --git a/a b/a
397 diff --git a/a b/a
394 --- a/a
398 --- a/a
395 +++ b/a
399 +++ b/a
396 @@ -1,1 +1,2 @@
400 @@ -1,1 +1,2 @@
397 a
401 a
398 +3
402 +3
399 diff --git a/a b/b
403 diff --git a/a b/b
400 copy from a
404 copy from a
401 copy to b
405 copy to b
402 --- a/a
406 --- a/a
403 +++ b/b
407 +++ b/b
404 @@ -1,1 +1,3 @@
408 @@ -1,1 +1,3 @@
405 a
409 a
406 +3
410 +3
407 +b1
411 +b1
408
412
409 - parent to root: --rev . --rev 0
413 - parent to root: --rev . --rev 0
410 M a
414 M a
411 R b
415 R b
412
416
413 diff --git a/a b/a
417 diff --git a/a b/a
414 --- a/a
418 --- a/a
415 +++ b/a
419 +++ b/a
416 @@ -1,2 +1,1 @@
420 @@ -1,2 +1,1 @@
417 a
421 a
418 -3
422 -3
419 diff --git a/b b/b
423 diff --git a/b b/b
420 deleted file mode 100644
424 deleted file mode 100644
421 --- a/b
425 --- a/b
422 +++ /dev/null
426 +++ /dev/null
423 @@ -1,3 +0,0 @@
427 @@ -1,3 +0,0 @@
424 -a
428 -a
425 -3
429 -3
426 -b1
430 -b1
427
431
428 - branch to parent: --rev 2 --rev .
432 - branch to parent: --rev 2 --rev .
429 M a
433 M a
430 A b
434 A b
431 a
435 a
432
436
433 diff --git a/a b/a
437 diff --git a/a b/a
434 --- a/a
438 --- a/a
435 +++ b/a
439 +++ b/a
436 @@ -1,3 +1,2 @@
440 @@ -1,3 +1,2 @@
437 a
441 a
438 -m1
442 -m1
439 -m2
443 -m2
440 +3
444 +3
441 diff --git a/a b/b
445 diff --git a/a b/b
442 copy from a
446 copy from a
443 copy to b
447 copy to b
444 --- a/a
448 --- a/a
445 +++ b/b
449 +++ b/b
446 @@ -1,3 +1,3 @@
450 @@ -1,3 +1,3 @@
447 a
451 a
448 -m1
452 -m1
449 -m2
453 -m2
450 +3
454 +3
451 +b1
455 +b1
452
456
453 - parent to branch: --rev . --rev 2
457 - parent to branch: --rev . --rev 2
454 M a
458 M a
455 R b
459 R b
456
460
457 diff --git a/a b/a
461 diff --git a/a b/a
458 --- a/a
462 --- a/a
459 +++ b/a
463 +++ b/a
460 @@ -1,2 +1,3 @@
464 @@ -1,2 +1,3 @@
461 a
465 a
462 -3
466 -3
463 +m1
467 +m1
464 +m2
468 +m2
465 diff --git a/b b/b
469 diff --git a/b b/b
466 deleted file mode 100644
470 deleted file mode 100644
467 --- a/b
471 --- a/b
468 +++ /dev/null
472 +++ /dev/null
469 @@ -1,3 +0,0 @@
473 @@ -1,3 +0,0 @@
470 -a
474 -a
471 -3
475 -3
472 -b1
476 -b1
473
477
474
478
479 created new head
475 ** rename chain **
480 ** rename chain **
476 ** hg mv a b / hg mv b c / hg mv c d
481 ** hg mv a b / hg mv b c / hg mv c d
477 - working to parent:
482 - working to parent:
478 A d
483 A d
479 c
484 c
480 R c
485 R c
481
486
482 diff --git a/c b/d
487 diff --git a/c b/d
483 rename from c
488 rename from c
484 rename to d
489 rename to d
485
490
486 - working to root: --rev 0
491 - working to root: --rev 0
487 A d
492 A d
488 a
493 a
489 R a
494 R a
490
495
491 diff --git a/a b/d
496 diff --git a/a b/d
492 rename from a
497 rename from a
493 rename to d
498 rename to d
494 --- a/a
499 --- a/a
495 +++ b/d
500 +++ b/d
496 @@ -1,1 +1,2 @@
501 @@ -1,1 +1,2 @@
497 a
502 a
498 +4
503 +4
499
504
500 - working to branch: --rev 2
505 - working to branch: --rev 2
501 A d
506 A d
502 a
507 a
503 R a
508 R a
504
509
505 diff --git a/a b/d
510 diff --git a/a b/d
506 rename from a
511 rename from a
507 rename to d
512 rename to d
508 --- a/a
513 --- a/a
509 +++ b/d
514 +++ b/d
510 @@ -1,3 +1,2 @@
515 @@ -1,3 +1,2 @@
511 a
516 a
512 -m1
517 -m1
513 -m2
518 -m2
514 +4
519 +4
515
520
516 - root to parent: --rev 0 --rev .
521 - root to parent: --rev 0 --rev .
517 A c
522 A c
518 a
523 a
519 R a
524 R a
520
525
521 diff --git a/a b/c
526 diff --git a/a b/c
522 rename from a
527 rename from a
523 rename to c
528 rename to c
524 --- a/a
529 --- a/a
525 +++ b/c
530 +++ b/c
526 @@ -1,1 +1,2 @@
531 @@ -1,1 +1,2 @@
527 a
532 a
528 +4
533 +4
529
534
530 - parent to root: --rev . --rev 0
535 - parent to root: --rev . --rev 0
531 A a
536 A a
532 c
537 c
533 R c
538 R c
534
539
535 diff --git a/c b/a
540 diff --git a/c b/a
536 rename from c
541 rename from c
537 rename to a
542 rename to a
538 --- a/c
543 --- a/c
539 +++ b/a
544 +++ b/a
540 @@ -1,2 +1,1 @@
545 @@ -1,2 +1,1 @@
541 a
546 a
542 -4
547 -4
543
548
544 - branch to parent: --rev 2 --rev .
549 - branch to parent: --rev 2 --rev .
545 A c
550 A c
546 a
551 a
547 R a
552 R a
548
553
549 diff --git a/a b/c
554 diff --git a/a b/c
550 rename from a
555 rename from a
551 rename to c
556 rename to c
552 --- a/a
557 --- a/a
553 +++ b/c
558 +++ b/c
554 @@ -1,3 +1,2 @@
559 @@ -1,3 +1,2 @@
555 a
560 a
556 -m1
561 -m1
557 -m2
562 -m2
558 +4
563 +4
559
564
560 - parent to branch: --rev . --rev 2
565 - parent to branch: --rev . --rev 2
561 A a
566 A a
562 c
567 c
563 R c
568 R c
564
569
565 diff --git a/c b/a
570 diff --git a/c b/a
566 rename from c
571 rename from c
567 rename to a
572 rename to a
568 --- a/c
573 --- a/c
569 +++ b/a
574 +++ b/a
570 @@ -1,2 +1,3 @@
575 @@ -1,2 +1,3 @@
571 a
576 a
572 -4
577 -4
573 +m1
578 +m1
574 +m2
579 +m2
575
580
576
581
582 created new head
577 ** copy chain **
583 ** copy chain **
578 ** hg cp a b / hg cp b c / hg cp c d
584 ** hg cp a b / hg cp b c / hg cp c d
579 - working to parent:
585 - working to parent:
580 A d
586 A d
581 c
587 c
582
588
583 diff --git a/c b/d
589 diff --git a/c b/d
584 copy from c
590 copy from c
585 copy to d
591 copy to d
586
592
587 - working to root: --rev 0
593 - working to root: --rev 0
588 M a
594 M a
589 A b
595 A b
590 a
596 a
591 A c
597 A c
592 a
598 a
593 A d
599 A d
594 a
600 a
595
601
596 diff --git a/a b/a
602 diff --git a/a b/a
597 --- a/a
603 --- a/a
598 +++ b/a
604 +++ b/a
599 @@ -1,1 +1,2 @@
605 @@ -1,1 +1,2 @@
600 a
606 a
601 +5
607 +5
602 diff --git a/a b/b
608 diff --git a/a b/b
603 copy from a
609 copy from a
604 copy to b
610 copy to b
605 --- a/a
611 --- a/a
606 +++ b/b
612 +++ b/b
607 @@ -1,1 +1,2 @@
613 @@ -1,1 +1,2 @@
608 a
614 a
609 +5
615 +5
610 diff --git a/a b/c
616 diff --git a/a b/c
611 copy from a
617 copy from a
612 copy to c
618 copy to c
613 --- a/a
619 --- a/a
614 +++ b/c
620 +++ b/c
615 @@ -1,1 +1,2 @@
621 @@ -1,1 +1,2 @@
616 a
622 a
617 +5
623 +5
618 diff --git a/a b/d
624 diff --git a/a b/d
619 copy from a
625 copy from a
620 copy to d
626 copy to d
621 --- a/a
627 --- a/a
622 +++ b/d
628 +++ b/d
623 @@ -1,1 +1,2 @@
629 @@ -1,1 +1,2 @@
624 a
630 a
625 +5
631 +5
626
632
627 - working to branch: --rev 2
633 - working to branch: --rev 2
628 M a
634 M a
629 A b
635 A b
630 a
636 a
631 A c
637 A c
632 a
638 a
633 A d
639 A d
634 a
640 a
635
641
636 diff --git a/a b/a
642 diff --git a/a b/a
637 --- a/a
643 --- a/a
638 +++ b/a
644 +++ b/a
639 @@ -1,3 +1,2 @@
645 @@ -1,3 +1,2 @@
640 a
646 a
641 -m1
647 -m1
642 -m2
648 -m2
643 +5
649 +5
644 diff --git a/a b/b
650 diff --git a/a b/b
645 copy from a
651 copy from a
646 copy to b
652 copy to b
647 --- a/a
653 --- a/a
648 +++ b/b
654 +++ b/b
649 @@ -1,3 +1,2 @@
655 @@ -1,3 +1,2 @@
650 a
656 a
651 -m1
657 -m1
652 -m2
658 -m2
653 +5
659 +5
654 diff --git a/a b/c
660 diff --git a/a b/c
655 copy from a
661 copy from a
656 copy to c
662 copy to c
657 --- a/a
663 --- a/a
658 +++ b/c
664 +++ b/c
659 @@ -1,3 +1,2 @@
665 @@ -1,3 +1,2 @@
660 a
666 a
661 -m1
667 -m1
662 -m2
668 -m2
663 +5
669 +5
664 diff --git a/a b/d
670 diff --git a/a b/d
665 copy from a
671 copy from a
666 copy to d
672 copy to d
667 --- a/a
673 --- a/a
668 +++ b/d
674 +++ b/d
669 @@ -1,3 +1,2 @@
675 @@ -1,3 +1,2 @@
670 a
676 a
671 -m1
677 -m1
672 -m2
678 -m2
673 +5
679 +5
674
680
675 - root to parent: --rev 0 --rev .
681 - root to parent: --rev 0 --rev .
676 M a
682 M a
677 A b
683 A b
678 a
684 a
679 A c
685 A c
680 a
686 a
681
687
682 diff --git a/a b/a
688 diff --git a/a b/a
683 --- a/a
689 --- a/a
684 +++ b/a
690 +++ b/a
685 @@ -1,1 +1,2 @@
691 @@ -1,1 +1,2 @@
686 a
692 a
687 +5
693 +5
688 diff --git a/a b/b
694 diff --git a/a b/b
689 copy from a
695 copy from a
690 copy to b
696 copy to b
691 --- a/a
697 --- a/a
692 +++ b/b
698 +++ b/b
693 @@ -1,1 +1,2 @@
699 @@ -1,1 +1,2 @@
694 a
700 a
695 +5
701 +5
696 diff --git a/a b/c
702 diff --git a/a b/c
697 copy from a
703 copy from a
698 copy to c
704 copy to c
699 --- a/a
705 --- a/a
700 +++ b/c
706 +++ b/c
701 @@ -1,1 +1,2 @@
707 @@ -1,1 +1,2 @@
702 a
708 a
703 +5
709 +5
704
710
705 - parent to root: --rev . --rev 0
711 - parent to root: --rev . --rev 0
706 M a
712 M a
707 R b
713 R b
708 R c
714 R c
709
715
710 diff --git a/a b/a
716 diff --git a/a b/a
711 --- a/a
717 --- a/a
712 +++ b/a
718 +++ b/a
713 @@ -1,2 +1,1 @@
719 @@ -1,2 +1,1 @@
714 a
720 a
715 -5
721 -5
716 diff --git a/b b/b
722 diff --git a/b b/b
717 deleted file mode 100644
723 deleted file mode 100644
718 --- a/b
724 --- a/b
719 +++ /dev/null
725 +++ /dev/null
720 @@ -1,2 +0,0 @@
726 @@ -1,2 +0,0 @@
721 -a
727 -a
722 -5
728 -5
723 diff --git a/c b/c
729 diff --git a/c b/c
724 deleted file mode 100644
730 deleted file mode 100644
725 --- a/c
731 --- a/c
726 +++ /dev/null
732 +++ /dev/null
727 @@ -1,2 +0,0 @@
733 @@ -1,2 +0,0 @@
728 -a
734 -a
729 -5
735 -5
730
736
731 - branch to parent: --rev 2 --rev .
737 - branch to parent: --rev 2 --rev .
732 M a
738 M a
733 A b
739 A b
734 a
740 a
735 A c
741 A c
736 a
742 a
737
743
738 diff --git a/a b/a
744 diff --git a/a b/a
739 --- a/a
745 --- a/a
740 +++ b/a
746 +++ b/a
741 @@ -1,3 +1,2 @@
747 @@ -1,3 +1,2 @@
742 a
748 a
743 -m1
749 -m1
744 -m2
750 -m2
745 +5
751 +5
746 diff --git a/a b/b
752 diff --git a/a b/b
747 copy from a
753 copy from a
748 copy to b
754 copy to b
749 --- a/a
755 --- a/a
750 +++ b/b
756 +++ b/b
751 @@ -1,3 +1,2 @@
757 @@ -1,3 +1,2 @@
752 a
758 a
753 -m1
759 -m1
754 -m2
760 -m2
755 +5
761 +5
756 diff --git a/a b/c
762 diff --git a/a b/c
757 copy from a
763 copy from a
758 copy to c
764 copy to c
759 --- a/a
765 --- a/a
760 +++ b/c
766 +++ b/c
761 @@ -1,3 +1,2 @@
767 @@ -1,3 +1,2 @@
762 a
768 a
763 -m1
769 -m1
764 -m2
770 -m2
765 +5
771 +5
766
772
767 - parent to branch: --rev . --rev 2
773 - parent to branch: --rev . --rev 2
768 M a
774 M a
769 R b
775 R b
770 R c
776 R c
771
777
772 diff --git a/a b/a
778 diff --git a/a b/a
773 --- a/a
779 --- a/a
774 +++ b/a
780 +++ b/a
775 @@ -1,2 +1,3 @@
781 @@ -1,2 +1,3 @@
776 a
782 a
777 -5
783 -5
778 +m1
784 +m1
779 +m2
785 +m2
780 diff --git a/b b/b
786 diff --git a/b b/b
781 deleted file mode 100644
787 deleted file mode 100644
782 --- a/b
788 --- a/b
783 +++ /dev/null
789 +++ /dev/null
784 @@ -1,2 +0,0 @@
790 @@ -1,2 +0,0 @@
785 -a
791 -a
786 -5
792 -5
787 diff --git a/c b/c
793 diff --git a/c b/c
788 deleted file mode 100644
794 deleted file mode 100644
789 --- a/c
795 --- a/c
790 +++ /dev/null
796 +++ /dev/null
791 @@ -1,2 +0,0 @@
797 @@ -1,2 +0,0 @@
792 -a
798 -a
793 -5
799 -5
794
800
795
801
802 created new head
796 ** circular rename **
803 ** circular rename **
797 ** add a a1 / hg mv a b / hg mv b a
804 ** add a a1 / hg mv a b / hg mv b a
798 - working to parent:
805 - working to parent:
799 A a
806 A a
800 b
807 b
801 R b
808 R b
802
809
803 diff --git a/b b/a
810 diff --git a/b b/a
804 rename from b
811 rename from b
805 rename to a
812 rename to a
806
813
807 - working to root: --rev 0
814 - working to root: --rev 0
808 M a
815 M a
809
816
810 diff --git a/a b/a
817 diff --git a/a b/a
811 --- a/a
818 --- a/a
812 +++ b/a
819 +++ b/a
813 @@ -1,1 +1,3 @@
820 @@ -1,1 +1,3 @@
814 a
821 a
815 +6
822 +6
816 +a1
823 +a1
817
824
818 - working to branch: --rev 2
825 - working to branch: --rev 2
819 M a
826 M a
820
827
821 diff --git a/a b/a
828 diff --git a/a b/a
822 --- a/a
829 --- a/a
823 +++ b/a
830 +++ b/a
824 @@ -1,3 +1,3 @@
831 @@ -1,3 +1,3 @@
825 a
832 a
826 -m1
833 -m1
827 -m2
834 -m2
828 +6
835 +6
829 +a1
836 +a1
830
837
831 - root to parent: --rev 0 --rev .
838 - root to parent: --rev 0 --rev .
832 A b
839 A b
833 a
840 a
834 R a
841 R a
835
842
836 diff --git a/a b/b
843 diff --git a/a b/b
837 rename from a
844 rename from a
838 rename to b
845 rename to b
839 --- a/a
846 --- a/a
840 +++ b/b
847 +++ b/b
841 @@ -1,1 +1,3 @@
848 @@ -1,1 +1,3 @@
842 a
849 a
843 +6
850 +6
844 +a1
851 +a1
845
852
846 - parent to root: --rev . --rev 0
853 - parent to root: --rev . --rev 0
847 A a
854 A a
848 b
855 b
849 R b
856 R b
850
857
851 diff --git a/b b/a
858 diff --git a/b b/a
852 rename from b
859 rename from b
853 rename to a
860 rename to a
854 --- a/b
861 --- a/b
855 +++ b/a
862 +++ b/a
856 @@ -1,3 +1,1 @@
863 @@ -1,3 +1,1 @@
857 a
864 a
858 -6
865 -6
859 -a1
866 -a1
860
867
861 - branch to parent: --rev 2 --rev .
868 - branch to parent: --rev 2 --rev .
862 A b
869 A b
863 a
870 a
864 R a
871 R a
865
872
866 diff --git a/a b/b
873 diff --git a/a b/b
867 rename from a
874 rename from a
868 rename to b
875 rename to b
869 --- a/a
876 --- a/a
870 +++ b/b
877 +++ b/b
871 @@ -1,3 +1,3 @@
878 @@ -1,3 +1,3 @@
872 a
879 a
873 -m1
880 -m1
874 -m2
881 -m2
875 +6
882 +6
876 +a1
883 +a1
877
884
878 - parent to branch: --rev . --rev 2
885 - parent to branch: --rev . --rev 2
879 A a
886 A a
880 b
887 b
881 R b
888 R b
882
889
883 diff --git a/b b/a
890 diff --git a/b b/a
884 rename from b
891 rename from b
885 rename to a
892 rename to a
886 --- a/b
893 --- a/b
887 +++ b/a
894 +++ b/a
888 @@ -1,3 +1,3 @@
895 @@ -1,3 +1,3 @@
889 a
896 a
890 -6
897 -6
891 -a1
898 -a1
892 +m1
899 +m1
893 +m2
900 +m2
894
901
895
902
@@ -1,117 +1,118 b''
1 marked working directory as branch foo
1 marked working directory as branch foo
2 foo
2 foo
3 marked working directory as branch bar
3 marked working directory as branch bar
4 % branch shadowing
4 % branch shadowing
5 abort: a branch of the same name already exists (use --force to override)
5 abort: a branch of the same name already exists (use --force to override)
6 marked working directory as branch default
6 marked working directory as branch default
7 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
7 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
8 foo
8 foo
9 created new head
9 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
10 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
10 (branch merge, don't forget to commit)
11 (branch merge, don't forget to commit)
11 foo
12 foo
12 changeset: 5:5f8fb06e083e
13 changeset: 5:5f8fb06e083e
13 branch: foo
14 branch: foo
14 tag: tip
15 tag: tip
15 parent: 4:4909a3732169
16 parent: 4:4909a3732169
16 parent: 3:bf1bc2f45e83
17 parent: 3:bf1bc2f45e83
17 user: test
18 user: test
18 date: Mon Jan 12 13:46:40 1970 +0000
19 date: Mon Jan 12 13:46:40 1970 +0000
19 summary: merge
20 summary: merge
20
21
21 changeset: 4:4909a3732169
22 changeset: 4:4909a3732169
22 branch: foo
23 branch: foo
23 parent: 1:b699b1cec9c2
24 parent: 1:b699b1cec9c2
24 user: test
25 user: test
25 date: Mon Jan 12 13:46:40 1970 +0000
26 date: Mon Jan 12 13:46:40 1970 +0000
26 summary: modify a branch
27 summary: modify a branch
27
28
28 changeset: 3:bf1bc2f45e83
29 changeset: 3:bf1bc2f45e83
29 user: test
30 user: test
30 date: Mon Jan 12 13:46:40 1970 +0000
31 date: Mon Jan 12 13:46:40 1970 +0000
31 summary: clear branch name
32 summary: clear branch name
32
33
33 changeset: 2:67ec16bde7f1
34 changeset: 2:67ec16bde7f1
34 branch: bar
35 branch: bar
35 user: test
36 user: test
36 date: Mon Jan 12 13:46:40 1970 +0000
37 date: Mon Jan 12 13:46:40 1970 +0000
37 summary: change branch name
38 summary: change branch name
38
39
39 changeset: 1:b699b1cec9c2
40 changeset: 1:b699b1cec9c2
40 branch: foo
41 branch: foo
41 user: test
42 user: test
42 date: Mon Jan 12 13:46:40 1970 +0000
43 date: Mon Jan 12 13:46:40 1970 +0000
43 summary: add branch name
44 summary: add branch name
44
45
45 changeset: 0:be8523e69bf8
46 changeset: 0:be8523e69bf8
46 user: test
47 user: test
47 date: Mon Jan 12 13:46:40 1970 +0000
48 date: Mon Jan 12 13:46:40 1970 +0000
48 summary: initial
49 summary: initial
49
50
50 foo 5:5f8fb06e083e
51 foo 5:5f8fb06e083e
51 default 3:bf1bc2f45e83 (inactive)
52 default 3:bf1bc2f45e83 (inactive)
52 bar 2:67ec16bde7f1 (inactive)
53 bar 2:67ec16bde7f1 (inactive)
53 foo
54 foo
54 default
55 default
55 bar
56 bar
56 % test for invalid branch cache
57 % test for invalid branch cache
57 rolling back last transaction
58 rolling back last transaction
58 changeset: 4:4909a3732169
59 changeset: 4:4909a3732169
59 branch: foo
60 branch: foo
60 tag: tip
61 tag: tip
61 parent: 1:b699b1cec9c2
62 parent: 1:b699b1cec9c2
62 user: test
63 user: test
63 date: Mon Jan 12 13:46:40 1970 +0000
64 date: Mon Jan 12 13:46:40 1970 +0000
64 summary: modify a branch
65 summary: modify a branch
65
66
66 invalidating branch cache (tip differs)
67 invalidating branch cache (tip differs)
67 changeset: 4:4909a3732169c0c20011c4f4b8fdff4e3d89b23f
68 changeset: 4:4909a3732169c0c20011c4f4b8fdff4e3d89b23f
68 branch: foo
69 branch: foo
69 tag: tip
70 tag: tip
70 parent: 1:b699b1cec9c2966b3700de4fef0dc123cd754c31
71 parent: 1:b699b1cec9c2966b3700de4fef0dc123cd754c31
71 parent: -1:0000000000000000000000000000000000000000
72 parent: -1:0000000000000000000000000000000000000000
72 manifest: 4:d01b250baaa05909152f7ae07d7a649deea0df9a
73 manifest: 4:d01b250baaa05909152f7ae07d7a649deea0df9a
73 user: test
74 user: test
74 date: Mon Jan 12 13:46:40 1970 +0000
75 date: Mon Jan 12 13:46:40 1970 +0000
75 files: a
76 files: a
76 extra: branch=foo
77 extra: branch=foo
77 description:
78 description:
78 modify a branch
79 modify a branch
79
80
80
81
81 4:4909a3732169
82 4:4909a3732169
82 4909a3732169c0c20011c4f4b8fdff4e3d89b23f 4
83 4909a3732169c0c20011c4f4b8fdff4e3d89b23f 4
83 bf1bc2f45e834c75404d0ddab57d53beab56e2f8 default
84 bf1bc2f45e834c75404d0ddab57d53beab56e2f8 default
84 4909a3732169c0c20011c4f4b8fdff4e3d89b23f foo
85 4909a3732169c0c20011c4f4b8fdff4e3d89b23f foo
85 67ec16bde7f1575d523313b9bca000f6a6f12dca bar
86 67ec16bde7f1575d523313b9bca000f6a6f12dca bar
86 % push should update the branch cache
87 % push should update the branch cache
87 % pushing just rev 0
88 % pushing just rev 0
88 be8523e69bf892e25817fc97187516b3c0804ae4 0
89 be8523e69bf892e25817fc97187516b3c0804ae4 0
89 be8523e69bf892e25817fc97187516b3c0804ae4 default
90 be8523e69bf892e25817fc97187516b3c0804ae4 default
90 % pushing everything
91 % pushing everything
91 4909a3732169c0c20011c4f4b8fdff4e3d89b23f 4
92 4909a3732169c0c20011c4f4b8fdff4e3d89b23f 4
92 bf1bc2f45e834c75404d0ddab57d53beab56e2f8 default
93 bf1bc2f45e834c75404d0ddab57d53beab56e2f8 default
93 4909a3732169c0c20011c4f4b8fdff4e3d89b23f foo
94 4909a3732169c0c20011c4f4b8fdff4e3d89b23f foo
94 67ec16bde7f1575d523313b9bca000f6a6f12dca bar
95 67ec16bde7f1575d523313b9bca000f6a6f12dca bar
95 % update with no arguments: tipmost revision of the current branch
96 % update with no arguments: tipmost revision of the current branch
96 bf1bc2f45e83
97 bf1bc2f45e83
97 4909a3732169 (foo) tip
98 4909a3732169 (foo) tip
98 marked working directory as branch foobar
99 marked working directory as branch foobar
99 abort: branch foobar not found
100 abort: branch foobar not found
100 % fastforward merge
101 % fastforward merge
101 marked working directory as branch ff
102 marked working directory as branch ff
102 adding ff
103 adding ff
103 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
104 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
104 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
105 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
105 (branch merge, don't forget to commit)
106 (branch merge, don't forget to commit)
106 foo
107 foo
107 changeset: 6:f0c74f92a385
108 changeset: 6:f0c74f92a385
108 branch: foo
109 branch: foo
109 tag: tip
110 tag: tip
110 parent: 4:4909a3732169
111 parent: 4:4909a3732169
111 parent: 5:c420d2121b71
112 parent: 5:c420d2121b71
112 user: test
113 user: test
113 date: Mon Jan 12 13:46:40 1970 +0000
114 date: Mon Jan 12 13:46:40 1970 +0000
114 summary: Merge ff into foo
115 summary: Merge ff into foo
115
116
116 a
117 a
117 ff
118 ff
@@ -1,95 +1,96 b''
1 % no working directory
1 % no working directory
2 adding a
2 adding a
3 adding b
3 adding b
4 adding c
4 adding c
5 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
5 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
6 adding c
6 adding c
7 created new head
7 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
8 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
8 % hg parents
9 % hg parents
9 changeset: 3:02d851b7e549
10 changeset: 3:02d851b7e549
10 user: test
11 user: test
11 date: Thu Jan 01 00:00:03 1970 +0000
12 date: Thu Jan 01 00:00:03 1970 +0000
12 summary: c
13 summary: c
13
14
14 % hg parents a
15 % hg parents a
15 changeset: 1:d786049f033a
16 changeset: 1:d786049f033a
16 user: test
17 user: test
17 date: Thu Jan 01 00:00:01 1970 +0000
18 date: Thu Jan 01 00:00:01 1970 +0000
18 summary: a
19 summary: a
19
20
20 % hg parents c, single revision
21 % hg parents c, single revision
21 changeset: 3:02d851b7e549
22 changeset: 3:02d851b7e549
22 user: test
23 user: test
23 date: Thu Jan 01 00:00:03 1970 +0000
24 date: Thu Jan 01 00:00:03 1970 +0000
24 summary: c
25 summary: c
25
26
26 % hg parents -r 3 c
27 % hg parents -r 3 c
27 abort: 'c' not found in manifest!
28 abort: 'c' not found in manifest!
28 % hg parents -r 2
29 % hg parents -r 2
29 changeset: 1:d786049f033a
30 changeset: 1:d786049f033a
30 user: test
31 user: test
31 date: Thu Jan 01 00:00:01 1970 +0000
32 date: Thu Jan 01 00:00:01 1970 +0000
32 summary: a
33 summary: a
33
34
34 % hg parents -r 2 a
35 % hg parents -r 2 a
35 changeset: 1:d786049f033a
36 changeset: 1:d786049f033a
36 user: test
37 user: test
37 date: Thu Jan 01 00:00:01 1970 +0000
38 date: Thu Jan 01 00:00:01 1970 +0000
38 summary: a
39 summary: a
39
40
40 % hg parents -r 2 ../a
41 % hg parents -r 2 ../a
41 abort: ../a not under root
42 abort: ../a not under root
42 % cd dir; hg parents -r 2 ../a
43 % cd dir; hg parents -r 2 ../a
43 changeset: 1:d786049f033a
44 changeset: 1:d786049f033a
44 user: test
45 user: test
45 date: Thu Jan 01 00:00:01 1970 +0000
46 date: Thu Jan 01 00:00:01 1970 +0000
46 summary: a
47 summary: a
47
48
48 % hg parents -r 2 path:a
49 % hg parents -r 2 path:a
49 changeset: 1:d786049f033a
50 changeset: 1:d786049f033a
50 user: test
51 user: test
51 date: Thu Jan 01 00:00:01 1970 +0000
52 date: Thu Jan 01 00:00:01 1970 +0000
52 summary: a
53 summary: a
53
54
54 % hg parents -r 2 glob:a
55 % hg parents -r 2 glob:a
55 abort: can only specify an explicit file name
56 abort: can only specify an explicit file name
56 % merge working dir with 2 parents, hg parents c
57 % merge working dir with 2 parents, hg parents c
57 merging c
58 merging c
58 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
59 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
59 (branch merge, don't forget to commit)
60 (branch merge, don't forget to commit)
60 changeset: 3:02d851b7e549
61 changeset: 3:02d851b7e549
61 user: test
62 user: test
62 date: Thu Jan 01 00:00:03 1970 +0000
63 date: Thu Jan 01 00:00:03 1970 +0000
63 summary: c
64 summary: c
64
65
65 changeset: 4:48cee28d4b4e
66 changeset: 4:48cee28d4b4e
66 tag: tip
67 tag: tip
67 parent: 1:d786049f033a
68 parent: 1:d786049f033a
68 user: test
69 user: test
69 date: Thu Jan 01 00:00:04 1970 +0000
70 date: Thu Jan 01 00:00:04 1970 +0000
70 summary: c2
71 summary: c2
71
72
72 % merge working dir with 1 parent, hg parents
73 % merge working dir with 1 parent, hg parents
73 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
74 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
74 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
75 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
75 (branch merge, don't forget to commit)
76 (branch merge, don't forget to commit)
76 changeset: 2:6cfac479f009
77 changeset: 2:6cfac479f009
77 user: test
78 user: test
78 date: Thu Jan 01 00:00:02 1970 +0000
79 date: Thu Jan 01 00:00:02 1970 +0000
79 summary: b
80 summary: b
80
81
81 changeset: 4:48cee28d4b4e
82 changeset: 4:48cee28d4b4e
82 tag: tip
83 tag: tip
83 parent: 1:d786049f033a
84 parent: 1:d786049f033a
84 user: test
85 user: test
85 date: Thu Jan 01 00:00:04 1970 +0000
86 date: Thu Jan 01 00:00:04 1970 +0000
86 summary: c2
87 summary: c2
87
88
88 % merge working dir with 1 parent, hg parents c
89 % merge working dir with 1 parent, hg parents c
89 changeset: 4:48cee28d4b4e
90 changeset: 4:48cee28d4b4e
90 tag: tip
91 tag: tip
91 parent: 1:d786049f033a
92 parent: 1:d786049f033a
92 user: test
93 user: test
93 date: Thu Jan 01 00:00:04 1970 +0000
94 date: Thu Jan 01 00:00:04 1970 +0000
94 summary: c2
95 summary: c2
95
96
@@ -1,35 +1,36 b''
1 reverting a
1 reverting a
2 created new head
2 changeset 3:107ce1ee2b43 backs out changeset 1:25a1420a55f8
3 changeset 3:107ce1ee2b43 backs out changeset 1:25a1420a55f8
3 merging with changeset 3:107ce1ee2b43
4 merging with changeset 3:107ce1ee2b43
4 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
5 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
5 (branch merge, don't forget to commit)
6 (branch merge, don't forget to commit)
6 abort: invalid date: 'should fail'
7 abort: invalid date: 'should fail'
7 abort: date exceeds 32 bits: 100000000000000000
8 abort: date exceeds 32 bits: 100000000000000000
8 abort: impossible time zone offset: 1400000
9 abort: impossible time zone offset: 1400000
9 Sun Jan 15 13:30:00 2006 +0500
10 Sun Jan 15 13:30:00 2006 +0500
10 Sun Jan 15 13:30:00 2006 -0800
11 Sun Jan 15 13:30:00 2006 -0800
11 Sat Jul 15 13:30:00 2006 +0500
12 Sat Jul 15 13:30:00 2006 +0500
12 Sat Jul 15 13:30:00 2006 -0700
13 Sat Jul 15 13:30:00 2006 -0700
13 Sun Jun 11 00:26:40 2006 -0400
14 Sun Jun 11 00:26:40 2006 -0400
14 Sat Apr 15 13:30:00 2006 +0200
15 Sat Apr 15 13:30:00 2006 +0200
15 Sat Apr 15 13:30:00 2006 +0000
16 Sat Apr 15 13:30:00 2006 +0000
16 Wed Feb 01 13:00:30 2006 -0500
17 Wed Feb 01 13:00:30 2006 -0500
17 Wed Feb 01 13:00:30 2006 +0000
18 Wed Feb 01 13:00:30 2006 +0000
18 internal: 1000000000 -16200
19 internal: 1000000000 -16200
19 standard: Sun Sep 09 06:16:40 2001 +0430
20 standard: Sun Sep 09 06:16:40 2001 +0430
20 internal: 1000000000 -15300
21 internal: 1000000000 -15300
21 standard: Sun Sep 09 06:01:40 2001 +0415
22 standard: Sun Sep 09 06:01:40 2001 +0415
22 internal: 1000000000 -14400
23 internal: 1000000000 -14400
23 standard: Sun Sep 09 05:46:40 2001 +0400
24 standard: Sun Sep 09 05:46:40 2001 +0400
24 internal: 1000000000 0
25 internal: 1000000000 0
25 standard: Sun Sep 09 01:46:40 2001 +0000
26 standard: Sun Sep 09 01:46:40 2001 +0000
26 internal: 1000000000 14400
27 internal: 1000000000 14400
27 standard: Sat Sep 08 21:46:40 2001 -0400
28 standard: Sat Sep 08 21:46:40 2001 -0400
28 internal: 1000000000 15300
29 internal: 1000000000 15300
29 standard: Sat Sep 08 21:31:40 2001 -0415
30 standard: Sat Sep 08 21:31:40 2001 -0415
30 internal: 1000000000 16200
31 internal: 1000000000 16200
31 standard: Sat Sep 08 21:16:40 2001 -0430
32 standard: Sat Sep 08 21:16:40 2001 -0430
32 internal: 999967600 -16200
33 internal: 999967600 -16200
33 standard: Sat Sep 08 21:16:40 2001 +0430
34 standard: Sat Sep 08 21:16:40 2001 +0430
34 internal: 1000000000 16200
35 internal: 1000000000 16200
35 standard: Sat Sep 08 21:16:40 2001 -0430
36 standard: Sat Sep 08 21:16:40 2001 -0430
@@ -1,137 +1,138 b''
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 created new head
2 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
3 rev offset length base linkrev nodeid p1 p2
4 rev offset length base linkrev nodeid p1 p2
4 0 0 3 0 0 362fef284ce2 000000000000 000000000000
5 0 0 3 0 0 362fef284ce2 000000000000 000000000000
5 1 3 5 1 1 125144f7e028 362fef284ce2 000000000000
6 1 3 5 1 1 125144f7e028 362fef284ce2 000000000000
6 2 8 7 2 2 4c982badb186 125144f7e028 000000000000
7 2 8 7 2 2 4c982badb186 125144f7e028 000000000000
7 3 15 9 3 3 19b1fc555737 4c982badb186 000000000000
8 3 15 9 3 3 19b1fc555737 4c982badb186 000000000000
8 rev offset length base linkrev nodeid p1 p2
9 rev offset length base linkrev nodeid p1 p2
9 0 0 75 0 7 905359268f77 000000000000 000000000000
10 0 0 75 0 7 905359268f77 000000000000 000000000000
10 rev offset length base linkrev nodeid p1 p2
11 rev offset length base linkrev nodeid p1 p2
11 0 0 75 0 8 905359268f77 000000000000 000000000000
12 0 0 75 0 8 905359268f77 000000000000 000000000000
12 rev offset length base linkrev nodeid p1 p2
13 rev offset length base linkrev nodeid p1 p2
13 0 0 8 0 6 12ab3bcc5ea4 000000000000 000000000000
14 0 0 8 0 6 12ab3bcc5ea4 000000000000 000000000000
14 rev offset length base linkrev nodeid p1 p2
15 rev offset length base linkrev nodeid p1 p2
15 0 0 48 0 0 43eadb1d2d06 000000000000 000000000000
16 0 0 48 0 0 43eadb1d2d06 000000000000 000000000000
16 1 48 48 1 1 8b89697eba2c 43eadb1d2d06 000000000000
17 1 48 48 1 1 8b89697eba2c 43eadb1d2d06 000000000000
17 2 96 48 2 2 626a32663c2f 8b89697eba2c 000000000000
18 2 96 48 2 2 626a32663c2f 8b89697eba2c 000000000000
18 3 144 48 3 3 f54c32f13478 626a32663c2f 000000000000
19 3 144 48 3 3 f54c32f13478 626a32663c2f 000000000000
19 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000
20 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000
20 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000
21 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000
21 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000
22 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000
22 checking changesets
23 checking changesets
23 checking manifests
24 checking manifests
24 crosschecking files in changesets and manifests
25 crosschecking files in changesets and manifests
25 checking files
26 checking files
26 4 files, 9 changesets, 7 total revisions
27 4 files, 9 changesets, 7 total revisions
27 pushing to test-0
28 pushing to test-0
28 searching for changes
29 searching for changes
29 adding changesets
30 adding changesets
30 adding manifests
31 adding manifests
31 adding file changes
32 adding file changes
32 added 1 changesets with 1 changes to 1 files
33 added 1 changesets with 1 changes to 1 files
33 checking changesets
34 checking changesets
34 checking manifests
35 checking manifests
35 crosschecking files in changesets and manifests
36 crosschecking files in changesets and manifests
36 checking files
37 checking files
37 1 files, 1 changesets, 1 total revisions
38 1 files, 1 changesets, 1 total revisions
38 pushing to test-1
39 pushing to test-1
39 searching for changes
40 searching for changes
40 adding changesets
41 adding changesets
41 adding manifests
42 adding manifests
42 adding file changes
43 adding file changes
43 added 2 changesets with 2 changes to 1 files
44 added 2 changesets with 2 changes to 1 files
44 checking changesets
45 checking changesets
45 checking manifests
46 checking manifests
46 crosschecking files in changesets and manifests
47 crosschecking files in changesets and manifests
47 checking files
48 checking files
48 1 files, 2 changesets, 2 total revisions
49 1 files, 2 changesets, 2 total revisions
49 pushing to test-2
50 pushing to test-2
50 searching for changes
51 searching for changes
51 adding changesets
52 adding changesets
52 adding manifests
53 adding manifests
53 adding file changes
54 adding file changes
54 added 3 changesets with 3 changes to 1 files
55 added 3 changesets with 3 changes to 1 files
55 checking changesets
56 checking changesets
56 checking manifests
57 checking manifests
57 crosschecking files in changesets and manifests
58 crosschecking files in changesets and manifests
58 checking files
59 checking files
59 1 files, 3 changesets, 3 total revisions
60 1 files, 3 changesets, 3 total revisions
60 pushing to test-3
61 pushing to test-3
61 searching for changes
62 searching for changes
62 adding changesets
63 adding changesets
63 adding manifests
64 adding manifests
64 adding file changes
65 adding file changes
65 added 4 changesets with 4 changes to 1 files
66 added 4 changesets with 4 changes to 1 files
66 checking changesets
67 checking changesets
67 checking manifests
68 checking manifests
68 crosschecking files in changesets and manifests
69 crosschecking files in changesets and manifests
69 checking files
70 checking files
70 1 files, 4 changesets, 4 total revisions
71 1 files, 4 changesets, 4 total revisions
71 pushing to test-4
72 pushing to test-4
72 searching for changes
73 searching for changes
73 adding changesets
74 adding changesets
74 adding manifests
75 adding manifests
75 adding file changes
76 adding file changes
76 added 2 changesets with 2 changes to 1 files
77 added 2 changesets with 2 changes to 1 files
77 checking changesets
78 checking changesets
78 checking manifests
79 checking manifests
79 crosschecking files in changesets and manifests
80 crosschecking files in changesets and manifests
80 checking files
81 checking files
81 1 files, 2 changesets, 2 total revisions
82 1 files, 2 changesets, 2 total revisions
82 pushing to test-5
83 pushing to test-5
83 searching for changes
84 searching for changes
84 adding changesets
85 adding changesets
85 adding manifests
86 adding manifests
86 adding file changes
87 adding file changes
87 added 3 changesets with 3 changes to 1 files
88 added 3 changesets with 3 changes to 1 files
88 checking changesets
89 checking changesets
89 checking manifests
90 checking manifests
90 crosschecking files in changesets and manifests
91 crosschecking files in changesets and manifests
91 checking files
92 checking files
92 1 files, 3 changesets, 3 total revisions
93 1 files, 3 changesets, 3 total revisions
93 pushing to test-6
94 pushing to test-6
94 searching for changes
95 searching for changes
95 adding changesets
96 adding changesets
96 adding manifests
97 adding manifests
97 adding file changes
98 adding file changes
98 added 4 changesets with 5 changes to 2 files
99 added 4 changesets with 5 changes to 2 files
99 checking changesets
100 checking changesets
100 checking manifests
101 checking manifests
101 crosschecking files in changesets and manifests
102 crosschecking files in changesets and manifests
102 checking files
103 checking files
103 2 files, 4 changesets, 5 total revisions
104 2 files, 4 changesets, 5 total revisions
104 pushing to test-7
105 pushing to test-7
105 searching for changes
106 searching for changes
106 adding changesets
107 adding changesets
107 adding manifests
108 adding manifests
108 adding file changes
109 adding file changes
109 added 5 changesets with 6 changes to 3 files
110 added 5 changesets with 6 changes to 3 files
110 checking changesets
111 checking changesets
111 checking manifests
112 checking manifests
112 crosschecking files in changesets and manifests
113 crosschecking files in changesets and manifests
113 checking files
114 checking files
114 3 files, 5 changesets, 6 total revisions
115 3 files, 5 changesets, 6 total revisions
115 pushing to test-8
116 pushing to test-8
116 searching for changes
117 searching for changes
117 adding changesets
118 adding changesets
118 adding manifests
119 adding manifests
119 adding file changes
120 adding file changes
120 added 5 changesets with 5 changes to 2 files
121 added 5 changesets with 5 changes to 2 files
121 checking changesets
122 checking changesets
122 checking manifests
123 checking manifests
123 crosschecking files in changesets and manifests
124 crosschecking files in changesets and manifests
124 checking files
125 checking files
125 2 files, 5 changesets, 5 total revisions
126 2 files, 5 changesets, 5 total revisions
126 pulling from ../test-7
127 pulling from ../test-7
127 searching for changes
128 searching for changes
128 adding changesets
129 adding changesets
129 adding manifests
130 adding manifests
130 adding file changes
131 adding file changes
131 added 4 changesets with 2 changes to 3 files (+1 heads)
132 added 4 changesets with 2 changes to 3 files (+1 heads)
132 (run 'hg heads' to see heads, 'hg merge' to merge)
133 (run 'hg heads' to see heads, 'hg merge' to merge)
133 checking changesets
134 checking changesets
134 checking manifests
135 checking manifests
135 crosschecking files in changesets and manifests
136 crosschecking files in changesets and manifests
136 checking files
137 checking files
137 4 files, 9 changesets, 7 total revisions
138 4 files, 9 changesets, 7 total revisions
@@ -1,78 +1,80 b''
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 pushing to ../a
2 pushing to ../a
3 searching for changes
3 searching for changes
4 abort: push creates new remote heads!
4 abort: push creates new remote heads!
5 (did you forget to merge? use push -f to force)
5 (did you forget to merge? use push -f to force)
6 pulling from ../a
6 pulling from ../a
7 searching for changes
7 searching for changes
8 adding changesets
8 adding changesets
9 adding manifests
9 adding manifests
10 adding file changes
10 adding file changes
11 added 1 changesets with 1 changes to 1 files (+1 heads)
11 added 1 changesets with 1 changes to 1 files (+1 heads)
12 (run 'hg heads' to see heads, 'hg merge' to merge)
12 (run 'hg heads' to see heads, 'hg merge' to merge)
13 pushing to ../a
13 pushing to ../a
14 searching for changes
14 searching for changes
15 abort: push creates new remote heads!
15 abort: push creates new remote heads!
16 (did you forget to merge? use push -f to force)
16 (did you forget to merge? use push -f to force)
17 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
17 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
18 (branch merge, don't forget to commit)
18 (branch merge, don't forget to commit)
19 pushing to ../a
19 pushing to ../a
20 searching for changes
20 searching for changes
21 adding changesets
21 adding changesets
22 adding manifests
22 adding manifests
23 adding file changes
23 adding file changes
24 added 2 changesets with 1 changes to 1 files
24 added 2 changesets with 1 changes to 1 files
25 adding foo
25 adding foo
26 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
26 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
27 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
27 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
28 created new head
28 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
29 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
30 created new head
29 merging foo
31 merging foo
30 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
32 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
31 (branch merge, don't forget to commit)
33 (branch merge, don't forget to commit)
32 pushing to ../c
34 pushing to ../c
33 searching for changes
35 searching for changes
34 abort: push creates new remote heads!
36 abort: push creates new remote heads!
35 (did you forget to merge? use push -f to force)
37 (did you forget to merge? use push -f to force)
36 1
38 1
37 pushing to ../c
39 pushing to ../c
38 searching for changes
40 searching for changes
39 no changes found
41 no changes found
40 0
42 0
41 pushing to ../c
43 pushing to ../c
42 searching for changes
44 searching for changes
43 abort: push creates new remote heads!
45 abort: push creates new remote heads!
44 (did you forget to merge? use push -f to force)
46 (did you forget to merge? use push -f to force)
45 1
47 1
46 pushing to ../c
48 pushing to ../c
47 searching for changes
49 searching for changes
48 abort: push creates new remote heads!
50 abort: push creates new remote heads!
49 (did you forget to merge? use push -f to force)
51 (did you forget to merge? use push -f to force)
50 1
52 1
51 pushing to ../c
53 pushing to ../c
52 searching for changes
54 searching for changes
53 adding changesets
55 adding changesets
54 adding manifests
56 adding manifests
55 adding file changes
57 adding file changes
56 added 2 changesets with 2 changes to 1 files (+2 heads)
58 added 2 changesets with 2 changes to 1 files (+2 heads)
57 0
59 0
58 pushing to ../c
60 pushing to ../c
59 searching for changes
61 searching for changes
60 adding changesets
62 adding changesets
61 adding manifests
63 adding manifests
62 adding file changes
64 adding file changes
63 added 1 changesets with 1 changes to 1 files (-1 heads)
65 added 1 changesets with 1 changes to 1 files (-1 heads)
64 0
66 0
65 pushing to ../e
67 pushing to ../e
66 searching for changes
68 searching for changes
67 adding changesets
69 adding changesets
68 adding manifests
70 adding manifests
69 adding file changes
71 adding file changes
70 added 1 changesets with 1 changes to 1 files
72 added 1 changesets with 1 changes to 1 files
71 0
73 0
72 pushing to ../e
74 pushing to ../e
73 searching for changes
75 searching for changes
74 adding changesets
76 adding changesets
75 adding manifests
77 adding manifests
76 adding file changes
78 adding file changes
77 added 1 changesets with 1 changes to 1 files
79 added 1 changesets with 1 changes to 1 files
78 0
80 0
@@ -1,73 +1,75 b''
1 adding a/a
1 adding a/a
2 adding a/b
2 adding a/b
3 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 moving a/a to b/a
4 moving a/a to b/a
5 moving a/b to b/b
5 moving a/b to b/b
6 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
6 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
7 created new head
7 resolving manifests
8 resolving manifests
8 overwrite None partial False
9 overwrite None partial False
9 ancestor f9b20c0d4c51 local ce36d17b18fb+ remote 55119e611c80
10 ancestor f9b20c0d4c51 local ce36d17b18fb+ remote 55119e611c80
10 searching for copies back to rev 1
11 searching for copies back to rev 1
11 unmatched files in local:
12 unmatched files in local:
12 a/c
13 a/c
13 a/d
14 a/d
14 unmatched files in other:
15 unmatched files in other:
15 b/a
16 b/a
16 b/b
17 b/b
17 all copies found (* = to merge, ! = divergent):
18 all copies found (* = to merge, ! = divergent):
18 b/a -> a/a
19 b/a -> a/a
19 b/b -> a/b
20 b/b -> a/b
20 checking for directory renames
21 checking for directory renames
21 dir a/ -> b/
22 dir a/ -> b/
22 file a/c -> b/c
23 file a/c -> b/c
23 file a/d -> b/d
24 file a/d -> b/d
24 a/d: remote renamed directory to b/d -> d
25 a/d: remote renamed directory to b/d -> d
25 a/c: remote renamed directory to b/c -> d
26 a/c: remote renamed directory to b/c -> d
26 a/b: other deleted -> r
27 a/b: other deleted -> r
27 a/a: other deleted -> r
28 a/a: other deleted -> r
28 b/a: remote created -> g
29 b/a: remote created -> g
29 b/b: remote created -> g
30 b/b: remote created -> g
30 removing a/a
31 removing a/a
31 removing a/b
32 removing a/b
32 moving a/c to b/c
33 moving a/c to b/c
33 moving a/d to b/d
34 moving a/d to b/d
34 getting b/a
35 getting b/a
35 getting b/b
36 getting b/b
36 4 files updated, 0 files merged, 2 files removed, 0 files unresolved
37 4 files updated, 0 files merged, 2 files removed, 0 files unresolved
37 (branch merge, don't forget to commit)
38 (branch merge, don't forget to commit)
38 a/* b/a b/b b/c b/d
39 a/* b/a b/b b/c b/d
39 M b/a
40 M b/a
40 M b/b
41 M b/b
41 A b/c
42 A b/c
42 a/c
43 a/c
43 R a/a
44 R a/a
44 R a/b
45 R a/b
45 R a/c
46 R a/c
46 ? b/d
47 ? b/d
47 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88
48 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88
48 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
49 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
49 resolving manifests
50 resolving manifests
50 overwrite None partial False
51 overwrite None partial False
51 ancestor f9b20c0d4c51 local 55119e611c80+ remote ce36d17b18fb
52 ancestor f9b20c0d4c51 local 55119e611c80+ remote ce36d17b18fb
52 searching for copies back to rev 1
53 searching for copies back to rev 1
53 unmatched files in local:
54 unmatched files in local:
54 b/a
55 b/a
55 b/b
56 b/b
56 b/d
57 b/d
57 unmatched files in other:
58 unmatched files in other:
58 a/c
59 a/c
59 all copies found (* = to merge, ! = divergent):
60 all copies found (* = to merge, ! = divergent):
60 b/a -> a/a
61 b/a -> a/a
61 b/b -> a/b
62 b/b -> a/b
62 checking for directory renames
63 checking for directory renames
63 dir a/ -> b/
64 dir a/ -> b/
64 file a/c -> b/c
65 file a/c -> b/c
65 None: local renamed directory to b/c -> d
66 None: local renamed directory to b/c -> d
66 getting a/c to b/c
67 getting a/c to b/c
67 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
68 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
68 (branch merge, don't forget to commit)
69 (branch merge, don't forget to commit)
69 a/* b/a b/b b/c b/d
70 a/* b/a b/b b/c b/d
70 A b/c
71 A b/c
71 a/c
72 a/c
72 ? b/d
73 ? b/d
74 created new head
73 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88
75 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88
@@ -1,42 +1,43 b''
1 checkout
1 checkout
2 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
2 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
3 created new head
3 merge
4 merge
4 resolving manifests
5 resolving manifests
5 overwrite None partial False
6 overwrite None partial False
6 ancestor af1939970a1c local f26ec4fc3fa3+ remote 8e765a822af2
7 ancestor af1939970a1c local f26ec4fc3fa3+ remote 8e765a822af2
7 searching for copies back to rev 1
8 searching for copies back to rev 1
8 unmatched files in local:
9 unmatched files in local:
9 c2
10 c2
10 unmatched files in other:
11 unmatched files in other:
11 b
12 b
12 b2
13 b2
13 all copies found (* = to merge, ! = divergent):
14 all copies found (* = to merge, ! = divergent):
14 c2 -> a2 !
15 c2 -> a2 !
15 b -> a *
16 b -> a *
16 b2 -> a2 !
17 b2 -> a2 !
17 checking for directory renames
18 checking for directory renames
18 a2: divergent renames -> dr
19 a2: divergent renames -> dr
19 a: remote moved to b -> m
20 a: remote moved to b -> m
20 b2: remote created -> g
21 b2: remote created -> g
21 copying a to b
22 copying a to b
22 picked tool 'internal:merge' for a (binary False symlink False)
23 picked tool 'internal:merge' for a (binary False symlink False)
23 merging a and b
24 merging a and b
24 my a@f26ec4fc3fa3+ other b@8e765a822af2 ancestor a@af1939970a1c
25 my a@f26ec4fc3fa3+ other b@8e765a822af2 ancestor a@af1939970a1c
25 premerge successful
26 premerge successful
26 removing a
27 removing a
27 warning: detected divergent renames of a2 to:
28 warning: detected divergent renames of a2 to:
28 c2
29 c2
29 b2
30 b2
30 getting b2
31 getting b2
31 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
32 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
32 (branch merge, don't forget to commit)
33 (branch merge, don't forget to commit)
33 M b
34 M b
34 a
35 a
35 M b2
36 M b2
36 R a
37 R a
37 C c2
38 C c2
38 blahblah
39 blahblah
39 rev offset length base linkrev nodeid p1 p2
40 rev offset length base linkrev nodeid p1 p2
40 0 0 67 0 1 dc51707dfc98 000000000000 000000000000
41 0 0 67 0 1 dc51707dfc98 000000000000 000000000000
41 1 67 72 1 3 b2494a44f0a9 000000000000 dc51707dfc98
42 1 67 72 1 3 b2494a44f0a9 000000000000 dc51707dfc98
42 b renamed from a:dd03b83622e78778b403775d0d074b9ac7387a66
43 b renamed from a:dd03b83622e78778b403775d0d074b9ac7387a66
@@ -1,541 +1,562 b''
1 created new head
1 --------------
2 --------------
2 test L:up a R:nc a b W: - 1 get local a to b
3 test L:up a R:nc a b W: - 1 get local a to b
3 --------------
4 --------------
4 resolving manifests
5 resolving manifests
5 overwrite None partial False
6 overwrite None partial False
6 ancestor 924404dff337 local e300d1c794ec+ remote 735846fee2d7
7 ancestor 924404dff337 local e300d1c794ec+ remote 735846fee2d7
7 searching for copies back to rev 1
8 searching for copies back to rev 1
8 unmatched files in other:
9 unmatched files in other:
9 b
10 b
10 all copies found (* = to merge, ! = divergent):
11 all copies found (* = to merge, ! = divergent):
11 b -> a *
12 b -> a *
12 checking for directory renames
13 checking for directory renames
13 rev: versions differ -> m
14 rev: versions differ -> m
14 a: remote copied to b -> m
15 a: remote copied to b -> m
15 copying a to b
16 copying a to b
16 picked tool 'python ../merge' for a (binary False symlink False)
17 picked tool 'python ../merge' for a (binary False symlink False)
17 merging a and b
18 merging a and b
18 my a@e300d1c794ec+ other b@735846fee2d7 ancestor a@924404dff337
19 my a@e300d1c794ec+ other b@735846fee2d7 ancestor a@924404dff337
19 premerge successful
20 premerge successful
20 picked tool 'python ../merge' for rev (binary False symlink False)
21 picked tool 'python ../merge' for rev (binary False symlink False)
21 merging rev
22 merging rev
22 my rev@e300d1c794ec+ other rev@735846fee2d7 ancestor rev@924404dff337
23 my rev@e300d1c794ec+ other rev@735846fee2d7 ancestor rev@924404dff337
23 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
24 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
24 (branch merge, don't forget to commit)
25 (branch merge, don't forget to commit)
25 --------------
26 --------------
26 M b
27 M b
27 a
28 a
28 C a
29 C a
29 --------------
30 --------------
30
31
32 created new head
31 --------------
33 --------------
32 test L:nc a b R:up a W: - 2 get rem change to a and b
34 test L:nc a b R:up a W: - 2 get rem change to a and b
33 --------------
35 --------------
34 resolving manifests
36 resolving manifests
35 overwrite None partial False
37 overwrite None partial False
36 ancestor 924404dff337 local ac809aeed39a+ remote f4db7e329e71
38 ancestor 924404dff337 local ac809aeed39a+ remote f4db7e329e71
37 searching for copies back to rev 1
39 searching for copies back to rev 1
38 unmatched files in local:
40 unmatched files in local:
39 b
41 b
40 all copies found (* = to merge, ! = divergent):
42 all copies found (* = to merge, ! = divergent):
41 b -> a *
43 b -> a *
42 checking for directory renames
44 checking for directory renames
43 a: remote is newer -> g
45 a: remote is newer -> g
44 b: local copied to a -> m
46 b: local copied to a -> m
45 rev: versions differ -> m
47 rev: versions differ -> m
46 getting a
48 getting a
47 picked tool 'python ../merge' for b (binary False symlink False)
49 picked tool 'python ../merge' for b (binary False symlink False)
48 merging b and a
50 merging b and a
49 my b@ac809aeed39a+ other a@f4db7e329e71 ancestor a@924404dff337
51 my b@ac809aeed39a+ other a@f4db7e329e71 ancestor a@924404dff337
50 premerge successful
52 premerge successful
51 picked tool 'python ../merge' for rev (binary False symlink False)
53 picked tool 'python ../merge' for rev (binary False symlink False)
52 merging rev
54 merging rev
53 my rev@ac809aeed39a+ other rev@f4db7e329e71 ancestor rev@924404dff337
55 my rev@ac809aeed39a+ other rev@f4db7e329e71 ancestor rev@924404dff337
54 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
56 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
55 (branch merge, don't forget to commit)
57 (branch merge, don't forget to commit)
56 --------------
58 --------------
57 M a
59 M a
58 M b
60 M b
59 a
61 a
60 --------------
62 --------------
61
63
64 created new head
62 --------------
65 --------------
63 test L:up a R:nm a b W: - 3 get local a change to b, remove a
66 test L:up a R:nm a b W: - 3 get local a change to b, remove a
64 --------------
67 --------------
65 resolving manifests
68 resolving manifests
66 overwrite None partial False
69 overwrite None partial False
67 ancestor 924404dff337 local e300d1c794ec+ remote e03727d2d66b
70 ancestor 924404dff337 local e300d1c794ec+ remote e03727d2d66b
68 searching for copies back to rev 1
71 searching for copies back to rev 1
69 unmatched files in other:
72 unmatched files in other:
70 b
73 b
71 all copies found (* = to merge, ! = divergent):
74 all copies found (* = to merge, ! = divergent):
72 b -> a *
75 b -> a *
73 checking for directory renames
76 checking for directory renames
74 rev: versions differ -> m
77 rev: versions differ -> m
75 a: remote moved to b -> m
78 a: remote moved to b -> m
76 copying a to b
79 copying a to b
77 picked tool 'python ../merge' for a (binary False symlink False)
80 picked tool 'python ../merge' for a (binary False symlink False)
78 merging a and b
81 merging a and b
79 my a@e300d1c794ec+ other b@e03727d2d66b ancestor a@924404dff337
82 my a@e300d1c794ec+ other b@e03727d2d66b ancestor a@924404dff337
80 premerge successful
83 premerge successful
81 removing a
84 removing a
82 picked tool 'python ../merge' for rev (binary False symlink False)
85 picked tool 'python ../merge' for rev (binary False symlink False)
83 merging rev
86 merging rev
84 my rev@e300d1c794ec+ other rev@e03727d2d66b ancestor rev@924404dff337
87 my rev@e300d1c794ec+ other rev@e03727d2d66b ancestor rev@924404dff337
85 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
88 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
86 (branch merge, don't forget to commit)
89 (branch merge, don't forget to commit)
87 --------------
90 --------------
88 M b
91 M b
89 a
92 a
90 --------------
93 --------------
91
94
95 created new head
92 --------------
96 --------------
93 test L:nm a b R:up a W: - 4 get remote change to b
97 test L:nm a b R:up a W: - 4 get remote change to b
94 --------------
98 --------------
95 resolving manifests
99 resolving manifests
96 overwrite None partial False
100 overwrite None partial False
97 ancestor 924404dff337 local ecf3cb2a4219+ remote f4db7e329e71
101 ancestor 924404dff337 local ecf3cb2a4219+ remote f4db7e329e71
98 searching for copies back to rev 1
102 searching for copies back to rev 1
99 unmatched files in local:
103 unmatched files in local:
100 b
104 b
101 all copies found (* = to merge, ! = divergent):
105 all copies found (* = to merge, ! = divergent):
102 b -> a *
106 b -> a *
103 checking for directory renames
107 checking for directory renames
104 b: local moved to a -> m
108 b: local moved to a -> m
105 rev: versions differ -> m
109 rev: versions differ -> m
106 picked tool 'python ../merge' for b (binary False symlink False)
110 picked tool 'python ../merge' for b (binary False symlink False)
107 merging b and a
111 merging b and a
108 my b@ecf3cb2a4219+ other a@f4db7e329e71 ancestor a@924404dff337
112 my b@ecf3cb2a4219+ other a@f4db7e329e71 ancestor a@924404dff337
109 premerge successful
113 premerge successful
110 picked tool 'python ../merge' for rev (binary False symlink False)
114 picked tool 'python ../merge' for rev (binary False symlink False)
111 merging rev
115 merging rev
112 my rev@ecf3cb2a4219+ other rev@f4db7e329e71 ancestor rev@924404dff337
116 my rev@ecf3cb2a4219+ other rev@f4db7e329e71 ancestor rev@924404dff337
113 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
117 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
114 (branch merge, don't forget to commit)
118 (branch merge, don't forget to commit)
115 --------------
119 --------------
116 M b
120 M b
117 a
121 a
118 --------------
122 --------------
119
123
124 created new head
120 --------------
125 --------------
121 test L: R:nc a b W: - 5 get b
126 test L: R:nc a b W: - 5 get b
122 --------------
127 --------------
123 resolving manifests
128 resolving manifests
124 overwrite None partial False
129 overwrite None partial False
125 ancestor 924404dff337 local 94b33a1b7f2d+ remote 735846fee2d7
130 ancestor 924404dff337 local 94b33a1b7f2d+ remote 735846fee2d7
126 searching for copies back to rev 1
131 searching for copies back to rev 1
127 unmatched files in other:
132 unmatched files in other:
128 b
133 b
129 all copies found (* = to merge, ! = divergent):
134 all copies found (* = to merge, ! = divergent):
130 b -> a
135 b -> a
131 checking for directory renames
136 checking for directory renames
132 rev: versions differ -> m
137 rev: versions differ -> m
133 b: remote created -> g
138 b: remote created -> g
134 getting b
139 getting b
135 picked tool 'python ../merge' for rev (binary False symlink False)
140 picked tool 'python ../merge' for rev (binary False symlink False)
136 merging rev
141 merging rev
137 my rev@94b33a1b7f2d+ other rev@735846fee2d7 ancestor rev@924404dff337
142 my rev@94b33a1b7f2d+ other rev@735846fee2d7 ancestor rev@924404dff337
138 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
143 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
139 (branch merge, don't forget to commit)
144 (branch merge, don't forget to commit)
140 --------------
145 --------------
141 M b
146 M b
142 C a
147 C a
143 --------------
148 --------------
144
149
150 created new head
145 --------------
151 --------------
146 test L:nc a b R: W: - 6 nothing
152 test L:nc a b R: W: - 6 nothing
147 --------------
153 --------------
148 resolving manifests
154 resolving manifests
149 overwrite None partial False
155 overwrite None partial False
150 ancestor 924404dff337 local ac809aeed39a+ remote 97c705ade336
156 ancestor 924404dff337 local ac809aeed39a+ remote 97c705ade336
151 searching for copies back to rev 1
157 searching for copies back to rev 1
152 unmatched files in local:
158 unmatched files in local:
153 b
159 b
154 all copies found (* = to merge, ! = divergent):
160 all copies found (* = to merge, ! = divergent):
155 b -> a
161 b -> a
156 checking for directory renames
162 checking for directory renames
157 rev: versions differ -> m
163 rev: versions differ -> m
158 picked tool 'python ../merge' for rev (binary False symlink False)
164 picked tool 'python ../merge' for rev (binary False symlink False)
159 merging rev
165 merging rev
160 my rev@ac809aeed39a+ other rev@97c705ade336 ancestor rev@924404dff337
166 my rev@ac809aeed39a+ other rev@97c705ade336 ancestor rev@924404dff337
161 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
167 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
162 (branch merge, don't forget to commit)
168 (branch merge, don't forget to commit)
163 --------------
169 --------------
164 C a
170 C a
165 C b
171 C b
166 --------------
172 --------------
167
173
174 created new head
168 --------------
175 --------------
169 test L: R:nm a b W: - 7 get b
176 test L: R:nm a b W: - 7 get b
170 --------------
177 --------------
171 resolving manifests
178 resolving manifests
172 overwrite None partial False
179 overwrite None partial False
173 ancestor 924404dff337 local 94b33a1b7f2d+ remote e03727d2d66b
180 ancestor 924404dff337 local 94b33a1b7f2d+ remote e03727d2d66b
174 searching for copies back to rev 1
181 searching for copies back to rev 1
175 unmatched files in other:
182 unmatched files in other:
176 b
183 b
177 all copies found (* = to merge, ! = divergent):
184 all copies found (* = to merge, ! = divergent):
178 b -> a
185 b -> a
179 checking for directory renames
186 checking for directory renames
180 a: other deleted -> r
187 a: other deleted -> r
181 rev: versions differ -> m
188 rev: versions differ -> m
182 b: remote created -> g
189 b: remote created -> g
183 removing a
190 removing a
184 getting b
191 getting b
185 picked tool 'python ../merge' for rev (binary False symlink False)
192 picked tool 'python ../merge' for rev (binary False symlink False)
186 merging rev
193 merging rev
187 my rev@94b33a1b7f2d+ other rev@e03727d2d66b ancestor rev@924404dff337
194 my rev@94b33a1b7f2d+ other rev@e03727d2d66b ancestor rev@924404dff337
188 1 files updated, 1 files merged, 1 files removed, 0 files unresolved
195 1 files updated, 1 files merged, 1 files removed, 0 files unresolved
189 (branch merge, don't forget to commit)
196 (branch merge, don't forget to commit)
190 --------------
197 --------------
191 M b
198 M b
192 --------------
199 --------------
193
200
201 created new head
194 --------------
202 --------------
195 test L:nm a b R: W: - 8 nothing
203 test L:nm a b R: W: - 8 nothing
196 --------------
204 --------------
197 resolving manifests
205 resolving manifests
198 overwrite None partial False
206 overwrite None partial False
199 ancestor 924404dff337 local ecf3cb2a4219+ remote 97c705ade336
207 ancestor 924404dff337 local ecf3cb2a4219+ remote 97c705ade336
200 searching for copies back to rev 1
208 searching for copies back to rev 1
201 unmatched files in local:
209 unmatched files in local:
202 b
210 b
203 all copies found (* = to merge, ! = divergent):
211 all copies found (* = to merge, ! = divergent):
204 b -> a
212 b -> a
205 checking for directory renames
213 checking for directory renames
206 rev: versions differ -> m
214 rev: versions differ -> m
207 picked tool 'python ../merge' for rev (binary False symlink False)
215 picked tool 'python ../merge' for rev (binary False symlink False)
208 merging rev
216 merging rev
209 my rev@ecf3cb2a4219+ other rev@97c705ade336 ancestor rev@924404dff337
217 my rev@ecf3cb2a4219+ other rev@97c705ade336 ancestor rev@924404dff337
210 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
218 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
211 (branch merge, don't forget to commit)
219 (branch merge, don't forget to commit)
212 --------------
220 --------------
213 C b
221 C b
214 --------------
222 --------------
215
223
224 created new head
216 --------------
225 --------------
217 test L:um a b R:um a b W: - 9 do merge with ancestor in a
226 test L:um a b R:um a b W: - 9 do merge with ancestor in a
218 --------------
227 --------------
219 resolving manifests
228 resolving manifests
220 overwrite None partial False
229 overwrite None partial False
221 ancestor 924404dff337 local ec03c2ca8642+ remote 79cc6877a3b7
230 ancestor 924404dff337 local ec03c2ca8642+ remote 79cc6877a3b7
222 searching for copies back to rev 1
231 searching for copies back to rev 1
223 b: versions differ -> m
232 b: versions differ -> m
224 rev: versions differ -> m
233 rev: versions differ -> m
225 picked tool 'python ../merge' for b (binary False symlink False)
234 picked tool 'python ../merge' for b (binary False symlink False)
226 merging b
235 merging b
227 my b@ec03c2ca8642+ other b@79cc6877a3b7 ancestor a@924404dff337
236 my b@ec03c2ca8642+ other b@79cc6877a3b7 ancestor a@924404dff337
228 picked tool 'python ../merge' for rev (binary False symlink False)
237 picked tool 'python ../merge' for rev (binary False symlink False)
229 merging rev
238 merging rev
230 my rev@ec03c2ca8642+ other rev@79cc6877a3b7 ancestor rev@924404dff337
239 my rev@ec03c2ca8642+ other rev@79cc6877a3b7 ancestor rev@924404dff337
231 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
240 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
232 (branch merge, don't forget to commit)
241 (branch merge, don't forget to commit)
233 --------------
242 --------------
234 M b
243 M b
235 --------------
244 --------------
236
245
246 created new head
237 --------------
247 --------------
238 test L:nm a b R:nm a c W: - 11 get c, keep b
248 test L:nm a b R:nm a c W: - 11 get c, keep b
239 --------------
249 --------------
240 resolving manifests
250 resolving manifests
241 overwrite None partial False
251 overwrite None partial False
242 ancestor 924404dff337 local ecf3cb2a4219+ remote e6abcc1a30c2
252 ancestor 924404dff337 local ecf3cb2a4219+ remote e6abcc1a30c2
243 searching for copies back to rev 1
253 searching for copies back to rev 1
244 unmatched files in local:
254 unmatched files in local:
245 b
255 b
246 unmatched files in other:
256 unmatched files in other:
247 c
257 c
248 all copies found (* = to merge, ! = divergent):
258 all copies found (* = to merge, ! = divergent):
249 c -> a !
259 c -> a !
250 b -> a !
260 b -> a !
251 checking for directory renames
261 checking for directory renames
252 a: divergent renames -> dr
262 a: divergent renames -> dr
253 rev: versions differ -> m
263 rev: versions differ -> m
254 c: remote created -> g
264 c: remote created -> g
255 warning: detected divergent renames of a to:
265 warning: detected divergent renames of a to:
256 b
266 b
257 c
267 c
258 getting c
268 getting c
259 picked tool 'python ../merge' for rev (binary False symlink False)
269 picked tool 'python ../merge' for rev (binary False symlink False)
260 merging rev
270 merging rev
261 my rev@ecf3cb2a4219+ other rev@e6abcc1a30c2 ancestor rev@924404dff337
271 my rev@ecf3cb2a4219+ other rev@e6abcc1a30c2 ancestor rev@924404dff337
262 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
272 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
263 (branch merge, don't forget to commit)
273 (branch merge, don't forget to commit)
264 --------------
274 --------------
265 M c
275 M c
266 C b
276 C b
267 --------------
277 --------------
268
278
279 created new head
269 --------------
280 --------------
270 test L:nc a b R:up b W: - 12 merge b no ancestor
281 test L:nc a b R:up b W: - 12 merge b no ancestor
271 --------------
282 --------------
272 resolving manifests
283 resolving manifests
273 overwrite None partial False
284 overwrite None partial False
274 ancestor 924404dff337 local ac809aeed39a+ remote af30c7647fc7
285 ancestor 924404dff337 local ac809aeed39a+ remote af30c7647fc7
275 searching for copies back to rev 1
286 searching for copies back to rev 1
276 b: versions differ -> m
287 b: versions differ -> m
277 rev: versions differ -> m
288 rev: versions differ -> m
278 picked tool 'python ../merge' for b (binary False symlink False)
289 picked tool 'python ../merge' for b (binary False symlink False)
279 merging b
290 merging b
280 my b@ac809aeed39a+ other b@af30c7647fc7 ancestor b@000000000000
291 my b@ac809aeed39a+ other b@af30c7647fc7 ancestor b@000000000000
281 picked tool 'python ../merge' for rev (binary False symlink False)
292 picked tool 'python ../merge' for rev (binary False symlink False)
282 merging rev
293 merging rev
283 my rev@ac809aeed39a+ other rev@af30c7647fc7 ancestor rev@924404dff337
294 my rev@ac809aeed39a+ other rev@af30c7647fc7 ancestor rev@924404dff337
284 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
295 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
285 (branch merge, don't forget to commit)
296 (branch merge, don't forget to commit)
286 --------------
297 --------------
287 M b
298 M b
288 C a
299 C a
289 --------------
300 --------------
290
301
302 created new head
291 --------------
303 --------------
292 test L:up b R:nm a b W: - 13 merge b no ancestor
304 test L:up b R:nm a b W: - 13 merge b no ancestor
293 --------------
305 --------------
294 resolving manifests
306 resolving manifests
295 overwrite None partial False
307 overwrite None partial False
296 ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
308 ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
297 searching for copies back to rev 1
309 searching for copies back to rev 1
298 a: other deleted -> r
310 a: other deleted -> r
299 b: versions differ -> m
311 b: versions differ -> m
300 rev: versions differ -> m
312 rev: versions differ -> m
301 removing a
313 removing a
302 picked tool 'python ../merge' for b (binary False symlink False)
314 picked tool 'python ../merge' for b (binary False symlink False)
303 merging b
315 merging b
304 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
316 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
305 picked tool 'python ../merge' for rev (binary False symlink False)
317 picked tool 'python ../merge' for rev (binary False symlink False)
306 merging rev
318 merging rev
307 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
319 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
308 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
320 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
309 (branch merge, don't forget to commit)
321 (branch merge, don't forget to commit)
310 --------------
322 --------------
311 M b
323 M b
312 --------------
324 --------------
313
325
326 created new head
314 --------------
327 --------------
315 test L:nc a b R:up a b W: - 14 merge b no ancestor
328 test L:nc a b R:up a b W: - 14 merge b no ancestor
316 --------------
329 --------------
317 resolving manifests
330 resolving manifests
318 overwrite None partial False
331 overwrite None partial False
319 ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
332 ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
320 searching for copies back to rev 1
333 searching for copies back to rev 1
321 a: remote is newer -> g
334 a: remote is newer -> g
322 b: versions differ -> m
335 b: versions differ -> m
323 rev: versions differ -> m
336 rev: versions differ -> m
324 getting a
337 getting a
325 picked tool 'python ../merge' for b (binary False symlink False)
338 picked tool 'python ../merge' for b (binary False symlink False)
326 merging b
339 merging b
327 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
340 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
328 picked tool 'python ../merge' for rev (binary False symlink False)
341 picked tool 'python ../merge' for rev (binary False symlink False)
329 merging rev
342 merging rev
330 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
343 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
331 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
344 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
332 (branch merge, don't forget to commit)
345 (branch merge, don't forget to commit)
333 --------------
346 --------------
334 M a
347 M a
335 M b
348 M b
336 --------------
349 --------------
337
350
351 created new head
338 --------------
352 --------------
339 test L:up b R:nm a b W: - 15 merge b no ancestor, remove a
353 test L:up b R:nm a b W: - 15 merge b no ancestor, remove a
340 --------------
354 --------------
341 resolving manifests
355 resolving manifests
342 overwrite None partial False
356 overwrite None partial False
343 ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
357 ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
344 searching for copies back to rev 1
358 searching for copies back to rev 1
345 a: other deleted -> r
359 a: other deleted -> r
346 b: versions differ -> m
360 b: versions differ -> m
347 rev: versions differ -> m
361 rev: versions differ -> m
348 removing a
362 removing a
349 picked tool 'python ../merge' for b (binary False symlink False)
363 picked tool 'python ../merge' for b (binary False symlink False)
350 merging b
364 merging b
351 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
365 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
352 picked tool 'python ../merge' for rev (binary False symlink False)
366 picked tool 'python ../merge' for rev (binary False symlink False)
353 merging rev
367 merging rev
354 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
368 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
355 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
369 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
356 (branch merge, don't forget to commit)
370 (branch merge, don't forget to commit)
357 --------------
371 --------------
358 M b
372 M b
359 --------------
373 --------------
360
374
375 created new head
361 --------------
376 --------------
362 test L:nc a b R:up a b W: - 16 get a, merge b no ancestor
377 test L:nc a b R:up a b W: - 16 get a, merge b no ancestor
363 --------------
378 --------------
364 resolving manifests
379 resolving manifests
365 overwrite None partial False
380 overwrite None partial False
366 ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
381 ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
367 searching for copies back to rev 1
382 searching for copies back to rev 1
368 a: remote is newer -> g
383 a: remote is newer -> g
369 b: versions differ -> m
384 b: versions differ -> m
370 rev: versions differ -> m
385 rev: versions differ -> m
371 getting a
386 getting a
372 picked tool 'python ../merge' for b (binary False symlink False)
387 picked tool 'python ../merge' for b (binary False symlink False)
373 merging b
388 merging b
374 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
389 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
375 picked tool 'python ../merge' for rev (binary False symlink False)
390 picked tool 'python ../merge' for rev (binary False symlink False)
376 merging rev
391 merging rev
377 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
392 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
378 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
393 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
379 (branch merge, don't forget to commit)
394 (branch merge, don't forget to commit)
380 --------------
395 --------------
381 M a
396 M a
382 M b
397 M b
383 --------------
398 --------------
384
399
400 created new head
385 --------------
401 --------------
386 test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor
402 test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor
387 --------------
403 --------------
388 resolving manifests
404 resolving manifests
389 overwrite None partial False
405 overwrite None partial False
390 ancestor 924404dff337 local 0b76e65c8289+ remote 735846fee2d7
406 ancestor 924404dff337 local 0b76e65c8289+ remote 735846fee2d7
391 searching for copies back to rev 1
407 searching for copies back to rev 1
392 b: versions differ -> m
408 b: versions differ -> m
393 rev: versions differ -> m
409 rev: versions differ -> m
394 picked tool 'python ../merge' for b (binary False symlink False)
410 picked tool 'python ../merge' for b (binary False symlink False)
395 merging b
411 merging b
396 my b@0b76e65c8289+ other b@735846fee2d7 ancestor b@000000000000
412 my b@0b76e65c8289+ other b@735846fee2d7 ancestor b@000000000000
397 picked tool 'python ../merge' for rev (binary False symlink False)
413 picked tool 'python ../merge' for rev (binary False symlink False)
398 merging rev
414 merging rev
399 my rev@0b76e65c8289+ other rev@735846fee2d7 ancestor rev@924404dff337
415 my rev@0b76e65c8289+ other rev@735846fee2d7 ancestor rev@924404dff337
400 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
416 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
401 (branch merge, don't forget to commit)
417 (branch merge, don't forget to commit)
402 --------------
418 --------------
403 M b
419 M b
404 C a
420 C a
405 --------------
421 --------------
406
422
423 created new head
407 --------------
424 --------------
408 test L:nm a b R:up a b W: - 18 merge b no ancestor
425 test L:nm a b R:up a b W: - 18 merge b no ancestor
409 --------------
426 --------------
410 resolving manifests
427 resolving manifests
411 overwrite None partial False
428 overwrite None partial False
412 ancestor 924404dff337 local ecf3cb2a4219+ remote 8dbce441892a
429 ancestor 924404dff337 local ecf3cb2a4219+ remote 8dbce441892a
413 searching for copies back to rev 1
430 searching for copies back to rev 1
414 b: versions differ -> m
431 b: versions differ -> m
415 rev: versions differ -> m
432 rev: versions differ -> m
416 a: prompt recreating -> g
433 a: prompt recreating -> g
417 getting a
434 getting a
418 picked tool 'python ../merge' for b (binary False symlink False)
435 picked tool 'python ../merge' for b (binary False symlink False)
419 merging b
436 merging b
420 my b@ecf3cb2a4219+ other b@8dbce441892a ancestor b@000000000000
437 my b@ecf3cb2a4219+ other b@8dbce441892a ancestor b@000000000000
421 picked tool 'python ../merge' for rev (binary False symlink False)
438 picked tool 'python ../merge' for rev (binary False symlink False)
422 merging rev
439 merging rev
423 my rev@ecf3cb2a4219+ other rev@8dbce441892a ancestor rev@924404dff337
440 my rev@ecf3cb2a4219+ other rev@8dbce441892a ancestor rev@924404dff337
424 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
441 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
425 (branch merge, don't forget to commit)
442 (branch merge, don't forget to commit)
426 --------------
443 --------------
427 M a
444 M a
428 M b
445 M b
429 --------------
446 --------------
430
447
448 created new head
431 --------------
449 --------------
432 test L:up a b R:nm a b W: - 19 merge b no ancestor, prompt remove a
450 test L:up a b R:nm a b W: - 19 merge b no ancestor, prompt remove a
433 --------------
451 --------------
434 resolving manifests
452 resolving manifests
435 overwrite None partial False
453 overwrite None partial False
436 ancestor 924404dff337 local 0b76e65c8289+ remote e03727d2d66b
454 ancestor 924404dff337 local 0b76e65c8289+ remote e03727d2d66b
437 searching for copies back to rev 1
455 searching for copies back to rev 1
438 b: versions differ -> m
456 b: versions differ -> m
439 rev: versions differ -> m
457 rev: versions differ -> m
440 picked tool 'python ../merge' for b (binary False symlink False)
458 picked tool 'python ../merge' for b (binary False symlink False)
441 merging b
459 merging b
442 my b@0b76e65c8289+ other b@e03727d2d66b ancestor b@000000000000
460 my b@0b76e65c8289+ other b@e03727d2d66b ancestor b@000000000000
443 picked tool 'python ../merge' for rev (binary False symlink False)
461 picked tool 'python ../merge' for rev (binary False symlink False)
444 merging rev
462 merging rev
445 my rev@0b76e65c8289+ other rev@e03727d2d66b ancestor rev@924404dff337
463 my rev@0b76e65c8289+ other rev@e03727d2d66b ancestor rev@924404dff337
446 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
464 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
447 (branch merge, don't forget to commit)
465 (branch merge, don't forget to commit)
448 --------------
466 --------------
449 M b
467 M b
450 C a
468 C a
451 --------------
469 --------------
452
470
471 created new head
453 --------------
472 --------------
454 test L:up a R:um a b W: - 20 merge a and b to b, remove a
473 test L:up a R:um a b W: - 20 merge a and b to b, remove a
455 --------------
474 --------------
456 resolving manifests
475 resolving manifests
457 overwrite None partial False
476 overwrite None partial False
458 ancestor 924404dff337 local e300d1c794ec+ remote 79cc6877a3b7
477 ancestor 924404dff337 local e300d1c794ec+ remote 79cc6877a3b7
459 searching for copies back to rev 1
478 searching for copies back to rev 1
460 unmatched files in other:
479 unmatched files in other:
461 b
480 b
462 all copies found (* = to merge, ! = divergent):
481 all copies found (* = to merge, ! = divergent):
463 b -> a *
482 b -> a *
464 checking for directory renames
483 checking for directory renames
465 rev: versions differ -> m
484 rev: versions differ -> m
466 a: remote moved to b -> m
485 a: remote moved to b -> m
467 copying a to b
486 copying a to b
468 picked tool 'python ../merge' for a (binary False symlink False)
487 picked tool 'python ../merge' for a (binary False symlink False)
469 merging a and b
488 merging a and b
470 my a@e300d1c794ec+ other b@79cc6877a3b7 ancestor a@924404dff337
489 my a@e300d1c794ec+ other b@79cc6877a3b7 ancestor a@924404dff337
471 removing a
490 removing a
472 picked tool 'python ../merge' for rev (binary False symlink False)
491 picked tool 'python ../merge' for rev (binary False symlink False)
473 merging rev
492 merging rev
474 my rev@e300d1c794ec+ other rev@79cc6877a3b7 ancestor rev@924404dff337
493 my rev@e300d1c794ec+ other rev@79cc6877a3b7 ancestor rev@924404dff337
475 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
494 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
476 (branch merge, don't forget to commit)
495 (branch merge, don't forget to commit)
477 --------------
496 --------------
478 M b
497 M b
479 a
498 a
480 --------------
499 --------------
481
500
501 created new head
482 --------------
502 --------------
483 test L:um a b R:up a W: - 21 merge a and b to b
503 test L:um a b R:up a W: - 21 merge a and b to b
484 --------------
504 --------------
485 resolving manifests
505 resolving manifests
486 overwrite None partial False
506 overwrite None partial False
487 ancestor 924404dff337 local ec03c2ca8642+ remote f4db7e329e71
507 ancestor 924404dff337 local ec03c2ca8642+ remote f4db7e329e71
488 searching for copies back to rev 1
508 searching for copies back to rev 1
489 unmatched files in local:
509 unmatched files in local:
490 b
510 b
491 all copies found (* = to merge, ! = divergent):
511 all copies found (* = to merge, ! = divergent):
492 b -> a *
512 b -> a *
493 checking for directory renames
513 checking for directory renames
494 b: local moved to a -> m
514 b: local moved to a -> m
495 rev: versions differ -> m
515 rev: versions differ -> m
496 picked tool 'python ../merge' for b (binary False symlink False)
516 picked tool 'python ../merge' for b (binary False symlink False)
497 merging b and a
517 merging b and a
498 my b@ec03c2ca8642+ other a@f4db7e329e71 ancestor a@924404dff337
518 my b@ec03c2ca8642+ other a@f4db7e329e71 ancestor a@924404dff337
499 picked tool 'python ../merge' for rev (binary False symlink False)
519 picked tool 'python ../merge' for rev (binary False symlink False)
500 merging rev
520 merging rev
501 my rev@ec03c2ca8642+ other rev@f4db7e329e71 ancestor rev@924404dff337
521 my rev@ec03c2ca8642+ other rev@f4db7e329e71 ancestor rev@924404dff337
502 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
522 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
503 (branch merge, don't forget to commit)
523 (branch merge, don't forget to commit)
504 --------------
524 --------------
505 M b
525 M b
506 a
526 a
507 --------------
527 --------------
508
528
529 created new head
509 --------------
530 --------------
510 test L:nm a b R:up a c W: - 23 get c, keep b
531 test L:nm a b R:up a c W: - 23 get c, keep b
511 --------------
532 --------------
512 resolving manifests
533 resolving manifests
513 overwrite None partial False
534 overwrite None partial False
514 ancestor 924404dff337 local ecf3cb2a4219+ remote 2b958612230f
535 ancestor 924404dff337 local ecf3cb2a4219+ remote 2b958612230f
515 searching for copies back to rev 1
536 searching for copies back to rev 1
516 unmatched files in local:
537 unmatched files in local:
517 b
538 b
518 unmatched files in other:
539 unmatched files in other:
519 c
540 c
520 all copies found (* = to merge, ! = divergent):
541 all copies found (* = to merge, ! = divergent):
521 b -> a *
542 b -> a *
522 checking for directory renames
543 checking for directory renames
523 b: local moved to a -> m
544 b: local moved to a -> m
524 rev: versions differ -> m
545 rev: versions differ -> m
525 c: remote created -> g
546 c: remote created -> g
526 picked tool 'python ../merge' for b (binary False symlink False)
547 picked tool 'python ../merge' for b (binary False symlink False)
527 merging b and a
548 merging b and a
528 my b@ecf3cb2a4219+ other a@2b958612230f ancestor a@924404dff337
549 my b@ecf3cb2a4219+ other a@2b958612230f ancestor a@924404dff337
529 premerge successful
550 premerge successful
530 getting c
551 getting c
531 picked tool 'python ../merge' for rev (binary False symlink False)
552 picked tool 'python ../merge' for rev (binary False symlink False)
532 merging rev
553 merging rev
533 my rev@ecf3cb2a4219+ other rev@2b958612230f ancestor rev@924404dff337
554 my rev@ecf3cb2a4219+ other rev@2b958612230f ancestor rev@924404dff337
534 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
555 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
535 (branch merge, don't forget to commit)
556 (branch merge, don't forget to commit)
536 --------------
557 --------------
537 M b
558 M b
538 a
559 a
539 M c
560 M c
540 --------------
561 --------------
541
562
@@ -1,86 +1,87 b''
1 %% should show b unknown
1 %% should show b unknown
2 ? b
2 ? b
3 %% should show b unknown and c modified
3 %% should show b unknown and c modified
4 M c
4 M c
5 ? b
5 ? b
6 %% should show b added and c modified
6 %% should show b added and c modified
7 M c
7 M c
8 A b
8 A b
9 %% should show a removed, b added and c modified
9 %% should show a removed, b added and c modified
10 M c
10 M c
11 A b
11 A b
12 R a
12 R a
13 %% should show b added, copy saved, and c modified
13 %% should show b added, copy saved, and c modified
14 M c
14 M c
15 A b
15 A b
16 %% should show b unknown, and c modified
16 %% should show b unknown, and c modified
17 M c
17 M c
18 ? b
18 ? b
19 %% should show unknown: b
19 %% should show unknown: b
20 ? b
20 ? b
21 %% should show b added
21 %% should show b added
22 A b
22 A b
23 %% should show b deleted
23 %% should show b deleted
24 ! b
24 ! b
25 forgetting b
25 forgetting b
26 %% should not find b
26 %% should not find b
27 b: No such file or directory
27 b: No such file or directory
28 %% should show a c e
28 %% should show a c e
29 a
29 a
30 c
30 c
31 e
31 e
32 %% should verbosely save backup to e.orig
32 %% should verbosely save backup to e.orig
33 saving current version of e as e.orig
33 saving current version of e as e.orig
34 reverting e
34 reverting e
35 %% should say no changes needed
35 %% should say no changes needed
36 no changes needed to a
36 no changes needed to a
37 %% should say file not managed
37 %% should say file not managed
38 file not managed: q
38 file not managed: q
39 %% should say file not found
39 %% should say file not found
40 notfound: No such file in rev 095eacd0c0d7
40 notfound: No such file in rev 095eacd0c0d7
41 A z
41 A z
42 ? e.orig
42 ? e.orig
43 %% should add a, remove d, forget z
43 %% should add a, remove d, forget z
44 adding a
44 adding a
45 removing d
45 removing d
46 forgetting z
46 forgetting z
47 %% should forget a, undelete d
47 %% should forget a, undelete d
48 forgetting a
48 forgetting a
49 undeleting d
49 undeleting d
50 %% should silently add a
50 %% should silently add a
51 A a
51 A a
52 R d
52 R d
53 %% should silently keep d removed
53 %% should silently keep d removed
54 R d
54 R d
55 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
55 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
56 reverting c
56 reverting c
57 %% should print non-executable
57 %% should print non-executable
58 non-executable
58 non-executable
59 reverting c
59 reverting c
60 %% should print executable
60 %% should print executable
61 executable
61 executable
62 %% issue 241
62 %% issue 241
63 adding a
63 adding a
64 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
64 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
65 % should fail - no arguments
65 % should fail - no arguments
66 abort: no files or directories specified; use --all to revert the whole repo
66 abort: no files or directories specified; use --all to revert the whole repo
67 % should succeed
67 % should succeed
68 reverting a
68 reverting a
69 %% issue332
69 %% issue332
70 adding b/b
70 adding b/b
71 created new head
71 reverting b/b
72 reverting b/b
72 forgetting newdir/newfile
73 forgetting newdir/newfile
73 reverting b/b
74 reverting b/b
74 % reverting a rename target should revert the source
75 % reverting a rename target should revert the source
75 ? newa
76 ? newa
76 %% 4 ignored files (we will add/commit everything)
77 %% 4 ignored files (we will add/commit everything)
77 I ignored
78 I ignored
78 I ignoreddir/file
79 I ignoreddir/file
79 I ignoreddir/removed
80 I ignoreddir/removed
80 I removed
81 I removed
81 %% should revert ignored* and undelete *removed
82 %% should revert ignored* and undelete *removed
82 reverting ignored
83 reverting ignored
83 reverting ignoreddir/file
84 reverting ignoreddir/file
84 undeleting ignoreddir/removed
85 undeleting ignoreddir/removed
85 undeleting removed
86 undeleting removed
86 %% should silently revert the named files
87 %% should silently revert the named files
@@ -1,6 +1,7 b''
1 adding foo
1 adding foo
2 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
2 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
3 adding foo
3 adding foo
4 created new head
4 rev offset length base linkrev nodeid p1 p2
5 rev offset length base linkrev nodeid p1 p2
5 0 0 0 0 0 b80de5d13875 000000000000 000000000000
6 0 0 0 0 0 b80de5d13875 000000000000 000000000000
6 1 0 24 0 1 0376abec49b8 000000000000 000000000000
7 1 0 24 0 1 0376abec49b8 000000000000 000000000000
@@ -1,182 +1,183 b''
1 # creating 'remote'
1 # creating 'remote'
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 created new head
3 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
4 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
4 rev offset length base linkrev nodeid p1 p2
5 rev offset length base linkrev nodeid p1 p2
5 0 0 3 0 0 362fef284ce2 000000000000 000000000000
6 0 0 3 0 0 362fef284ce2 000000000000 000000000000
6 1 3 5 1 1 125144f7e028 362fef284ce2 000000000000
7 1 3 5 1 1 125144f7e028 362fef284ce2 000000000000
7 2 8 7 2 2 4c982badb186 125144f7e028 000000000000
8 2 8 7 2 2 4c982badb186 125144f7e028 000000000000
8 3 15 9 3 3 19b1fc555737 4c982badb186 000000000000
9 3 15 9 3 3 19b1fc555737 4c982badb186 000000000000
9 rev offset length base linkrev nodeid p1 p2
10 rev offset length base linkrev nodeid p1 p2
10 0 0 75 0 7 905359268f77 000000000000 000000000000
11 0 0 75 0 7 905359268f77 000000000000 000000000000
11 rev offset length base linkrev nodeid p1 p2
12 rev offset length base linkrev nodeid p1 p2
12 0 0 75 0 8 905359268f77 000000000000 000000000000
13 0 0 75 0 8 905359268f77 000000000000 000000000000
13 rev offset length base linkrev nodeid p1 p2
14 rev offset length base linkrev nodeid p1 p2
14 0 0 8 0 6 12ab3bcc5ea4 000000000000 000000000000
15 0 0 8 0 6 12ab3bcc5ea4 000000000000 000000000000
15 rev offset length base linkrev nodeid p1 p2
16 rev offset length base linkrev nodeid p1 p2
16 0 0 48 0 0 43eadb1d2d06 000000000000 000000000000
17 0 0 48 0 0 43eadb1d2d06 000000000000 000000000000
17 1 48 48 1 1 8b89697eba2c 43eadb1d2d06 000000000000
18 1 48 48 1 1 8b89697eba2c 43eadb1d2d06 000000000000
18 2 96 48 2 2 626a32663c2f 8b89697eba2c 000000000000
19 2 96 48 2 2 626a32663c2f 8b89697eba2c 000000000000
19 3 144 48 3 3 f54c32f13478 626a32663c2f 000000000000
20 3 144 48 3 3 f54c32f13478 626a32663c2f 000000000000
20 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000
21 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000
21 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000
22 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000
22 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000
23 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000
23 checking changesets
24 checking changesets
24 checking manifests
25 checking manifests
25 crosschecking files in changesets and manifests
26 crosschecking files in changesets and manifests
26 checking files
27 checking files
27 4 files, 9 changesets, 7 total revisions
28 4 files, 9 changesets, 7 total revisions
28 # clone remote via stream
29 # clone remote via stream
29 requesting all changes
30 requesting all changes
30 adding changesets
31 adding changesets
31 adding manifests
32 adding manifests
32 adding file changes
33 adding file changes
33 added 1 changesets with 1 changes to 1 files
34 added 1 changesets with 1 changes to 1 files
34 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
35 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
35 checking changesets
36 checking changesets
36 checking manifests
37 checking manifests
37 crosschecking files in changesets and manifests
38 crosschecking files in changesets and manifests
38 checking files
39 checking files
39 1 files, 1 changesets, 1 total revisions
40 1 files, 1 changesets, 1 total revisions
40 requesting all changes
41 requesting all changes
41 adding changesets
42 adding changesets
42 adding manifests
43 adding manifests
43 adding file changes
44 adding file changes
44 added 2 changesets with 2 changes to 1 files
45 added 2 changesets with 2 changes to 1 files
45 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
46 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
46 checking changesets
47 checking changesets
47 checking manifests
48 checking manifests
48 crosschecking files in changesets and manifests
49 crosschecking files in changesets and manifests
49 checking files
50 checking files
50 1 files, 2 changesets, 2 total revisions
51 1 files, 2 changesets, 2 total revisions
51 requesting all changes
52 requesting all changes
52 adding changesets
53 adding changesets
53 adding manifests
54 adding manifests
54 adding file changes
55 adding file changes
55 added 3 changesets with 3 changes to 1 files
56 added 3 changesets with 3 changes to 1 files
56 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
57 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
57 checking changesets
58 checking changesets
58 checking manifests
59 checking manifests
59 crosschecking files in changesets and manifests
60 crosschecking files in changesets and manifests
60 checking files
61 checking files
61 1 files, 3 changesets, 3 total revisions
62 1 files, 3 changesets, 3 total revisions
62 requesting all changes
63 requesting all changes
63 adding changesets
64 adding changesets
64 adding manifests
65 adding manifests
65 adding file changes
66 adding file changes
66 added 4 changesets with 4 changes to 1 files
67 added 4 changesets with 4 changes to 1 files
67 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
68 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
68 checking changesets
69 checking changesets
69 checking manifests
70 checking manifests
70 crosschecking files in changesets and manifests
71 crosschecking files in changesets and manifests
71 checking files
72 checking files
72 1 files, 4 changesets, 4 total revisions
73 1 files, 4 changesets, 4 total revisions
73 requesting all changes
74 requesting all changes
74 adding changesets
75 adding changesets
75 adding manifests
76 adding manifests
76 adding file changes
77 adding file changes
77 added 2 changesets with 2 changes to 1 files
78 added 2 changesets with 2 changes to 1 files
78 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
79 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
79 checking changesets
80 checking changesets
80 checking manifests
81 checking manifests
81 crosschecking files in changesets and manifests
82 crosschecking files in changesets and manifests
82 checking files
83 checking files
83 1 files, 2 changesets, 2 total revisions
84 1 files, 2 changesets, 2 total revisions
84 requesting all changes
85 requesting all changes
85 adding changesets
86 adding changesets
86 adding manifests
87 adding manifests
87 adding file changes
88 adding file changes
88 added 3 changesets with 3 changes to 1 files
89 added 3 changesets with 3 changes to 1 files
89 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
90 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
90 checking changesets
91 checking changesets
91 checking manifests
92 checking manifests
92 crosschecking files in changesets and manifests
93 crosschecking files in changesets and manifests
93 checking files
94 checking files
94 1 files, 3 changesets, 3 total revisions
95 1 files, 3 changesets, 3 total revisions
95 requesting all changes
96 requesting all changes
96 adding changesets
97 adding changesets
97 adding manifests
98 adding manifests
98 adding file changes
99 adding file changes
99 added 4 changesets with 5 changes to 2 files
100 added 4 changesets with 5 changes to 2 files
100 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
101 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
101 checking changesets
102 checking changesets
102 checking manifests
103 checking manifests
103 crosschecking files in changesets and manifests
104 crosschecking files in changesets and manifests
104 checking files
105 checking files
105 2 files, 4 changesets, 5 total revisions
106 2 files, 4 changesets, 5 total revisions
106 requesting all changes
107 requesting all changes
107 adding changesets
108 adding changesets
108 adding manifests
109 adding manifests
109 adding file changes
110 adding file changes
110 added 5 changesets with 6 changes to 3 files
111 added 5 changesets with 6 changes to 3 files
111 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
112 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
112 checking changesets
113 checking changesets
113 checking manifests
114 checking manifests
114 crosschecking files in changesets and manifests
115 crosschecking files in changesets and manifests
115 checking files
116 checking files
116 3 files, 5 changesets, 6 total revisions
117 3 files, 5 changesets, 6 total revisions
117 requesting all changes
118 requesting all changes
118 adding changesets
119 adding changesets
119 adding manifests
120 adding manifests
120 adding file changes
121 adding file changes
121 added 5 changesets with 5 changes to 2 files
122 added 5 changesets with 5 changes to 2 files
122 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
123 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
123 checking changesets
124 checking changesets
124 checking manifests
125 checking manifests
125 crosschecking files in changesets and manifests
126 crosschecking files in changesets and manifests
126 checking files
127 checking files
127 2 files, 5 changesets, 5 total revisions
128 2 files, 5 changesets, 5 total revisions
128 pulling from ../test-7
129 pulling from ../test-7
129 searching for changes
130 searching for changes
130 adding changesets
131 adding changesets
131 adding manifests
132 adding manifests
132 adding file changes
133 adding file changes
133 added 4 changesets with 2 changes to 3 files (+1 heads)
134 added 4 changesets with 2 changes to 3 files (+1 heads)
134 (run 'hg heads' to see heads, 'hg merge' to merge)
135 (run 'hg heads' to see heads, 'hg merge' to merge)
135 checking changesets
136 checking changesets
136 checking manifests
137 checking manifests
137 crosschecking files in changesets and manifests
138 crosschecking files in changesets and manifests
138 checking files
139 checking files
139 4 files, 9 changesets, 7 total revisions
140 4 files, 9 changesets, 7 total revisions
140 pulling from ssh://user@dummy/remote
141 pulling from ssh://user@dummy/remote
141 searching for changes
142 searching for changes
142 adding changesets
143 adding changesets
143 adding manifests
144 adding manifests
144 adding file changes
145 adding file changes
145 added 1 changesets with 0 changes to 1 files (+1 heads)
146 added 1 changesets with 0 changes to 1 files (+1 heads)
146 (run 'hg heads' to see heads, 'hg merge' to merge)
147 (run 'hg heads' to see heads, 'hg merge' to merge)
147 checking changesets
148 checking changesets
148 checking manifests
149 checking manifests
149 crosschecking files in changesets and manifests
150 crosschecking files in changesets and manifests
150 checking files
151 checking files
151 1 files, 3 changesets, 2 total revisions
152 1 files, 3 changesets, 2 total revisions
152 pulling from ssh://user@dummy/remote
153 pulling from ssh://user@dummy/remote
153 searching for changes
154 searching for changes
154 adding changesets
155 adding changesets
155 adding manifests
156 adding manifests
156 adding file changes
157 adding file changes
157 added 6 changesets with 5 changes to 4 files
158 added 6 changesets with 5 changes to 4 files
158 (run 'hg update' to get a working copy)
159 (run 'hg update' to get a working copy)
159 pulling from ssh://user@dummy/remote
160 pulling from ssh://user@dummy/remote
160 searching for changes
161 searching for changes
161 adding changesets
162 adding changesets
162 adding manifests
163 adding manifests
163 adding file changes
164 adding file changes
164 added 2 changesets with 0 changes to 1 files (+1 heads)
165 added 2 changesets with 0 changes to 1 files (+1 heads)
165 (run 'hg heads' to see heads, 'hg merge' to merge)
166 (run 'hg heads' to see heads, 'hg merge' to merge)
166 checking changesets
167 checking changesets
167 checking manifests
168 checking manifests
168 crosschecking files in changesets and manifests
169 crosschecking files in changesets and manifests
169 checking files
170 checking files
170 1 files, 5 changesets, 3 total revisions
171 1 files, 5 changesets, 3 total revisions
171 pulling from ssh://user@dummy/remote
172 pulling from ssh://user@dummy/remote
172 searching for changes
173 searching for changes
173 adding changesets
174 adding changesets
174 adding manifests
175 adding manifests
175 adding file changes
176 adding file changes
176 added 4 changesets with 4 changes to 4 files
177 added 4 changesets with 4 changes to 4 files
177 (run 'hg update' to get a working copy)
178 (run 'hg update' to get a working copy)
178 checking changesets
179 checking changesets
179 checking manifests
180 checking manifests
180 crosschecking files in changesets and manifests
181 crosschecking files in changesets and manifests
181 checking files
182 checking files
182 4 files, 9 changesets, 7 total revisions
183 4 files, 9 changesets, 7 total revisions
@@ -1,104 +1,105 b''
1 # creating 'remote'
1 # creating 'remote'
2 # repo not found error
2 # repo not found error
3 remote: abort: There is no Mercurial repository here (.hg not found)!
3 remote: abort: There is no Mercurial repository here (.hg not found)!
4 abort: no suitable response from remote hg!
4 abort: no suitable response from remote hg!
5 # clone remote via stream
5 # clone remote via stream
6 streaming all changes
6 streaming all changes
7 XXX files to transfer, XXX bytes of data
7 XXX files to transfer, XXX bytes of data
8 transferred XXX bytes in XXX seconds (XXX XB/sec)
8 transferred XXX bytes in XXX seconds (XXX XB/sec)
9 XXX files updated, XXX files merged, XXX files removed, XXX files unresolved
9 XXX files updated, XXX files merged, XXX files removed, XXX files unresolved
10 checking changesets
10 checking changesets
11 checking manifests
11 checking manifests
12 crosschecking files in changesets and manifests
12 crosschecking files in changesets and manifests
13 checking files
13 checking files
14 2 files, 1 changesets, 2 total revisions
14 2 files, 1 changesets, 2 total revisions
15 # clone remote via pull
15 # clone remote via pull
16 requesting all changes
16 requesting all changes
17 adding changesets
17 adding changesets
18 adding manifests
18 adding manifests
19 adding file changes
19 adding file changes
20 added 1 changesets with 2 changes to 2 files
20 added 1 changesets with 2 changes to 2 files
21 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
21 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
22 # verify
22 # verify
23 checking changesets
23 checking changesets
24 checking manifests
24 checking manifests
25 crosschecking files in changesets and manifests
25 crosschecking files in changesets and manifests
26 checking files
26 checking files
27 2 files, 1 changesets, 2 total revisions
27 2 files, 1 changesets, 2 total revisions
28 # empty default pull
28 # empty default pull
29 default = ssh://user@dummy/remote
29 default = ssh://user@dummy/remote
30 pulling from ssh://user@dummy/remote
30 pulling from ssh://user@dummy/remote
31 searching for changes
31 searching for changes
32 no changes found
32 no changes found
33 # local change
33 # local change
34 # updating rc
34 # updating rc
35 # find outgoing
35 # find outgoing
36 comparing with ssh://user@dummy/remote
36 comparing with ssh://user@dummy/remote
37 searching for changes
37 searching for changes
38 changeset: 1:572896fe480d
38 changeset: 1:572896fe480d
39 tag: tip
39 tag: tip
40 user: test
40 user: test
41 date: Mon Jan 12 13:46:40 1970 +0000
41 date: Mon Jan 12 13:46:40 1970 +0000
42 summary: add
42 summary: add
43
43
44 # find incoming on the remote side
44 # find incoming on the remote side
45 comparing with ssh://user@dummy/local
45 comparing with ssh://user@dummy/local
46 searching for changes
46 searching for changes
47 changeset: 1:572896fe480d
47 changeset: 1:572896fe480d
48 tag: tip
48 tag: tip
49 user: test
49 user: test
50 date: Mon Jan 12 13:46:40 1970 +0000
50 date: Mon Jan 12 13:46:40 1970 +0000
51 summary: add
51 summary: add
52
52
53 # push
53 # push
54 pushing to ssh://user@dummy/remote
54 pushing to ssh://user@dummy/remote
55 searching for changes
55 searching for changes
56 remote: adding changesets
56 remote: adding changesets
57 remote: adding manifests
57 remote: adding manifests
58 remote: adding file changes
58 remote: adding file changes
59 remote: added 1 changesets with 1 changes to 1 files
59 remote: added 1 changesets with 1 changes to 1 files
60 # check remote tip
60 # check remote tip
61 changeset: 1:572896fe480d
61 changeset: 1:572896fe480d
62 tag: tip
62 tag: tip
63 user: test
63 user: test
64 date: Mon Jan 12 13:46:40 1970 +0000
64 date: Mon Jan 12 13:46:40 1970 +0000
65 summary: add
65 summary: add
66
66
67 checking changesets
67 checking changesets
68 checking manifests
68 checking manifests
69 crosschecking files in changesets and manifests
69 crosschecking files in changesets and manifests
70 checking files
70 checking files
71 2 files, 2 changesets, 3 total revisions
71 2 files, 2 changesets, 3 total revisions
72 bleah
72 bleah
73 created new head
73 # push should succeed even though it has an unexpected response
74 # push should succeed even though it has an unexpected response
74 pushing to ssh://user@dummy/remote
75 pushing to ssh://user@dummy/remote
75 searching for changes
76 searching for changes
76 note: unsynced remote changes!
77 note: unsynced remote changes!
77 remote: adding changesets
78 remote: adding changesets
78 remote: adding manifests
79 remote: adding manifests
79 remote: adding file changes
80 remote: adding file changes
80 remote: added 1 changesets with 1 changes to 1 files
81 remote: added 1 changesets with 1 changes to 1 files
81 remote: KABOOM
82 remote: KABOOM
82 changeset: 3:ac7448082955
83 changeset: 3:ac7448082955
83 tag: tip
84 tag: tip
84 parent: 1:572896fe480d
85 parent: 1:572896fe480d
85 user: test
86 user: test
86 date: Mon Jan 12 13:46:42 1970 +0000
87 date: Mon Jan 12 13:46:42 1970 +0000
87 summary: z
88 summary: z
88
89
89 changeset: 2:187c6caa0d1e
90 changeset: 2:187c6caa0d1e
90 parent: 0:e34318c26897
91 parent: 0:e34318c26897
91 user: test
92 user: test
92 date: Mon Jan 12 13:46:41 1970 +0000
93 date: Mon Jan 12 13:46:41 1970 +0000
93 summary: z
94 summary: z
94
95
95 Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio
96 Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio
96 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
97 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
97 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
98 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
98 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
99 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
99 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
100 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
100 Got arguments 1:user@dummy 2:hg -R local serve --stdio
101 Got arguments 1:user@dummy 2:hg -R local serve --stdio
101 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
102 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
102 changegroup-in-remote hook: HG_NODE=572896fe480d7581849806ee402175c49cb20037 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1
103 changegroup-in-remote hook: HG_NODE=572896fe480d7581849806ee402175c49cb20037 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1
103 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
104 Got arguments 1:user@dummy 2:hg -R remote serve --stdio
104 changegroup-in-remote hook: HG_NODE=ac7448082955a0b2ff5cb4512c1e061c779bbc79 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1
105 changegroup-in-remote hook: HG_NODE=ac7448082955a0b2ff5cb4512c1e061c779bbc79 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1
@@ -1,79 +1,83 b''
1 000000000000 tip
1 000000000000 tip
2 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 0acdaf898367 tip
3 0acdaf898367 tip
4 tip 0:0acdaf898367
4 tip 0:0acdaf898367
5 This is a local tag with a really long name! 0:0acdaf898367
5 This is a local tag with a really long name! 0:0acdaf898367
6 0acdaf8983679e0aac16e811534eb49d7ee1f2b4 first
6 0acdaf8983679e0aac16e811534eb49d7ee1f2b4 first
7 tip 1:8a3ca90d111d
7 tip 1:8a3ca90d111d
8 first 0:0acdaf898367
8 first 0:0acdaf898367
9 8a3ca90d111d tip
9 8a3ca90d111d tip
10 M a
10 M a
11 8a3ca90d111d+ tip
11 8a3ca90d111d+ tip
12 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
12 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
13 0acdaf898367+ first
13 0acdaf898367+ first
14 0acdaf898367+ first
14 0acdaf898367+ first
15 M a
15 M a
16 created new head
16 8216907a933d tip
17 8216907a933d tip
17 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
18 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
18 (branch merge, don't forget to commit)
19 (branch merge, don't forget to commit)
19 8216907a933d+8a3ca90d111d+ tip
20 8216907a933d+8a3ca90d111d+ tip
20 M .hgtags
21 M .hgtags
21 tip 6:e2174d339386
22 tip 6:e2174d339386
22 first 0:0acdaf898367
23 first 0:0acdaf898367
23 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
24 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
25 created new head
24 .hgtags@c071f74ab5eb, line 2: cannot parse entry
26 .hgtags@c071f74ab5eb, line 2: cannot parse entry
25 .hgtags@c071f74ab5eb, line 4: node 'foo' is not well formed
27 .hgtags@c071f74ab5eb, line 4: node 'foo' is not well formed
26 .hgtags@4ca6f1b1a68c, line 2: node 'x' is not well formed
28 .hgtags@4ca6f1b1a68c, line 2: node 'x' is not well formed
27 localtags, line 1: tag 'invalid' refers to unknown node
29 localtags, line 1: tag 'invalid' refers to unknown node
28 tip 8:4ca6f1b1a68c
30 tip 8:4ca6f1b1a68c
29 first 0:0acdaf898367
31 first 0:0acdaf898367
30 changeset: 8:4ca6f1b1a68c
32 changeset: 8:4ca6f1b1a68c
31 .hgtags@c071f74ab5eb, line 2: cannot parse entry
33 .hgtags@c071f74ab5eb, line 2: cannot parse entry
32 .hgtags@c071f74ab5eb, line 4: node 'foo' is not well formed
34 .hgtags@c071f74ab5eb, line 4: node 'foo' is not well formed
33 .hgtags@4ca6f1b1a68c, line 2: node 'x' is not well formed
35 .hgtags@4ca6f1b1a68c, line 2: node 'x' is not well formed
34 localtags, line 1: tag 'invalid' refers to unknown node
36 localtags, line 1: tag 'invalid' refers to unknown node
35 tag: tip
37 tag: tip
36 parent: 3:b2ef3841386b
38 parent: 3:b2ef3841386b
37 user: test
39 user: test
38 date: Mon Jan 12 13:46:40 1970 +0000
40 date: Mon Jan 12 13:46:40 1970 +0000
39 summary: head
41 summary: head
40
42
41 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
43 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
42 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
44 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
45 created new head
43 tip 4:36195b728445
46 tip 4:36195b728445
44 bar 1:b204a97e6e8d
47 bar 1:b204a97e6e8d
45 changeset: 5:57e1983b4a60
48 changeset: 5:57e1983b4a60
46 tag: tip
49 tag: tip
47 user: test
50 user: test
48 date: Mon Jan 12 13:46:40 1970 +0000
51 date: Mon Jan 12 13:46:40 1970 +0000
49 summary: Removed tag bar
52 summary: Removed tag bar
50
53
51 tip 5:57e1983b4a60
54 tip 5:57e1983b4a60
52 % remove nonexistent tag
55 % remove nonexistent tag
53 abort: tag 'foobar' does not exist
56 abort: tag 'foobar' does not exist
54 changeset: 5:57e1983b4a60
57 changeset: 5:57e1983b4a60
55 tag: tip
58 tag: tip
56 user: test
59 user: test
57 date: Mon Jan 12 13:46:40 1970 +0000
60 date: Mon Jan 12 13:46:40 1970 +0000
58 summary: Removed tag bar
61 summary: Removed tag bar
59
62
60 tip 5:d8bb4d1eff25
63 tip 5:d8bb4d1eff25
61 bar 0:b409d9da318e
64 bar 0:b409d9da318e
62 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
65 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
66 created new head
63 tip 6:b5ff9d142648
67 tip 6:b5ff9d142648
64 bar 0:b409d9da318e
68 bar 0:b409d9da318e
65 abort: tag 'bar' already exists (use -f to force)
69 abort: tag 'bar' already exists (use -f to force)
66 tip 6:b5ff9d142648
70 tip 6:b5ff9d142648
67 bar 0:b409d9da318e
71 bar 0:b409d9da318e
68 adding foo
72 adding foo
69 tip 3:ca8479b4351c
73 tip 3:ca8479b4351c
70 bar 2:72b852876a42
74 bar 2:72b852876a42
71 % bar should still point to rev 2
75 % bar should still point to rev 2
72 tip 4:40af5d225513
76 tip 4:40af5d225513
73 bar 2:72b852876a42
77 bar 2:72b852876a42
74 adding foo
78 adding foo
75 abort: tag 'localtag' is not a global tag
79 abort: tag 'localtag' is not a global tag
76 abort: tag 'globaltag' is not a local tag
80 abort: tag 'globaltag' is not a local tag
77 tip 1:a0b6fe111088
81 tip 1:a0b6fe111088
78 localtag 0:bbd179dfa0a7 local
82 localtag 0:bbd179dfa0a7 local
79 globaltag 0:bbd179dfa0a7
83 globaltag 0:bbd179dfa0a7
@@ -1,124 +1,126 b''
1 adding r1
1 adding r1
2 adding r2
2 adding r2
3 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
3 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
4 adding b1
4 adding b1
5 created new head
5 adding b2
6 adding b2
6 adding b3
7 adding b3
7 4 b3
8 4 b3
8 3 b2
9 3 b2
9 2 0:17ab29e464c6 b1
10 2 0:17ab29e464c6 b1
10 1 r2
11 1 r2
11 0 r1
12 0 r1
12 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
13 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
13 1 files updated, 0 files merged, 3 files removed, 0 files unresolved
14 1 files updated, 0 files merged, 3 files removed, 0 files unresolved
14 % rebase b onto r1
15 % rebase b onto r1
15 applying 37a1297eb21b
16 applying 37a1297eb21b
16 37a1297eb21b transplanted to e234d668f844
17 37a1297eb21b transplanted to e234d668f844
17 applying 722f4667af76
18 applying 722f4667af76
18 722f4667af76 transplanted to 539f377d78df
19 722f4667af76 transplanted to 539f377d78df
19 applying a53251cdf717
20 applying a53251cdf717
20 a53251cdf717 transplanted to ffd6818a3975
21 a53251cdf717 transplanted to ffd6818a3975
21 7 b3
22 7 b3
22 6 b2
23 6 b2
23 5 1:d11e3596cc1a b1
24 5 1:d11e3596cc1a b1
24 4 b3
25 4 b3
25 3 b2
26 3 b2
26 2 0:17ab29e464c6 b1
27 2 0:17ab29e464c6 b1
27 1 r2
28 1 r2
28 0 r1
29 0 r1
29 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
30 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
30 1 files updated, 0 files merged, 3 files removed, 0 files unresolved
31 1 files updated, 0 files merged, 3 files removed, 0 files unresolved
31 % rebase b onto r1, skipping b2
32 % rebase b onto r1, skipping b2
32 applying 37a1297eb21b
33 applying 37a1297eb21b
33 37a1297eb21b transplanted to e234d668f844
34 37a1297eb21b transplanted to e234d668f844
34 applying a53251cdf717
35 applying a53251cdf717
35 a53251cdf717 transplanted to 7275fda4d04f
36 a53251cdf717 transplanted to 7275fda4d04f
36 6 b3
37 6 b3
37 5 1:d11e3596cc1a b1
38 5 1:d11e3596cc1a b1
38 4 b3
39 4 b3
39 3 b2
40 3 b2
40 2 0:17ab29e464c6 b1
41 2 0:17ab29e464c6 b1
41 1 r2
42 1 r2
42 0 r1
43 0 r1
43 % remote transplant
44 % remote transplant
44 requesting all changes
45 requesting all changes
45 adding changesets
46 adding changesets
46 adding manifests
47 adding manifests
47 adding file changes
48 adding file changes
48 added 2 changesets with 2 changes to 2 files
49 added 2 changesets with 2 changes to 2 files
49 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
50 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
50 searching for changes
51 searching for changes
51 applying 37a1297eb21b
52 applying 37a1297eb21b
52 37a1297eb21b transplanted to c19cf0ccb069
53 37a1297eb21b transplanted to c19cf0ccb069
53 applying a53251cdf717
54 applying a53251cdf717
54 a53251cdf717 transplanted to f7fe5bf98525
55 a53251cdf717 transplanted to f7fe5bf98525
55 3 b3
56 3 b3
56 (transplanted from a53251cdf717679d1907b289f991534be05c997a)
57 (transplanted from a53251cdf717679d1907b289f991534be05c997a)
57 2 b1
58 2 b1
58 (transplanted from 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21)
59 (transplanted from 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21)
59 1 r2
60 1 r2
60 0 r1
61 0 r1
61 % skip previous transplants
62 % skip previous transplants
62 searching for changes
63 searching for changes
63 applying 722f4667af76
64 applying 722f4667af76
64 722f4667af76 transplanted to 47156cd86c0b
65 722f4667af76 transplanted to 47156cd86c0b
65 4 b2
66 4 b2
66 3 b3
67 3 b3
67 (transplanted from a53251cdf717679d1907b289f991534be05c997a)
68 (transplanted from a53251cdf717679d1907b289f991534be05c997a)
68 2 b1
69 2 b1
69 (transplanted from 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21)
70 (transplanted from 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21)
70 1 r2
71 1 r2
71 0 r1
72 0 r1
72 % skip local changes transplanted to the source
73 % skip local changes transplanted to the source
73 adding b4
74 adding b4
74 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
75 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
75 searching for changes
76 searching for changes
76 applying 4333daefcb15
77 applying 4333daefcb15
77 4333daefcb15 transplanted to 5f42c04e07cc
78 4333daefcb15 transplanted to 5f42c04e07cc
78 % remote transplant with pull
79 % remote transplant with pull
79 requesting all changes
80 requesting all changes
80 adding changesets
81 adding changesets
81 adding manifests
82 adding manifests
82 adding file changes
83 adding file changes
83 added 1 changesets with 1 changes to 1 files
84 added 1 changesets with 1 changes to 1 files
84 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
85 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
85 searching for changes
86 searching for changes
86 searching for changes
87 searching for changes
87 adding changesets
88 adding changesets
88 adding manifests
89 adding manifests
89 adding file changes
90 adding file changes
90 added 1 changesets with 1 changes to 1 files
91 added 1 changesets with 1 changes to 1 files
91 applying a53251cdf717
92 applying a53251cdf717
92 a53251cdf717 transplanted to 8d9279348abb
93 a53251cdf717 transplanted to 8d9279348abb
93 2 b3
94 2 b3
94 1 b1
95 1 b1
95 0 r1
96 0 r1
96 % transplant --continue
97 % transplant --continue
97 adding foo
98 adding foo
98 adding toremove
99 adding toremove
99 adding added
100 adding added
100 removing toremove
101 removing toremove
101 adding bar
102 adding bar
102 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
103 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
104 created new head
103 applying a1e30dd1b8e7
105 applying a1e30dd1b8e7
104 patching file foo
106 patching file foo
105 Hunk #1 FAILED at 0
107 Hunk #1 FAILED at 0
106 1 out of 1 hunk FAILED -- saving rejects to file foo.rej
108 1 out of 1 hunk FAILED -- saving rejects to file foo.rej
107 patch failed to apply
109 patch failed to apply
108 abort: Fix up the merge and run hg transplant --continue
110 abort: Fix up the merge and run hg transplant --continue
109 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
111 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
110 applying a1e30dd1b8e7
112 applying a1e30dd1b8e7
111 patching file foo
113 patching file foo
112 Hunk #1 FAILED at 0
114 Hunk #1 FAILED at 0
113 1 out of 1 hunk FAILED -- saving rejects to file foo.rej
115 1 out of 1 hunk FAILED -- saving rejects to file foo.rej
114 patch failed to apply
116 patch failed to apply
115 abort: Fix up the merge and run hg transplant --continue
117 abort: Fix up the merge and run hg transplant --continue
116 a1e30dd1b8e7 transplanted as f1563cf27039
118 a1e30dd1b8e7 transplanted as f1563cf27039
117 skipping already applied revision 1:a1e30dd1b8e7
119 skipping already applied revision 1:a1e30dd1b8e7
118 applying 1739ac5f6139
120 applying 1739ac5f6139
119 1739ac5f6139 transplanted to d649c221319f
121 1739ac5f6139 transplanted to d649c221319f
120 applying 0282d5fbbe02
122 applying 0282d5fbbe02
121 0282d5fbbe02 transplanted to 77418277ccb3
123 0282d5fbbe02 transplanted to 77418277ccb3
122 added
124 added
123 bar
125 bar
124 foo
126 foo
@@ -1,147 +1,148 b''
1 adding a
1 adding a
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 diff -r 33aaa84a386b a
4 diff -r 33aaa84a386b a
5 --- a/a
5 --- a/a
6 +++ b/a
6 +++ b/a
7 @@ -1,1 +1,1 @@
7 @@ -1,1 +1,1 @@
8 -a
8 -a
9 +abc
9 +abc
10 adding b
10 adding b
11 M a
11 M a
12 changeset: 0:33aaa84a386b
12 changeset: 0:33aaa84a386b
13 user: test
13 user: test
14 date: Mon Jan 12 13:46:40 1970 +0000
14 date: Mon Jan 12 13:46:40 1970 +0000
15 summary: 1
15 summary: 1
16
16
17 resolving manifests
17 resolving manifests
18 overwrite False partial False
18 overwrite False partial False
19 ancestor 33aaa84a386b local 33aaa84a386b+ remote 802f095af299
19 ancestor 33aaa84a386b local 33aaa84a386b+ remote 802f095af299
20 searching for copies back to rev 1
20 searching for copies back to rev 1
21 unmatched files in other:
21 unmatched files in other:
22 b
22 b
23 a: versions differ -> m
23 a: versions differ -> m
24 b: remote created -> g
24 b: remote created -> g
25 picked tool 'true' for a (binary False symlink False)
25 picked tool 'true' for a (binary False symlink False)
26 merging a
26 merging a
27 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
27 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
28 getting b
28 getting b
29 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
29 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
30 changeset: 1:802f095af299
30 changeset: 1:802f095af299
31 tag: tip
31 tag: tip
32 user: test
32 user: test
33 date: Mon Jan 12 13:46:40 1970 +0000
33 date: Mon Jan 12 13:46:40 1970 +0000
34 summary: 2
34 summary: 2
35
35
36 resolving manifests
36 resolving manifests
37 overwrite False partial False
37 overwrite False partial False
38 ancestor 33aaa84a386b local 802f095af299+ remote 33aaa84a386b
38 ancestor 33aaa84a386b local 802f095af299+ remote 33aaa84a386b
39 b: remote deleted -> r
39 b: remote deleted -> r
40 removing b
40 removing b
41 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
41 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
42 changeset: 0:33aaa84a386b
42 changeset: 0:33aaa84a386b
43 user: test
43 user: test
44 date: Mon Jan 12 13:46:40 1970 +0000
44 date: Mon Jan 12 13:46:40 1970 +0000
45 summary: 1
45 summary: 1
46
46
47 abort: there is nothing to merge - use "hg update" instead
47 abort: there is nothing to merge - use "hg update" instead
48 failed
48 failed
49 changeset: 0:33aaa84a386b
49 changeset: 0:33aaa84a386b
50 user: test
50 user: test
51 date: Mon Jan 12 13:46:40 1970 +0000
51 date: Mon Jan 12 13:46:40 1970 +0000
52 summary: 1
52 summary: 1
53
53
54 resolving manifests
54 resolving manifests
55 overwrite False partial False
55 overwrite False partial False
56 ancestor 33aaa84a386b local 33aaa84a386b+ remote 802f095af299
56 ancestor 33aaa84a386b local 33aaa84a386b+ remote 802f095af299
57 searching for copies back to rev 1
57 searching for copies back to rev 1
58 unmatched files in other:
58 unmatched files in other:
59 b
59 b
60 a: versions differ -> m
60 a: versions differ -> m
61 b: remote created -> g
61 b: remote created -> g
62 picked tool 'true' for a (binary False symlink False)
62 picked tool 'true' for a (binary False symlink False)
63 merging a
63 merging a
64 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
64 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
65 getting b
65 getting b
66 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
66 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
67 changeset: 1:802f095af299
67 changeset: 1:802f095af299
68 tag: tip
68 tag: tip
69 user: test
69 user: test
70 date: Mon Jan 12 13:46:40 1970 +0000
70 date: Mon Jan 12 13:46:40 1970 +0000
71 summary: 2
71 summary: 2
72
72
73 changeset: 1:802f095af299
73 changeset: 1:802f095af299
74 tag: tip
74 tag: tip
75 user: test
75 user: test
76 date: Mon Jan 12 13:46:40 1970 +0000
76 date: Mon Jan 12 13:46:40 1970 +0000
77 files: a b
77 files: a b
78 description:
78 description:
79 2
79 2
80
80
81
81
82 changeset: 0:33aaa84a386b
82 changeset: 0:33aaa84a386b
83 user: test
83 user: test
84 date: Mon Jan 12 13:46:40 1970 +0000
84 date: Mon Jan 12 13:46:40 1970 +0000
85 files: a
85 files: a
86 description:
86 description:
87 1
87 1
88
88
89
89
90 diff -r 802f095af299 a
90 diff -r 802f095af299 a
91 --- a/a
91 --- a/a
92 +++ b/a
92 +++ b/a
93 @@ -1,1 +1,1 @@
93 @@ -1,1 +1,1 @@
94 -a2
94 -a2
95 +abc
95 +abc
96 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
96 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
97 adding b
97 adding b
98 created new head
98 M a
99 M a
99 changeset: 1:802f095af299
100 changeset: 1:802f095af299
100 user: test
101 user: test
101 date: Mon Jan 12 13:46:40 1970 +0000
102 date: Mon Jan 12 13:46:40 1970 +0000
102 summary: 2
103 summary: 2
103
104
104 abort: update spans branches, use 'hg merge' or 'hg update -C' to lose changes
105 abort: update spans branches, use 'hg merge' or 'hg update -C' to lose changes
105 failed
106 failed
106 abort: outstanding uncommitted changes
107 abort: outstanding uncommitted changes
107 failed
108 failed
108 resolving manifests
109 resolving manifests
109 overwrite False partial False
110 overwrite False partial False
110 ancestor 33aaa84a386b local 802f095af299+ remote 030602aee63d
111 ancestor 33aaa84a386b local 802f095af299+ remote 030602aee63d
111 searching for copies back to rev 1
112 searching for copies back to rev 1
112 a: versions differ -> m
113 a: versions differ -> m
113 b: versions differ -> m
114 b: versions differ -> m
114 picked tool 'true' for a (binary False symlink False)
115 picked tool 'true' for a (binary False symlink False)
115 merging a
116 merging a
116 my a@802f095af299+ other a@030602aee63d ancestor a@33aaa84a386b
117 my a@802f095af299+ other a@030602aee63d ancestor a@33aaa84a386b
117 picked tool 'true' for b (binary False symlink False)
118 picked tool 'true' for b (binary False symlink False)
118 merging b
119 merging b
119 my b@802f095af299+ other b@030602aee63d ancestor b@000000000000
120 my b@802f095af299+ other b@030602aee63d ancestor b@000000000000
120 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
121 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
121 (branch merge, don't forget to commit)
122 (branch merge, don't forget to commit)
122 changeset: 1:802f095af299
123 changeset: 1:802f095af299
123 user: test
124 user: test
124 date: Mon Jan 12 13:46:40 1970 +0000
125 date: Mon Jan 12 13:46:40 1970 +0000
125 summary: 2
126 summary: 2
126
127
127 changeset: 2:030602aee63d
128 changeset: 2:030602aee63d
128 tag: tip
129 tag: tip
129 parent: 0:33aaa84a386b
130 parent: 0:33aaa84a386b
130 user: test
131 user: test
131 date: Mon Jan 12 13:46:40 1970 +0000
132 date: Mon Jan 12 13:46:40 1970 +0000
132 summary: 3
133 summary: 3
133
134
134 diff -r 802f095af299 a
135 diff -r 802f095af299 a
135 --- a/a
136 --- a/a
136 +++ b/a
137 +++ b/a
137 @@ -1,1 +1,1 @@
138 @@ -1,1 +1,1 @@
138 -a2
139 -a2
139 +abc
140 +abc
140 adding a
141 adding a
141 pulling from ../a
142 pulling from ../a
142 requesting all changes
143 requesting all changes
143 adding changesets
144 adding changesets
144 adding manifests
145 adding manifests
145 adding file changes
146 adding file changes
146 added 1 changesets with 1 changes to 1 files
147 added 1 changesets with 1 changes to 1 files
147 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
148 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -1,54 +1,55 b''
1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
2 Main should be gone
2 Main should be gone
3 a
3 a
4 created new head
4 changeset: 3:ded32b0db104
5 changeset: 3:ded32b0db104
5 tag: tip
6 tag: tip
6 user: test
7 user: test
7 date: Mon Jan 12 13:46:40 1970 +0000
8 date: Mon Jan 12 13:46:40 1970 +0000
8 summary: Added side2
9 summary: Added side2
9
10
10 changeset: 2:92a816cea698
11 changeset: 2:92a816cea698
11 parent: 0:537353581d3d
12 parent: 0:537353581d3d
12 user: test
13 user: test
13 date: Mon Jan 12 13:46:40 1970 +0000
14 date: Mon Jan 12 13:46:40 1970 +0000
14 summary: Added side1
15 summary: Added side1
15
16
16 changeset: 1:221226fb2bd8
17 changeset: 1:221226fb2bd8
17 user: test
18 user: test
18 date: Mon Jan 12 13:46:40 1970 +0000
19 date: Mon Jan 12 13:46:40 1970 +0000
19 summary: Added main
20 summary: Added main
20
21
21 changeset: 0:537353581d3d
22 changeset: 0:537353581d3d
22 user: test
23 user: test
23 date: Mon Jan 12 13:46:40 1970 +0000
24 date: Mon Jan 12 13:46:40 1970 +0000
24 summary: Added a
25 summary: Added a
25
26
26 Should have two heads, side2 and main
27 Should have two heads, side2 and main
27 changeset: 3:ded32b0db104
28 changeset: 3:ded32b0db104
28 tag: tip
29 tag: tip
29 user: test
30 user: test
30 date: Mon Jan 12 13:46:40 1970 +0000
31 date: Mon Jan 12 13:46:40 1970 +0000
31 summary: Added side2
32 summary: Added side2
32
33
33 changeset: 1:221226fb2bd8
34 changeset: 1:221226fb2bd8
34 user: test
35 user: test
35 date: Mon Jan 12 13:46:40 1970 +0000
36 date: Mon Jan 12 13:46:40 1970 +0000
36 summary: Added main
37 summary: Added main
37
38
38 Should show a side1 side2
39 Should show a side1 side2
39 a
40 a
40 side1
41 side1
41 side2
42 side2
42 resolving manifests
43 resolving manifests
43 overwrite True partial False
44 overwrite True partial False
44 ancestor 537353581d3d local ded32b0db104+ remote 221226fb2bd8
45 ancestor 537353581d3d local ded32b0db104+ remote 221226fb2bd8
45 side2: remote deleted -> r
46 side2: remote deleted -> r
46 side1: remote deleted -> r
47 side1: remote deleted -> r
47 main: remote created -> g
48 main: remote created -> g
48 getting main
49 getting main
49 removing side1
50 removing side1
50 removing side2
51 removing side2
51 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
52 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
52 Should only show a main
53 Should only show a main
53 a
54 a
54 main
55 main
General Comments 0
You need to be logged in to leave comments. Login now