##// END OF EJS Templates
match: compose 'set:' pattern as matcher...
Yuya Nishihara -
r38836:9f9ffe5f default
parent child Browse files
Show More
@@ -1,1048 +1,1063 b''
1 1 # match.py - filename matching
2 2 #
3 3 # Copyright 2008, 2009 Matt Mackall <mpm@selenic.com> and others
4 4 #
5 5 # This software may be used and distributed according to the terms of the
6 6 # GNU General Public License version 2 or any later version.
7 7
8 8 from __future__ import absolute_import, print_function
9 9
10 10 import copy
11 11 import os
12 12 import re
13 13
14 14 from .i18n import _
15 15 from . import (
16 16 encoding,
17 17 error,
18 18 pathutil,
19 19 pycompat,
20 20 util,
21 21 )
22 22 from .utils import (
23 23 stringutil,
24 24 )
25 25
26 26 allpatternkinds = ('re', 'glob', 'path', 'relglob', 'relpath', 'relre',
27 27 'listfile', 'listfile0', 'set', 'include', 'subinclude',
28 28 'rootfilesin')
29 29 cwdrelativepatternkinds = ('relpath', 'glob')
30 30
31 31 propertycache = util.propertycache
32 32
33 33 def _rematcher(regex):
34 34 '''compile the regexp with the best available regexp engine and return a
35 35 matcher function'''
36 36 m = util.re.compile(regex)
37 37 try:
38 38 # slightly faster, provided by facebook's re2 bindings
39 39 return m.test_match
40 40 except AttributeError:
41 41 return m.match
42 42
43 43 def _expandsets(kindpats, ctx, listsubrepos):
44 44 '''Returns the kindpats list with the 'set' patterns expanded.'''
45 45 fset = set()
46 46 other = []
47 47
48 48 for kind, pat, source in kindpats:
49 49 if kind == 'set':
50 50 if not ctx:
51 51 raise error.ProgrammingError("fileset expression with no "
52 52 "context")
53 53 s = ctx.getfileset(pat)
54 54 fset.update(s)
55 55
56 56 if listsubrepos:
57 57 for subpath in ctx.substate:
58 58 s = ctx.sub(subpath).getfileset(pat)
59 59 fset.update(subpath + '/' + f for f in s)
60 60
61 61 continue
62 62 other.append((kind, pat, source))
63 63 return fset, other
64 64
65 65 def _expandsubinclude(kindpats, root):
66 66 '''Returns the list of subinclude matcher args and the kindpats without the
67 67 subincludes in it.'''
68 68 relmatchers = []
69 69 other = []
70 70
71 71 for kind, pat, source in kindpats:
72 72 if kind == 'subinclude':
73 73 sourceroot = pathutil.dirname(util.normpath(source))
74 74 pat = util.pconvert(pat)
75 75 path = pathutil.join(sourceroot, pat)
76 76
77 77 newroot = pathutil.dirname(path)
78 78 matcherargs = (newroot, '', [], ['include:%s' % path])
79 79
80 80 prefix = pathutil.canonpath(root, root, newroot)
81 81 if prefix:
82 82 prefix += '/'
83 83 relmatchers.append((prefix, matcherargs))
84 84 else:
85 85 other.append((kind, pat, source))
86 86
87 87 return relmatchers, other
88 88
89 89 def _kindpatsalwaysmatch(kindpats):
90 90 """"Checks whether the kindspats match everything, as e.g.
91 91 'relpath:.' does.
92 92 """
93 93 for kind, pat, source in kindpats:
94 94 if pat != '' or kind not in ['relpath', 'glob']:
95 95 return False
96 96 return True
97 97
98 def _buildkindpatsmatcher(matchercls, root, cwd, kindpats, ctx=None,
99 listsubrepos=False, badfn=None):
100 fset, kindpats = _expandsets(kindpats, ctx, listsubrepos)
101 matchers = []
102 if kindpats:
103 m = matchercls(root, cwd, kindpats, ctx=ctx, listsubrepos=listsubrepos,
104 badfn=badfn)
105 matchers.append(m)
106 if fset:
107 m = predicatematcher(root, cwd, fset.__contains__,
108 predrepr='fileset', badfn=badfn)
109 matchers.append(m)
110 if not matchers:
111 return nevermatcher(root, cwd, badfn=badfn)
112 if len(matchers) == 1:
113 return matchers[0]
114 return unionmatcher(matchers)
115
98 116 def match(root, cwd, patterns=None, include=None, exclude=None, default='glob',
99 117 exact=False, auditor=None, ctx=None, listsubrepos=False, warn=None,
100 118 badfn=None, icasefs=False):
101 119 """build an object to match a set of file patterns
102 120
103 121 arguments:
104 122 root - the canonical root of the tree you're matching against
105 123 cwd - the current working directory, if relevant
106 124 patterns - patterns to find
107 125 include - patterns to include (unless they are excluded)
108 126 exclude - patterns to exclude (even if they are included)
109 127 default - if a pattern in patterns has no explicit type, assume this one
110 128 exact - patterns are actually filenames (include/exclude still apply)
111 129 warn - optional function used for printing warnings
112 130 badfn - optional bad() callback for this matcher instead of the default
113 131 icasefs - make a matcher for wdir on case insensitive filesystems, which
114 132 normalizes the given patterns to the case in the filesystem
115 133
116 134 a pattern is one of:
117 135 'glob:<glob>' - a glob relative to cwd
118 136 're:<regexp>' - a regular expression
119 137 'path:<path>' - a path relative to repository root, which is matched
120 138 recursively
121 139 'rootfilesin:<path>' - a path relative to repository root, which is
122 140 matched non-recursively (will not match subdirectories)
123 141 'relglob:<glob>' - an unrooted glob (*.c matches C files in all dirs)
124 142 'relpath:<path>' - a path relative to cwd
125 143 'relre:<regexp>' - a regexp that needn't match the start of a name
126 144 'set:<fileset>' - a fileset expression
127 145 'include:<path>' - a file of patterns to read and include
128 146 'subinclude:<path>' - a file of patterns to match against files under
129 147 the same directory
130 148 '<something>' - a pattern of the specified default type
131 149 """
132 150 normalize = _donormalize
133 151 if icasefs:
134 152 if exact:
135 153 raise error.ProgrammingError("a case-insensitive exact matcher "
136 154 "doesn't make sense")
137 155 dirstate = ctx.repo().dirstate
138 156 dsnormalize = dirstate.normalize
139 157
140 158 def normalize(patterns, default, root, cwd, auditor, warn):
141 159 kp = _donormalize(patterns, default, root, cwd, auditor, warn)
142 160 kindpats = []
143 161 for kind, pats, source in kp:
144 162 if kind not in ('re', 'relre'): # regex can't be normalized
145 163 p = pats
146 164 pats = dsnormalize(pats)
147 165
148 166 # Preserve the original to handle a case only rename.
149 167 if p != pats and p in dirstate:
150 168 kindpats.append((kind, p, source))
151 169
152 170 kindpats.append((kind, pats, source))
153 171 return kindpats
154 172
155 173 if exact:
156 174 m = exactmatcher(root, cwd, patterns, badfn)
157 175 elif patterns:
158 176 kindpats = normalize(patterns, default, root, cwd, auditor, warn)
159 177 if _kindpatsalwaysmatch(kindpats):
160 178 m = alwaysmatcher(root, cwd, badfn, relativeuipath=True)
161 179 else:
162 m = patternmatcher(root, cwd, kindpats, ctx=ctx,
163 listsubrepos=listsubrepos, badfn=badfn)
180 m = _buildkindpatsmatcher(patternmatcher, root, cwd, kindpats,
181 ctx=ctx, listsubrepos=listsubrepos,
182 badfn=badfn)
164 183 else:
165 184 # It's a little strange that no patterns means to match everything.
166 185 # Consider changing this to match nothing (probably using nevermatcher).
167 186 m = alwaysmatcher(root, cwd, badfn)
168 187
169 188 if include:
170 189 kindpats = normalize(include, 'glob', root, cwd, auditor, warn)
171 im = includematcher(root, cwd, kindpats, ctx=ctx,
172 listsubrepos=listsubrepos, badfn=None)
190 im = _buildkindpatsmatcher(includematcher, root, cwd, kindpats, ctx=ctx,
191 listsubrepos=listsubrepos, badfn=None)
173 192 m = intersectmatchers(m, im)
174 193 if exclude:
175 194 kindpats = normalize(exclude, 'glob', root, cwd, auditor, warn)
176 em = includematcher(root, cwd, kindpats, ctx=ctx,
177 listsubrepos=listsubrepos, badfn=None)
195 em = _buildkindpatsmatcher(includematcher, root, cwd, kindpats, ctx=ctx,
196 listsubrepos=listsubrepos, badfn=None)
178 197 m = differencematcher(m, em)
179 198 return m
180 199
181 200 def exact(root, cwd, files, badfn=None):
182 201 return exactmatcher(root, cwd, files, badfn=badfn)
183 202
184 203 def always(root, cwd):
185 204 return alwaysmatcher(root, cwd)
186 205
187 206 def never(root, cwd):
188 207 return nevermatcher(root, cwd)
189 208
190 209 def badmatch(match, badfn):
191 210 """Make a copy of the given matcher, replacing its bad method with the given
192 211 one.
193 212 """
194 213 m = copy.copy(match)
195 214 m.bad = badfn
196 215 return m
197 216
198 217 def _donormalize(patterns, default, root, cwd, auditor, warn):
199 218 '''Convert 'kind:pat' from the patterns list to tuples with kind and
200 219 normalized and rooted patterns and with listfiles expanded.'''
201 220 kindpats = []
202 221 for kind, pat in [_patsplit(p, default) for p in patterns]:
203 222 if kind in cwdrelativepatternkinds:
204 223 pat = pathutil.canonpath(root, cwd, pat, auditor)
205 224 elif kind in ('relglob', 'path', 'rootfilesin'):
206 225 pat = util.normpath(pat)
207 226 elif kind in ('listfile', 'listfile0'):
208 227 try:
209 228 files = util.readfile(pat)
210 229 if kind == 'listfile0':
211 230 files = files.split('\0')
212 231 else:
213 232 files = files.splitlines()
214 233 files = [f for f in files if f]
215 234 except EnvironmentError:
216 235 raise error.Abort(_("unable to read file list (%s)") % pat)
217 236 for k, p, source in _donormalize(files, default, root, cwd,
218 237 auditor, warn):
219 238 kindpats.append((k, p, pat))
220 239 continue
221 240 elif kind == 'include':
222 241 try:
223 242 fullpath = os.path.join(root, util.localpath(pat))
224 243 includepats = readpatternfile(fullpath, warn)
225 244 for k, p, source in _donormalize(includepats, default,
226 245 root, cwd, auditor, warn):
227 246 kindpats.append((k, p, source or pat))
228 247 except error.Abort as inst:
229 248 raise error.Abort('%s: %s' % (pat, inst[0]))
230 249 except IOError as inst:
231 250 if warn:
232 251 warn(_("skipping unreadable pattern file '%s': %s\n") %
233 252 (pat, stringutil.forcebytestr(inst.strerror)))
234 253 continue
235 254 # else: re or relre - which cannot be normalized
236 255 kindpats.append((kind, pat, ''))
237 256 return kindpats
238 257
239 258 class basematcher(object):
240 259
241 260 def __init__(self, root, cwd, badfn=None, relativeuipath=True):
242 261 self._root = root
243 262 self._cwd = cwd
244 263 if badfn is not None:
245 264 self.bad = badfn
246 265 self._relativeuipath = relativeuipath
247 266
248 267 def __call__(self, fn):
249 268 return self.matchfn(fn)
250 269 def __iter__(self):
251 270 for f in self._files:
252 271 yield f
253 272 # Callbacks related to how the matcher is used by dirstate.walk.
254 273 # Subscribers to these events must monkeypatch the matcher object.
255 274 def bad(self, f, msg):
256 275 '''Callback from dirstate.walk for each explicit file that can't be
257 276 found/accessed, with an error message.'''
258 277
259 278 # If an explicitdir is set, it will be called when an explicitly listed
260 279 # directory is visited.
261 280 explicitdir = None
262 281
263 282 # If an traversedir is set, it will be called when a directory discovered
264 283 # by recursive traversal is visited.
265 284 traversedir = None
266 285
267 286 def abs(self, f):
268 287 '''Convert a repo path back to path that is relative to the root of the
269 288 matcher.'''
270 289 return f
271 290
272 291 def rel(self, f):
273 292 '''Convert repo path back to path that is relative to cwd of matcher.'''
274 293 return util.pathto(self._root, self._cwd, f)
275 294
276 295 def uipath(self, f):
277 296 '''Convert repo path to a display path. If patterns or -I/-X were used
278 297 to create this matcher, the display path will be relative to cwd.
279 298 Otherwise it is relative to the root of the repo.'''
280 299 return (self._relativeuipath and self.rel(f)) or self.abs(f)
281 300
282 301 @propertycache
283 302 def _files(self):
284 303 return []
285 304
286 305 def files(self):
287 306 '''Explicitly listed files or patterns or roots:
288 307 if no patterns or .always(): empty list,
289 308 if exact: list exact files,
290 309 if not .anypats(): list all files and dirs,
291 310 else: optimal roots'''
292 311 return self._files
293 312
294 313 @propertycache
295 314 def _fileset(self):
296 315 return set(self._files)
297 316
298 317 def exact(self, f):
299 318 '''Returns True if f is in .files().'''
300 319 return f in self._fileset
301 320
302 321 def matchfn(self, f):
303 322 return False
304 323
305 324 def visitdir(self, dir):
306 325 '''Decides whether a directory should be visited based on whether it
307 326 has potential matches in it or one of its subdirectories. This is
308 327 based on the match's primary, included, and excluded patterns.
309 328
310 329 Returns the string 'all' if the given directory and all subdirectories
311 330 should be visited. Otherwise returns True or False indicating whether
312 331 the given directory should be visited.
313 332 '''
314 333 return True
315 334
316 335 def always(self):
317 336 '''Matcher will match everything and .files() will be empty --
318 337 optimization might be possible.'''
319 338 return False
320 339
321 340 def isexact(self):
322 341 '''Matcher will match exactly the list of files in .files() --
323 342 optimization might be possible.'''
324 343 return False
325 344
326 345 def prefix(self):
327 346 '''Matcher will match the paths in .files() recursively --
328 347 optimization might be possible.'''
329 348 return False
330 349
331 350 def anypats(self):
332 351 '''None of .always(), .isexact(), and .prefix() is true --
333 352 optimizations will be difficult.'''
334 353 return not self.always() and not self.isexact() and not self.prefix()
335 354
336 355 class alwaysmatcher(basematcher):
337 356 '''Matches everything.'''
338 357
339 358 def __init__(self, root, cwd, badfn=None, relativeuipath=False):
340 359 super(alwaysmatcher, self).__init__(root, cwd, badfn,
341 360 relativeuipath=relativeuipath)
342 361
343 362 def always(self):
344 363 return True
345 364
346 365 def matchfn(self, f):
347 366 return True
348 367
349 368 def visitdir(self, dir):
350 369 return 'all'
351 370
352 371 def __repr__(self):
353 372 return r'<alwaysmatcher>'
354 373
355 374 class nevermatcher(basematcher):
356 375 '''Matches nothing.'''
357 376
358 377 def __init__(self, root, cwd, badfn=None):
359 378 super(nevermatcher, self).__init__(root, cwd, badfn)
360 379
361 380 # It's a little weird to say that the nevermatcher is an exact matcher
362 381 # or a prefix matcher, but it seems to make sense to let callers take
363 382 # fast paths based on either. There will be no exact matches, nor any
364 383 # prefixes (files() returns []), so fast paths iterating over them should
365 384 # be efficient (and correct).
366 385 def isexact(self):
367 386 return True
368 387
369 388 def prefix(self):
370 389 return True
371 390
372 391 def visitdir(self, dir):
373 392 return False
374 393
375 394 def __repr__(self):
376 395 return r'<nevermatcher>'
377 396
378 397 class predicatematcher(basematcher):
379 398 """A matcher adapter for a simple boolean function"""
380 399
381 400 def __init__(self, root, cwd, predfn, predrepr=None, badfn=None):
382 401 super(predicatematcher, self).__init__(root, cwd, badfn)
383 402 self.matchfn = predfn
384 403 self._predrepr = predrepr
385 404
386 405 @encoding.strmethod
387 406 def __repr__(self):
388 407 s = (stringutil.buildrepr(self._predrepr)
389 408 or pycompat.byterepr(self.matchfn))
390 409 return '<predicatenmatcher pred=%s>' % s
391 410
392 411 class patternmatcher(basematcher):
393 412
394 413 def __init__(self, root, cwd, kindpats, ctx=None, listsubrepos=False,
395 414 badfn=None):
396 415 super(patternmatcher, self).__init__(root, cwd, badfn)
397 416
398 417 self._files = _explicitfiles(kindpats)
399 418 self._prefix = _prefix(kindpats)
400 419 self._pats, self.matchfn = _buildmatch(ctx, kindpats, '$', listsubrepos,
401 420 root)
402 421
403 422 @propertycache
404 423 def _dirs(self):
405 424 return set(util.dirs(self._fileset)) | {'.'}
406 425
407 426 def visitdir(self, dir):
408 427 if self._prefix and dir in self._fileset:
409 428 return 'all'
410 429 return ('.' in self._fileset or
411 430 dir in self._fileset or
412 431 dir in self._dirs or
413 432 any(parentdir in self._fileset
414 433 for parentdir in util.finddirs(dir)))
415 434
416 435 def prefix(self):
417 436 return self._prefix
418 437
419 438 @encoding.strmethod
420 439 def __repr__(self):
421 440 return ('<patternmatcher patterns=%r>' % pycompat.bytestr(self._pats))
422 441
423 442 class includematcher(basematcher):
424 443
425 444 def __init__(self, root, cwd, kindpats, ctx=None, listsubrepos=False,
426 445 badfn=None):
427 446 super(includematcher, self).__init__(root, cwd, badfn)
428 447
429 448 self._pats, self.matchfn = _buildmatch(ctx, kindpats, '(?:/|$)',
430 449 listsubrepos, root)
431 450 self._prefix = _prefix(kindpats)
432 451 roots, dirs = _rootsanddirs(kindpats)
433 452 # roots are directories which are recursively included.
434 453 self._roots = set(roots)
435 454 # dirs are directories which are non-recursively included.
436 455 self._dirs = set(dirs)
437 456
438 457 def visitdir(self, dir):
439 458 if self._prefix and dir in self._roots:
440 459 return 'all'
441 460 return ('.' in self._roots or
442 461 dir in self._roots or
443 462 dir in self._dirs or
444 463 any(parentdir in self._roots
445 464 for parentdir in util.finddirs(dir)))
446 465
447 466 @encoding.strmethod
448 467 def __repr__(self):
449 468 return ('<includematcher includes=%r>' % pycompat.bytestr(self._pats))
450 469
451 470 class exactmatcher(basematcher):
452 471 '''Matches the input files exactly. They are interpreted as paths, not
453 472 patterns (so no kind-prefixes).
454 473 '''
455 474
456 475 def __init__(self, root, cwd, files, badfn=None):
457 476 super(exactmatcher, self).__init__(root, cwd, badfn)
458 477
459 478 if isinstance(files, list):
460 479 self._files = files
461 480 else:
462 481 self._files = list(files)
463 482
464 483 matchfn = basematcher.exact
465 484
466 485 @propertycache
467 486 def _dirs(self):
468 487 return set(util.dirs(self._fileset)) | {'.'}
469 488
470 489 def visitdir(self, dir):
471 490 return dir in self._dirs
472 491
473 492 def isexact(self):
474 493 return True
475 494
476 495 @encoding.strmethod
477 496 def __repr__(self):
478 497 return ('<exactmatcher files=%r>' % self._files)
479 498
480 499 class differencematcher(basematcher):
481 500 '''Composes two matchers by matching if the first matches and the second
482 501 does not.
483 502
484 503 The second matcher's non-matching-attributes (root, cwd, bad, explicitdir,
485 504 traversedir) are ignored.
486 505 '''
487 506 def __init__(self, m1, m2):
488 507 super(differencematcher, self).__init__(m1._root, m1._cwd)
489 508 self._m1 = m1
490 509 self._m2 = m2
491 510 self.bad = m1.bad
492 511 self.explicitdir = m1.explicitdir
493 512 self.traversedir = m1.traversedir
494 513
495 514 def matchfn(self, f):
496 515 return self._m1(f) and not self._m2(f)
497 516
498 517 @propertycache
499 518 def _files(self):
500 519 if self.isexact():
501 520 return [f for f in self._m1.files() if self(f)]
502 521 # If m1 is not an exact matcher, we can't easily figure out the set of
503 522 # files, because its files() are not always files. For example, if
504 523 # m1 is "path:dir" and m2 is "rootfileins:.", we don't
505 524 # want to remove "dir" from the set even though it would match m2,
506 525 # because the "dir" in m1 may not be a file.
507 526 return self._m1.files()
508 527
509 528 def visitdir(self, dir):
510 529 if self._m2.visitdir(dir) == 'all':
511 530 return False
512 531 return bool(self._m1.visitdir(dir))
513 532
514 533 def isexact(self):
515 534 return self._m1.isexact()
516 535
517 536 @encoding.strmethod
518 537 def __repr__(self):
519 538 return ('<differencematcher m1=%r, m2=%r>' % (self._m1, self._m2))
520 539
521 540 def intersectmatchers(m1, m2):
522 541 '''Composes two matchers by matching if both of them match.
523 542
524 543 The second matcher's non-matching-attributes (root, cwd, bad, explicitdir,
525 544 traversedir) are ignored.
526 545 '''
527 546 if m1 is None or m2 is None:
528 547 return m1 or m2
529 548 if m1.always():
530 549 m = copy.copy(m2)
531 550 # TODO: Consider encapsulating these things in a class so there's only
532 551 # one thing to copy from m1.
533 552 m.bad = m1.bad
534 553 m.explicitdir = m1.explicitdir
535 554 m.traversedir = m1.traversedir
536 555 m.abs = m1.abs
537 556 m.rel = m1.rel
538 557 m._relativeuipath |= m1._relativeuipath
539 558 return m
540 559 if m2.always():
541 560 m = copy.copy(m1)
542 561 m._relativeuipath |= m2._relativeuipath
543 562 return m
544 563 return intersectionmatcher(m1, m2)
545 564
546 565 class intersectionmatcher(basematcher):
547 566 def __init__(self, m1, m2):
548 567 super(intersectionmatcher, self).__init__(m1._root, m1._cwd)
549 568 self._m1 = m1
550 569 self._m2 = m2
551 570 self.bad = m1.bad
552 571 self.explicitdir = m1.explicitdir
553 572 self.traversedir = m1.traversedir
554 573
555 574 @propertycache
556 575 def _files(self):
557 576 if self.isexact():
558 577 m1, m2 = self._m1, self._m2
559 578 if not m1.isexact():
560 579 m1, m2 = m2, m1
561 580 return [f for f in m1.files() if m2(f)]
562 581 # It neither m1 nor m2 is an exact matcher, we can't easily intersect
563 582 # the set of files, because their files() are not always files. For
564 583 # example, if intersecting a matcher "-I glob:foo.txt" with matcher of
565 584 # "path:dir2", we don't want to remove "dir2" from the set.
566 585 return self._m1.files() + self._m2.files()
567 586
568 587 def matchfn(self, f):
569 588 return self._m1(f) and self._m2(f)
570 589
571 590 def visitdir(self, dir):
572 591 visit1 = self._m1.visitdir(dir)
573 592 if visit1 == 'all':
574 593 return self._m2.visitdir(dir)
575 594 # bool() because visit1=True + visit2='all' should not be 'all'
576 595 return bool(visit1 and self._m2.visitdir(dir))
577 596
578 597 def always(self):
579 598 return self._m1.always() and self._m2.always()
580 599
581 600 def isexact(self):
582 601 return self._m1.isexact() or self._m2.isexact()
583 602
584 603 @encoding.strmethod
585 604 def __repr__(self):
586 605 return ('<intersectionmatcher m1=%r, m2=%r>' % (self._m1, self._m2))
587 606
588 607 class subdirmatcher(basematcher):
589 608 """Adapt a matcher to work on a subdirectory only.
590 609
591 610 The paths are remapped to remove/insert the path as needed:
592 611
593 612 >>> from . import pycompat
594 613 >>> m1 = match(b'root', b'', [b'a.txt', b'sub/b.txt'])
595 614 >>> m2 = subdirmatcher(b'sub', m1)
596 615 >>> bool(m2(b'a.txt'))
597 616 False
598 617 >>> bool(m2(b'b.txt'))
599 618 True
600 619 >>> bool(m2.matchfn(b'a.txt'))
601 620 False
602 621 >>> bool(m2.matchfn(b'b.txt'))
603 622 True
604 623 >>> m2.files()
605 624 ['b.txt']
606 625 >>> m2.exact(b'b.txt')
607 626 True
608 627 >>> util.pconvert(m2.rel(b'b.txt'))
609 628 'sub/b.txt'
610 629 >>> def bad(f, msg):
611 630 ... print(pycompat.sysstr(b"%s: %s" % (f, msg)))
612 631 >>> m1.bad = bad
613 632 >>> m2.bad(b'x.txt', b'No such file')
614 633 sub/x.txt: No such file
615 634 >>> m2.abs(b'c.txt')
616 635 'sub/c.txt'
617 636 """
618 637
619 638 def __init__(self, path, matcher):
620 639 super(subdirmatcher, self).__init__(matcher._root, matcher._cwd)
621 640 self._path = path
622 641 self._matcher = matcher
623 642 self._always = matcher.always()
624 643
625 644 self._files = [f[len(path) + 1:] for f in matcher._files
626 645 if f.startswith(path + "/")]
627 646
628 647 # If the parent repo had a path to this subrepo and the matcher is
629 648 # a prefix matcher, this submatcher always matches.
630 649 if matcher.prefix():
631 650 self._always = any(f == path for f in matcher._files)
632 651
633 652 def bad(self, f, msg):
634 653 self._matcher.bad(self._path + "/" + f, msg)
635 654
636 655 def abs(self, f):
637 656 return self._matcher.abs(self._path + "/" + f)
638 657
639 658 def rel(self, f):
640 659 return self._matcher.rel(self._path + "/" + f)
641 660
642 661 def uipath(self, f):
643 662 return self._matcher.uipath(self._path + "/" + f)
644 663
645 664 def matchfn(self, f):
646 665 # Some information is lost in the superclass's constructor, so we
647 666 # can not accurately create the matching function for the subdirectory
648 667 # from the inputs. Instead, we override matchfn() and visitdir() to
649 668 # call the original matcher with the subdirectory path prepended.
650 669 return self._matcher.matchfn(self._path + "/" + f)
651 670
652 671 def visitdir(self, dir):
653 672 if dir == '.':
654 673 dir = self._path
655 674 else:
656 675 dir = self._path + "/" + dir
657 676 return self._matcher.visitdir(dir)
658 677
659 678 def always(self):
660 679 return self._always
661 680
662 681 def prefix(self):
663 682 return self._matcher.prefix() and not self._always
664 683
665 684 @encoding.strmethod
666 685 def __repr__(self):
667 686 return ('<subdirmatcher path=%r, matcher=%r>' %
668 687 (self._path, self._matcher))
669 688
670 689 class unionmatcher(basematcher):
671 690 """A matcher that is the union of several matchers.
672 691
673 692 The non-matching-attributes (root, cwd, bad, explicitdir, traversedir) are
674 693 taken from the first matcher.
675 694 """
676 695
677 696 def __init__(self, matchers):
678 697 m1 = matchers[0]
679 698 super(unionmatcher, self).__init__(m1._root, m1._cwd)
680 699 self.explicitdir = m1.explicitdir
681 700 self.traversedir = m1.traversedir
682 701 self._matchers = matchers
683 702
684 703 def matchfn(self, f):
685 704 for match in self._matchers:
686 705 if match(f):
687 706 return True
688 707 return False
689 708
690 709 def visitdir(self, dir):
691 710 r = False
692 711 for m in self._matchers:
693 712 v = m.visitdir(dir)
694 713 if v == 'all':
695 714 return v
696 715 r |= v
697 716 return r
698 717
699 718 @encoding.strmethod
700 719 def __repr__(self):
701 720 return ('<unionmatcher matchers=%r>' % self._matchers)
702 721
703 722 def patkind(pattern, default=None):
704 723 '''If pattern is 'kind:pat' with a known kind, return kind.'''
705 724 return _patsplit(pattern, default)[0]
706 725
707 726 def _patsplit(pattern, default):
708 727 """Split a string into the optional pattern kind prefix and the actual
709 728 pattern."""
710 729 if ':' in pattern:
711 730 kind, pat = pattern.split(':', 1)
712 731 if kind in allpatternkinds:
713 732 return kind, pat
714 733 return default, pattern
715 734
716 735 def _globre(pat):
717 736 r'''Convert an extended glob string to a regexp string.
718 737
719 738 >>> from . import pycompat
720 739 >>> def bprint(s):
721 740 ... print(pycompat.sysstr(s))
722 741 >>> bprint(_globre(br'?'))
723 742 .
724 743 >>> bprint(_globre(br'*'))
725 744 [^/]*
726 745 >>> bprint(_globre(br'**'))
727 746 .*
728 747 >>> bprint(_globre(br'**/a'))
729 748 (?:.*/)?a
730 749 >>> bprint(_globre(br'a/**/b'))
731 750 a/(?:.*/)?b
732 751 >>> bprint(_globre(br'[a*?!^][^b][!c]'))
733 752 [a*?!^][\^b][^c]
734 753 >>> bprint(_globre(br'{a,b}'))
735 754 (?:a|b)
736 755 >>> bprint(_globre(br'.\*\?'))
737 756 \.\*\?
738 757 '''
739 758 i, n = 0, len(pat)
740 759 res = ''
741 760 group = 0
742 761 escape = util.stringutil.reescape
743 762 def peek():
744 763 return i < n and pat[i:i + 1]
745 764 while i < n:
746 765 c = pat[i:i + 1]
747 766 i += 1
748 767 if c not in '*?[{},\\':
749 768 res += escape(c)
750 769 elif c == '*':
751 770 if peek() == '*':
752 771 i += 1
753 772 if peek() == '/':
754 773 i += 1
755 774 res += '(?:.*/)?'
756 775 else:
757 776 res += '.*'
758 777 else:
759 778 res += '[^/]*'
760 779 elif c == '?':
761 780 res += '.'
762 781 elif c == '[':
763 782 j = i
764 783 if j < n and pat[j:j + 1] in '!]':
765 784 j += 1
766 785 while j < n and pat[j:j + 1] != ']':
767 786 j += 1
768 787 if j >= n:
769 788 res += '\\['
770 789 else:
771 790 stuff = pat[i:j].replace('\\','\\\\')
772 791 i = j + 1
773 792 if stuff[0:1] == '!':
774 793 stuff = '^' + stuff[1:]
775 794 elif stuff[0:1] == '^':
776 795 stuff = '\\' + stuff
777 796 res = '%s[%s]' % (res, stuff)
778 797 elif c == '{':
779 798 group += 1
780 799 res += '(?:'
781 800 elif c == '}' and group:
782 801 res += ')'
783 802 group -= 1
784 803 elif c == ',' and group:
785 804 res += '|'
786 805 elif c == '\\':
787 806 p = peek()
788 807 if p:
789 808 i += 1
790 809 res += escape(p)
791 810 else:
792 811 res += escape(c)
793 812 else:
794 813 res += escape(c)
795 814 return res
796 815
797 816 def _regex(kind, pat, globsuffix):
798 817 '''Convert a (normalized) pattern of any kind into a regular expression.
799 818 globsuffix is appended to the regexp of globs.'''
800 819 if not pat:
801 820 return ''
802 821 if kind == 're':
803 822 return pat
804 823 if kind in ('path', 'relpath'):
805 824 if pat == '.':
806 825 return ''
807 826 return util.stringutil.reescape(pat) + '(?:/|$)'
808 827 if kind == 'rootfilesin':
809 828 if pat == '.':
810 829 escaped = ''
811 830 else:
812 831 # Pattern is a directory name.
813 832 escaped = util.stringutil.reescape(pat) + '/'
814 833 # Anything after the pattern must be a non-directory.
815 834 return escaped + '[^/]+$'
816 835 if kind == 'relglob':
817 836 return '(?:|.*/)' + _globre(pat) + globsuffix
818 837 if kind == 'relre':
819 838 if pat.startswith('^'):
820 839 return pat
821 840 return '.*' + pat
822 841 if kind == 'glob':
823 842 return _globre(pat) + globsuffix
824 843 raise error.ProgrammingError('not a regex pattern: %s:%s' % (kind, pat))
825 844
826 845 def _buildmatch(ctx, kindpats, globsuffix, listsubrepos, root):
827 846 '''Return regexp string and a matcher function for kindpats.
828 847 globsuffix is appended to the regexp of globs.'''
829 848 matchfuncs = []
830 849
831 fset, kindpats = _expandsets(kindpats, ctx, listsubrepos)
832 if fset:
833 matchfuncs.append(fset.__contains__)
834
835 850 subincludes, kindpats = _expandsubinclude(kindpats, root)
836 851 if subincludes:
837 852 submatchers = {}
838 853 def matchsubinclude(f):
839 854 for prefix, matcherargs in subincludes:
840 855 if f.startswith(prefix):
841 856 mf = submatchers.get(prefix)
842 857 if mf is None:
843 858 mf = match(*matcherargs)
844 859 submatchers[prefix] = mf
845 860
846 861 if mf(f[len(prefix):]):
847 862 return True
848 863 return False
849 864 matchfuncs.append(matchsubinclude)
850 865
851 866 regex = ''
852 867 if kindpats:
853 868 regex, mf = _buildregexmatch(kindpats, globsuffix)
854 869 matchfuncs.append(mf)
855 870
856 871 if len(matchfuncs) == 1:
857 872 return regex, matchfuncs[0]
858 873 else:
859 874 return regex, lambda f: any(mf(f) for mf in matchfuncs)
860 875
861 876 def _buildregexmatch(kindpats, globsuffix):
862 877 """Build a match function from a list of kinds and kindpats,
863 878 return regexp string and a matcher function."""
864 879 try:
865 880 regex = '(?:%s)' % '|'.join([_regex(k, p, globsuffix)
866 881 for (k, p, s) in kindpats])
867 882 if len(regex) > 20000:
868 883 raise OverflowError
869 884 return regex, _rematcher(regex)
870 885 except OverflowError:
871 886 # We're using a Python with a tiny regex engine and we
872 887 # made it explode, so we'll divide the pattern list in two
873 888 # until it works
874 889 l = len(kindpats)
875 890 if l < 2:
876 891 raise
877 892 regexa, a = _buildregexmatch(kindpats[:l//2], globsuffix)
878 893 regexb, b = _buildregexmatch(kindpats[l//2:], globsuffix)
879 894 return regex, lambda s: a(s) or b(s)
880 895 except re.error:
881 896 for k, p, s in kindpats:
882 897 try:
883 898 _rematcher('(?:%s)' % _regex(k, p, globsuffix))
884 899 except re.error:
885 900 if s:
886 901 raise error.Abort(_("%s: invalid pattern (%s): %s") %
887 902 (s, k, p))
888 903 else:
889 904 raise error.Abort(_("invalid pattern (%s): %s") % (k, p))
890 905 raise error.Abort(_("invalid pattern"))
891 906
892 907 def _patternrootsanddirs(kindpats):
893 908 '''Returns roots and directories corresponding to each pattern.
894 909
895 910 This calculates the roots and directories exactly matching the patterns and
896 911 returns a tuple of (roots, dirs) for each. It does not return other
897 912 directories which may also need to be considered, like the parent
898 913 directories.
899 914 '''
900 915 r = []
901 916 d = []
902 917 for kind, pat, source in kindpats:
903 918 if kind == 'glob': # find the non-glob prefix
904 919 root = []
905 920 for p in pat.split('/'):
906 921 if '[' in p or '{' in p or '*' in p or '?' in p:
907 922 break
908 923 root.append(p)
909 924 r.append('/'.join(root) or '.')
910 925 elif kind in ('relpath', 'path'):
911 926 r.append(pat or '.')
912 927 elif kind in ('rootfilesin',):
913 928 d.append(pat or '.')
914 929 else: # relglob, re, relre
915 930 r.append('.')
916 931 return r, d
917 932
918 933 def _roots(kindpats):
919 934 '''Returns root directories to match recursively from the given patterns.'''
920 935 roots, dirs = _patternrootsanddirs(kindpats)
921 936 return roots
922 937
923 938 def _rootsanddirs(kindpats):
924 939 '''Returns roots and exact directories from patterns.
925 940
926 941 roots are directories to match recursively, whereas exact directories should
927 942 be matched non-recursively. The returned (roots, dirs) tuple will also
928 943 include directories that need to be implicitly considered as either, such as
929 944 parent directories.
930 945
931 946 >>> _rootsanddirs(
932 947 ... [(b'glob', b'g/h/*', b''), (b'glob', b'g/h', b''),
933 948 ... (b'glob', b'g*', b'')])
934 949 (['g/h', 'g/h', '.'], ['g', '.'])
935 950 >>> _rootsanddirs(
936 951 ... [(b'rootfilesin', b'g/h', b''), (b'rootfilesin', b'', b'')])
937 952 ([], ['g/h', '.', 'g', '.'])
938 953 >>> _rootsanddirs(
939 954 ... [(b'relpath', b'r', b''), (b'path', b'p/p', b''),
940 955 ... (b'path', b'', b'')])
941 956 (['r', 'p/p', '.'], ['p', '.'])
942 957 >>> _rootsanddirs(
943 958 ... [(b'relglob', b'rg*', b''), (b're', b're/', b''),
944 959 ... (b'relre', b'rr', b'')])
945 960 (['.', '.', '.'], ['.'])
946 961 '''
947 962 r, d = _patternrootsanddirs(kindpats)
948 963
949 964 # Append the parents as non-recursive/exact directories, since they must be
950 965 # scanned to get to either the roots or the other exact directories.
951 966 d.extend(util.dirs(d))
952 967 d.extend(util.dirs(r))
953 968 # util.dirs() does not include the root directory, so add it manually
954 969 d.append('.')
955 970
956 971 return r, d
957 972
958 973 def _explicitfiles(kindpats):
959 974 '''Returns the potential explicit filenames from the patterns.
960 975
961 976 >>> _explicitfiles([(b'path', b'foo/bar', b'')])
962 977 ['foo/bar']
963 978 >>> _explicitfiles([(b'rootfilesin', b'foo/bar', b'')])
964 979 []
965 980 '''
966 981 # Keep only the pattern kinds where one can specify filenames (vs only
967 982 # directory names).
968 983 filable = [kp for kp in kindpats if kp[0] not in ('rootfilesin',)]
969 984 return _roots(filable)
970 985
971 986 def _prefix(kindpats):
972 987 '''Whether all the patterns match a prefix (i.e. recursively)'''
973 988 for kind, pat, source in kindpats:
974 989 if kind not in ('path', 'relpath'):
975 990 return False
976 991 return True
977 992
978 993 _commentre = None
979 994
980 995 def readpatternfile(filepath, warn, sourceinfo=False):
981 996 '''parse a pattern file, returning a list of
982 997 patterns. These patterns should be given to compile()
983 998 to be validated and converted into a match function.
984 999
985 1000 trailing white space is dropped.
986 1001 the escape character is backslash.
987 1002 comments start with #.
988 1003 empty lines are skipped.
989 1004
990 1005 lines can be of the following formats:
991 1006
992 1007 syntax: regexp # defaults following lines to non-rooted regexps
993 1008 syntax: glob # defaults following lines to non-rooted globs
994 1009 re:pattern # non-rooted regular expression
995 1010 glob:pattern # non-rooted glob
996 1011 pattern # pattern of the current default type
997 1012
998 1013 if sourceinfo is set, returns a list of tuples:
999 1014 (pattern, lineno, originalline). This is useful to debug ignore patterns.
1000 1015 '''
1001 1016
1002 1017 syntaxes = {'re': 'relre:', 'regexp': 'relre:', 'glob': 'relglob:',
1003 1018 'include': 'include', 'subinclude': 'subinclude'}
1004 1019 syntax = 'relre:'
1005 1020 patterns = []
1006 1021
1007 1022 fp = open(filepath, 'rb')
1008 1023 for lineno, line in enumerate(util.iterfile(fp), start=1):
1009 1024 if "#" in line:
1010 1025 global _commentre
1011 1026 if not _commentre:
1012 1027 _commentre = util.re.compile(br'((?:^|[^\\])(?:\\\\)*)#.*')
1013 1028 # remove comments prefixed by an even number of escapes
1014 1029 m = _commentre.search(line)
1015 1030 if m:
1016 1031 line = line[:m.end(1)]
1017 1032 # fixup properly escaped comments that survived the above
1018 1033 line = line.replace("\\#", "#")
1019 1034 line = line.rstrip()
1020 1035 if not line:
1021 1036 continue
1022 1037
1023 1038 if line.startswith('syntax:'):
1024 1039 s = line[7:].strip()
1025 1040 try:
1026 1041 syntax = syntaxes[s]
1027 1042 except KeyError:
1028 1043 if warn:
1029 1044 warn(_("%s: ignoring invalid syntax '%s'\n") %
1030 1045 (filepath, s))
1031 1046 continue
1032 1047
1033 1048 linesyntax = syntax
1034 1049 for s, rels in syntaxes.iteritems():
1035 1050 if line.startswith(rels):
1036 1051 linesyntax = rels
1037 1052 line = line[len(rels):]
1038 1053 break
1039 1054 elif line.startswith(s+':'):
1040 1055 linesyntax = rels
1041 1056 line = line[len(s) + 1:]
1042 1057 break
1043 1058 if sourceinfo:
1044 1059 patterns.append((linesyntax + line, lineno, line))
1045 1060 else:
1046 1061 patterns.append(linesyntax + line)
1047 1062 fp.close()
1048 1063 return patterns
@@ -1,3158 +1,3147 b''
1 1 @ (34) head
2 2 |
3 3 | o (33) head
4 4 | |
5 5 o | (32) expand
6 6 |\ \
7 7 | o \ (31) expand
8 8 | |\ \
9 9 | | o \ (30) expand
10 10 | | |\ \
11 11 | | | o | (29) regular commit
12 12 | | | | |
13 13 | | o | | (28) merge zero known
14 14 | | |\ \ \
15 15 o | | | | | (27) collapse
16 16 |/ / / / /
17 17 | | o---+ (26) merge one known; far right
18 18 | | | | |
19 19 +---o | | (25) merge one known; far left
20 20 | | | | |
21 21 | | o | | (24) merge one known; immediate right
22 22 | | |\| |
23 23 | | o | | (23) merge one known; immediate left
24 24 | |/| | |
25 25 +---o---+ (22) merge two known; one far left, one far right
26 26 | | / /
27 27 o | | | (21) expand
28 28 |\ \ \ \
29 29 | o---+-+ (20) merge two known; two far right
30 30 | / / /
31 31 o | | | (19) expand
32 32 |\ \ \ \
33 33 +---+---o (18) merge two known; two far left
34 34 | | | |
35 35 | o | | (17) expand
36 36 | |\ \ \
37 37 | | o---+ (16) merge two known; one immediate right, one near right
38 38 | | |/ /
39 39 o | | | (15) expand
40 40 |\ \ \ \
41 41 | o-----+ (14) merge two known; one immediate right, one far right
42 42 | |/ / /
43 43 o | | | (13) expand
44 44 |\ \ \ \
45 45 +---o | | (12) merge two known; one immediate right, one far left
46 46 | | |/ /
47 47 | o | | (11) expand
48 48 | |\ \ \
49 49 | | o---+ (10) merge two known; one immediate left, one near right
50 50 | |/ / /
51 51 o | | | (9) expand
52 52 |\ \ \ \
53 53 | o-----+ (8) merge two known; one immediate left, one far right
54 54 |/ / / /
55 55 o | | | (7) expand
56 56 |\ \ \ \
57 57 +---o | | (6) merge two known; one immediate left, one far left
58 58 | |/ / /
59 59 | o | | (5) expand
60 60 | |\ \ \
61 61 | | o | | (4) merge two known; one immediate left, one immediate right
62 62 | |/|/ /
63 63 | o / / (3) collapse
64 64 |/ / /
65 65 o / / (2) collapse
66 66 |/ /
67 67 o / (1) collapse
68 68 |/
69 69 o (0) root
70 70
71 71 $ commit()
72 72 > {
73 73 > rev=$1
74 74 > msg=$2
75 75 > shift 2
76 76 > if [ "$#" -gt 0 ]; then
77 77 > hg debugsetparents "$@"
78 78 > fi
79 79 > echo $rev > a
80 80 > hg commit -Aqd "$rev 0" -m "($rev) $msg"
81 81 > }
82 82
83 83 $ cat > printrevset.py <<EOF
84 84 > from __future__ import absolute_import
85 85 > from mercurial import (
86 86 > cmdutil,
87 87 > commands,
88 88 > extensions,
89 89 > logcmdutil,
90 90 > revsetlang,
91 91 > smartset,
92 92 > )
93 93 >
94 94 > from mercurial.utils import (
95 95 > stringutil,
96 96 > )
97 97 >
98 98 > def logrevset(repo, pats, opts):
99 99 > revs = logcmdutil._initialrevs(repo, opts)
100 100 > if not revs:
101 101 > return None
102 102 > match, pats, slowpath = logcmdutil._makematcher(repo, revs, pats, opts)
103 103 > return logcmdutil._makerevset(repo, match, pats, slowpath, opts)
104 104 >
105 105 > def uisetup(ui):
106 106 > def printrevset(orig, repo, pats, opts):
107 107 > revs, filematcher = orig(repo, pats, opts)
108 108 > if opts.get(b'print_revset'):
109 109 > expr = logrevset(repo, pats, opts)
110 110 > if expr:
111 111 > tree = revsetlang.parse(expr)
112 112 > tree = revsetlang.analyze(tree)
113 113 > else:
114 114 > tree = []
115 115 > ui = repo.ui
116 116 > ui.write(b'%r\n' % (opts.get(b'rev', []),))
117 117 > ui.write(revsetlang.prettyformat(tree) + b'\n')
118 118 > ui.write(stringutil.prettyrepr(revs) + b'\n')
119 119 > revs = smartset.baseset() # display no revisions
120 120 > return revs, filematcher
121 121 > extensions.wrapfunction(logcmdutil, 'getrevs', printrevset)
122 122 > aliases, entry = cmdutil.findcmd(b'log', commands.table)
123 123 > entry[1].append((b'', b'print-revset', False,
124 124 > b'print generated revset and exit (DEPRECATED)'))
125 125 > EOF
126 126
127 127 $ echo "[extensions]" >> $HGRCPATH
128 128 $ echo "printrevset=`pwd`/printrevset.py" >> $HGRCPATH
129 129 $ echo "beautifygraph=" >> $HGRCPATH
130 130
131 131 Set a default of narrow-text UTF-8.
132 132
133 133 $ HGENCODING=UTF-8; export HGENCODING
134 134 $ HGENCODINGAMBIGUOUS=narrow; export HGENCODINGAMBIGUOUS
135 135
136 136 Empty repo:
137 137
138 138 $ hg init repo
139 139 $ cd repo
140 140 $ hg log -G
141 141
142 142 Building DAG:
143 143
144 144 $ commit 0 "root"
145 145 $ commit 1 "collapse" 0
146 146 $ commit 2 "collapse" 1
147 147 $ commit 3 "collapse" 2
148 148 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
149 149 $ commit 5 "expand" 3 4
150 150 $ commit 6 "merge two known; one immediate left, one far left" 2 5
151 151 $ commit 7 "expand" 2 5
152 152 $ commit 8 "merge two known; one immediate left, one far right" 0 7
153 153 $ commit 9 "expand" 7 8
154 154 $ commit 10 "merge two known; one immediate left, one near right" 0 6
155 155 $ commit 11 "expand" 6 10
156 156 $ commit 12 "merge two known; one immediate right, one far left" 1 9
157 157 $ commit 13 "expand" 9 11
158 158 $ commit 14 "merge two known; one immediate right, one far right" 0 12
159 159 $ commit 15 "expand" 13 14
160 160 $ commit 16 "merge two known; one immediate right, one near right" 0 1
161 161 $ commit 17 "expand" 12 16
162 162 $ commit 18 "merge two known; two far left" 1 15
163 163 $ commit 19 "expand" 15 17
164 164 $ commit 20 "merge two known; two far right" 0 18
165 165 $ commit 21 "expand" 19 20
166 166 $ commit 22 "merge two known; one far left, one far right" 18 21
167 167 $ commit 23 "merge one known; immediate left" 1 22
168 168 $ commit 24 "merge one known; immediate right" 0 23
169 169 $ commit 25 "merge one known; far left" 21 24
170 170 $ commit 26 "merge one known; far right" 18 25
171 171 $ commit 27 "collapse" 21
172 172 $ commit 28 "merge zero known" 1 26
173 173 $ commit 29 "regular commit" 0
174 174 $ commit 30 "expand" 28 29
175 175 $ commit 31 "expand" 21 30
176 176 $ commit 32 "expand" 27 31
177 177 $ commit 33 "head" 18
178 178 $ commit 34 "head" 32
179 179
180 180 The extension should not turn on unless we're in UTF-8.
181 181
182 182 $ HGENCODING=latin1 hg log -G -q
183 183 beautifygraph: unsupported encoding, UTF-8 required
184 184 @ 34:fea3ac5810e0
185 185 |
186 186 | o 33:68608f5145f9
187 187 | |
188 188 o | 32:d06dffa21a31
189 189 |\ \
190 190 | o \ 31:621d83e11f67
191 191 | |\ \
192 192 | | o \ 30:6e11cd4b648f
193 193 | | |\ \
194 194 | | | o | 29:cd9bb2be7593
195 195 | | | | |
196 196 | | o | | 28:44ecd0b9ae99
197 197 | | |\ \ \
198 198 o | | | | | 27:886ed638191b
199 199 |/ / / / /
200 200 | | o---+ 26:7f25b6c2f0b9
201 201 | | | | |
202 202 +---o | | 25:91da8ed57247
203 203 | | | | |
204 204 | | o | | 24:a9c19a3d96b7
205 205 | | |\| |
206 206 | | o | | 23:a01cddf0766d
207 207 | |/| | |
208 208 +---o---+ 22:e0d9cccacb5d
209 209 | | / /
210 210 o | | | 21:d42a756af44d
211 211 |\ \ \ \
212 212 | o---+-+ 20:d30ed6450e32
213 213 | / / /
214 214 o | | | 19:31ddc2c1573b
215 215 |\ \ \ \
216 216 +---+---o 18:1aa84d96232a
217 217 | | | |
218 218 | o | | 17:44765d7c06e0
219 219 | |\ \ \
220 220 | | o---+ 16:3677d192927d
221 221 | | |/ /
222 222 o | | | 15:1dda3f72782d
223 223 |\ \ \ \
224 224 | o-----+ 14:8eac370358ef
225 225 | |/ / /
226 226 o | | | 13:22d8966a97e3
227 227 |\ \ \ \
228 228 +---o | | 12:86b91144a6e9
229 229 | | |/ /
230 230 | o | | 11:832d76e6bdf2
231 231 | |\ \ \
232 232 | | o---+ 10:74c64d036d72
233 233 | |/ / /
234 234 o | | | 9:7010c0af0a35
235 235 |\ \ \ \
236 236 | o-----+ 8:7a0b11f71937
237 237 |/ / / /
238 238 o | | | 7:b632bb1b1224
239 239 |\ \ \ \
240 240 +---o | | 6:b105a072e251
241 241 | |/ / /
242 242 | o | | 5:4409d547b708
243 243 | |\ \ \
244 244 | | o | | 4:26a8bac39d9f
245 245 | |/|/ /
246 246 | o / / 3:27eef8ed80b4
247 247 |/ / /
248 248 o / / 2:3d9a33b8d1e1
249 249 |/ /
250 250 o / 1:6db2ef61d156
251 251 |/
252 252 o 0:e6eb3150255d
253 253
254 254
255 255 The extension should not turn on if we're using wide text.
256 256
257 257 $ HGENCODINGAMBIGUOUS=wide hg log -G -q
258 258 beautifygraph: unsupported terminal settings, monospace narrow text required
259 259 @ 34:fea3ac5810e0
260 260 |
261 261 | o 33:68608f5145f9
262 262 | |
263 263 o | 32:d06dffa21a31
264 264 |\ \
265 265 | o \ 31:621d83e11f67
266 266 | |\ \
267 267 | | o \ 30:6e11cd4b648f
268 268 | | |\ \
269 269 | | | o | 29:cd9bb2be7593
270 270 | | | | |
271 271 | | o | | 28:44ecd0b9ae99
272 272 | | |\ \ \
273 273 o | | | | | 27:886ed638191b
274 274 |/ / / / /
275 275 | | o---+ 26:7f25b6c2f0b9
276 276 | | | | |
277 277 +---o | | 25:91da8ed57247
278 278 | | | | |
279 279 | | o | | 24:a9c19a3d96b7
280 280 | | |\| |
281 281 | | o | | 23:a01cddf0766d
282 282 | |/| | |
283 283 +---o---+ 22:e0d9cccacb5d
284 284 | | / /
285 285 o | | | 21:d42a756af44d
286 286 |\ \ \ \
287 287 | o---+-+ 20:d30ed6450e32
288 288 | / / /
289 289 o | | | 19:31ddc2c1573b
290 290 |\ \ \ \
291 291 +---+---o 18:1aa84d96232a
292 292 | | | |
293 293 | o | | 17:44765d7c06e0
294 294 | |\ \ \
295 295 | | o---+ 16:3677d192927d
296 296 | | |/ /
297 297 o | | | 15:1dda3f72782d
298 298 |\ \ \ \
299 299 | o-----+ 14:8eac370358ef
300 300 | |/ / /
301 301 o | | | 13:22d8966a97e3
302 302 |\ \ \ \
303 303 +---o | | 12:86b91144a6e9
304 304 | | |/ /
305 305 | o | | 11:832d76e6bdf2
306 306 | |\ \ \
307 307 | | o---+ 10:74c64d036d72
308 308 | |/ / /
309 309 o | | | 9:7010c0af0a35
310 310 |\ \ \ \
311 311 | o-----+ 8:7a0b11f71937
312 312 |/ / / /
313 313 o | | | 7:b632bb1b1224
314 314 |\ \ \ \
315 315 +---o | | 6:b105a072e251
316 316 | |/ / /
317 317 | o | | 5:4409d547b708
318 318 | |\ \ \
319 319 | | o | | 4:26a8bac39d9f
320 320 | |/|/ /
321 321 | o / / 3:27eef8ed80b4
322 322 |/ / /
323 323 o / / 2:3d9a33b8d1e1
324 324 |/ /
325 325 o / 1:6db2ef61d156
326 326 |/
327 327 o 0:e6eb3150255d
328 328
329 329
330 330 The rest of our tests will use the default narrow text UTF-8.
331 331
332 332 $ hg log -G -q
333 333 \xe2\x97\x8d 34:fea3ac5810e0 (esc)
334 334 \xe2\x94\x82 (esc)
335 335 \xe2\x94\x82 \xe2\x97\x8b 33:68608f5145f9 (esc)
336 336 \xe2\x94\x82 \xe2\x94\x82 (esc)
337 337 \xe2\x97\x8b \xe2\x94\x82 32:d06dffa21a31 (esc)
338 338 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 (esc)
339 339 \xe2\x94\x82 \xe2\x97\x8b \xe2\x95\xb2 31:621d83e11f67 (esc)
340 340 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 (esc)
341 341 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x95\xb2 30:6e11cd4b648f (esc)
342 342 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 (esc)
343 343 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 29:cd9bb2be7593 (esc)
344 344 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
345 345 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 28:44ecd0b9ae99 (esc)
346 346 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 (esc)
347 347 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 27:886ed638191b (esc)
348 348 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 (esc)
349 349 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 26:7f25b6c2f0b9 (esc)
350 350 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
351 351 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 25:91da8ed57247 (esc)
352 352 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
353 353 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 24:a9c19a3d96b7 (esc)
354 354 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x82 \xe2\x94\x82 (esc)
355 355 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 23:a01cddf0766d (esc)
356 356 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
357 357 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 22:e0d9cccacb5d (esc)
358 358 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xb1 \xe2\x95\xb1 (esc)
359 359 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 21:d42a756af44d (esc)
360 360 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 (esc)
361 361 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\xa4 20:d30ed6450e32 (esc)
362 362 \xe2\x94\x82 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 (esc)
363 363 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 19:31ddc2c1573b (esc)
364 364 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 (esc)
365 365 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b 18:1aa84d96232a (esc)
366 366 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
367 367 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 17:44765d7c06e0 (esc)
368 368 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 (esc)
369 369 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 16:3677d192927d (esc)
370 370 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 (esc)
371 371 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 15:1dda3f72782d (esc)
372 372 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 (esc)
373 373 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 14:8eac370358ef (esc)
374 374 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 (esc)
375 375 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 13:22d8966a97e3 (esc)
376 376 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 (esc)
377 377 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 12:86b91144a6e9 (esc)
378 378 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 (esc)
379 379 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 11:832d76e6bdf2 (esc)
380 380 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 (esc)
381 381 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 10:74c64d036d72 (esc)
382 382 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 (esc)
383 383 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 9:7010c0af0a35 (esc)
384 384 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 (esc)
385 385 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 8:7a0b11f71937 (esc)
386 386 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 (esc)
387 387 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 7:b632bb1b1224 (esc)
388 388 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 (esc)
389 389 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 6:b105a072e251 (esc)
390 390 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 (esc)
391 391 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 5:4409d547b708 (esc)
392 392 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 (esc)
393 393 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 4:26a8bac39d9f (esc)
394 394 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 (esc)
395 395 \xe2\x94\x82 \xe2\x97\x8b \xe2\x95\xb1 \xe2\x95\xb1 3:27eef8ed80b4 (esc)
396 396 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 (esc)
397 397 \xe2\x97\x8b \xe2\x95\xb1 \xe2\x95\xb1 2:3d9a33b8d1e1 (esc)
398 398 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 (esc)
399 399 \xe2\x97\x8b \xe2\x95\xb1 1:6db2ef61d156 (esc)
400 400 \xe2\x94\x82\xe2\x95\xb1 (esc)
401 401 \xe2\x97\x8b 0:e6eb3150255d (esc)
402 402
403 403
404 404 $ hg log -G
405 405 \xe2\x97\x8d changeset: 34:fea3ac5810e0 (esc)
406 406 \xe2\x94\x82 tag: tip (esc)
407 407 \xe2\x94\x82 parent: 32:d06dffa21a31 (esc)
408 408 \xe2\x94\x82 user: test (esc)
409 409 \xe2\x94\x82 date: Thu Jan 01 00:00:34 1970 +0000 (esc)
410 410 \xe2\x94\x82 summary: (34) head (esc)
411 411 \xe2\x94\x82 (esc)
412 412 \xe2\x94\x82 \xe2\x97\x8b changeset: 33:68608f5145f9 (esc)
413 413 \xe2\x94\x82 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
414 414 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
415 415 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:33 1970 +0000 (esc)
416 416 \xe2\x94\x82 \xe2\x94\x82 summary: (33) head (esc)
417 417 \xe2\x94\x82 \xe2\x94\x82 (esc)
418 418 \xe2\x97\x8b \xe2\x94\x82 changeset: 32:d06dffa21a31 (esc)
419 419 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 27:886ed638191b (esc)
420 420 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 31:621d83e11f67 (esc)
421 421 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
422 422 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:32 1970 +0000 (esc)
423 423 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (32) expand (esc)
424 424 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
425 425 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 31:621d83e11f67 (esc)
426 426 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 21:d42a756af44d (esc)
427 427 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 30:6e11cd4b648f (esc)
428 428 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
429 429 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:31 1970 +0000 (esc)
430 430 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (31) expand (esc)
431 431 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
432 432 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 30:6e11cd4b648f (esc)
433 433 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 28:44ecd0b9ae99 (esc)
434 434 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 29:cd9bb2be7593 (esc)
435 435 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
436 436 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:30 1970 +0000 (esc)
437 437 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (30) expand (esc)
438 438 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
439 439 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 29:cd9bb2be7593 (esc)
440 440 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
441 441 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
442 442 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:29 1970 +0000 (esc)
443 443 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (29) regular commit (esc)
444 444 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
445 445 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 28:44ecd0b9ae99 (esc)
446 446 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 1:6db2ef61d156 (esc)
447 447 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 26:7f25b6c2f0b9 (esc)
448 448 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
449 449 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:28 1970 +0000 (esc)
450 450 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (28) merge zero known (esc)
451 451 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
452 452 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 27:886ed638191b (esc)
453 453 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 21:d42a756af44d (esc)
454 454 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
455 455 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:27 1970 +0000 (esc)
456 456 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (27) collapse (esc)
457 457 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
458 458 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 26:7f25b6c2f0b9 (esc)
459 459 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
460 460 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 25:91da8ed57247 (esc)
461 461 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
462 462 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:26 1970 +0000 (esc)
463 463 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (26) merge one known; far right (esc)
464 464 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
465 465 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 25:91da8ed57247 (esc)
466 466 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 21:d42a756af44d (esc)
467 467 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 24:a9c19a3d96b7 (esc)
468 468 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
469 469 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:25 1970 +0000 (esc)
470 470 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (25) merge one known; far left (esc)
471 471 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
472 472 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 24:a9c19a3d96b7 (esc)
473 473 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
474 474 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 23:a01cddf0766d (esc)
475 475 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
476 476 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:24 1970 +0000 (esc)
477 477 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (24) merge one known; immediate right (esc)
478 478 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
479 479 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 23:a01cddf0766d (esc)
480 480 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 1:6db2ef61d156 (esc)
481 481 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 22:e0d9cccacb5d (esc)
482 482 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
483 483 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:23 1970 +0000 (esc)
484 484 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (23) merge one known; immediate left (esc)
485 485 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
486 486 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 22:e0d9cccacb5d (esc)
487 487 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
488 488 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xb1 \xe2\x95\xb1 parent: 21:d42a756af44d (esc)
489 489 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
490 490 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:22 1970 +0000 (esc)
491 491 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (22) merge two known; one far left, one far right (esc)
492 492 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
493 493 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 21:d42a756af44d (esc)
494 494 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 19:31ddc2c1573b (esc)
495 495 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 20:d30ed6450e32 (esc)
496 496 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
497 497 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:21 1970 +0000 (esc)
498 498 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (21) expand (esc)
499 499 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
500 500 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\xa4 changeset: 20:d30ed6450e32 (esc)
501 501 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
502 502 \xe2\x94\x82 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 18:1aa84d96232a (esc)
503 503 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
504 504 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:20 1970 +0000 (esc)
505 505 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (20) merge two known; two far right (esc)
506 506 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
507 507 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 19:31ddc2c1573b (esc)
508 508 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 15:1dda3f72782d (esc)
509 509 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 17:44765d7c06e0 (esc)
510 510 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
511 511 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:19 1970 +0000 (esc)
512 512 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (19) expand (esc)
513 513 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
514 514 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b changeset: 18:1aa84d96232a (esc)
515 515 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 1:6db2ef61d156 (esc)
516 516 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 15:1dda3f72782d (esc)
517 517 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
518 518 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:18 1970 +0000 (esc)
519 519 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (18) merge two known; two far left (esc)
520 520 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
521 521 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 17:44765d7c06e0 (esc)
522 522 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 12:86b91144a6e9 (esc)
523 523 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 16:3677d192927d (esc)
524 524 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
525 525 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:17 1970 +0000 (esc)
526 526 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (17) expand (esc)
527 527 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
528 528 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 16:3677d192927d (esc)
529 529 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
530 530 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 parent: 1:6db2ef61d156 (esc)
531 531 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
532 532 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:16 1970 +0000 (esc)
533 533 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (16) merge two known; one immediate right, one near right (esc)
534 534 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
535 535 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 15:1dda3f72782d (esc)
536 536 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 13:22d8966a97e3 (esc)
537 537 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 14:8eac370358ef (esc)
538 538 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
539 539 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:15 1970 +0000 (esc)
540 540 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (15) expand (esc)
541 541 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
542 542 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 14:8eac370358ef (esc)
543 543 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
544 544 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 12:86b91144a6e9 (esc)
545 545 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
546 546 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:14 1970 +0000 (esc)
547 547 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (14) merge two known; one immediate right, one far right (esc)
548 548 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
549 549 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 13:22d8966a97e3 (esc)
550 550 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 9:7010c0af0a35 (esc)
551 551 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 11:832d76e6bdf2 (esc)
552 552 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
553 553 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:13 1970 +0000 (esc)
554 554 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (13) expand (esc)
555 555 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
556 556 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 12:86b91144a6e9 (esc)
557 557 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 parent: 1:6db2ef61d156 (esc)
558 558 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 9:7010c0af0a35 (esc)
559 559 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
560 560 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:12 1970 +0000 (esc)
561 561 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (12) merge two known; one immediate right, one far left (esc)
562 562 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
563 563 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 11:832d76e6bdf2 (esc)
564 564 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 6:b105a072e251 (esc)
565 565 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 10:74c64d036d72 (esc)
566 566 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
567 567 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:11 1970 +0000 (esc)
568 568 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (11) expand (esc)
569 569 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
570 570 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 10:74c64d036d72 (esc)
571 571 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
572 572 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 6:b105a072e251 (esc)
573 573 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
574 574 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:10 1970 +0000 (esc)
575 575 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (10) merge two known; one immediate left, one near right (esc)
576 576 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
577 577 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 9:7010c0af0a35 (esc)
578 578 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 7:b632bb1b1224 (esc)
579 579 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 8:7a0b11f71937 (esc)
580 580 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
581 581 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:09 1970 +0000 (esc)
582 582 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (9) expand (esc)
583 583 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
584 584 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 8:7a0b11f71937 (esc)
585 585 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
586 586 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 7:b632bb1b1224 (esc)
587 587 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
588 588 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:08 1970 +0000 (esc)
589 589 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (8) merge two known; one immediate left, one far right (esc)
590 590 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
591 591 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 7:b632bb1b1224 (esc)
592 592 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 2:3d9a33b8d1e1 (esc)
593 593 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 5:4409d547b708 (esc)
594 594 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
595 595 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:07 1970 +0000 (esc)
596 596 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (7) expand (esc)
597 597 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
598 598 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 6:b105a072e251 (esc)
599 599 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 2:3d9a33b8d1e1 (esc)
600 600 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 5:4409d547b708 (esc)
601 601 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
602 602 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:06 1970 +0000 (esc)
603 603 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (6) merge two known; one immediate left, one far left (esc)
604 604 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
605 605 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 5:4409d547b708 (esc)
606 606 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 3:27eef8ed80b4 (esc)
607 607 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 4:26a8bac39d9f (esc)
608 608 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
609 609 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:05 1970 +0000 (esc)
610 610 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (5) expand (esc)
611 611 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
612 612 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 4:26a8bac39d9f (esc)
613 613 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 parent: 1:6db2ef61d156 (esc)
614 614 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 3:27eef8ed80b4 (esc)
615 615 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
616 616 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:04 1970 +0000 (esc)
617 617 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (4) merge two known; one immediate left, one immediate right (esc)
618 618 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
619 619 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 3:27eef8ed80b4 (esc)
620 620 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 user: test (esc)
621 621 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:03 1970 +0000 (esc)
622 622 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (3) collapse (esc)
623 623 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
624 624 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 2:3d9a33b8d1e1 (esc)
625 625 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 user: test (esc)
626 626 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:02 1970 +0000 (esc)
627 627 \xe2\x94\x82 \xe2\x94\x82 summary: (2) collapse (esc)
628 628 \xe2\x94\x82 \xe2\x94\x82 (esc)
629 629 \xe2\x97\x8b \xe2\x94\x82 changeset: 1:6db2ef61d156 (esc)
630 630 \xe2\x94\x82\xe2\x95\xb1 user: test (esc)
631 631 \xe2\x94\x82 date: Thu Jan 01 00:00:01 1970 +0000 (esc)
632 632 \xe2\x94\x82 summary: (1) collapse (esc)
633 633 \xe2\x94\x82 (esc)
634 634 \xe2\x97\x8b changeset: 0:e6eb3150255d (esc)
635 635 user: test
636 636 date: Thu Jan 01 00:00:00 1970 +0000
637 637 summary: (0) root
638 638
639 639 File glog:
640 640 $ hg log -G a
641 641 \xe2\x97\x8d changeset: 34:fea3ac5810e0 (esc)
642 642 \xe2\x94\x82 tag: tip (esc)
643 643 \xe2\x94\x82 parent: 32:d06dffa21a31 (esc)
644 644 \xe2\x94\x82 user: test (esc)
645 645 \xe2\x94\x82 date: Thu Jan 01 00:00:34 1970 +0000 (esc)
646 646 \xe2\x94\x82 summary: (34) head (esc)
647 647 \xe2\x94\x82 (esc)
648 648 \xe2\x94\x82 \xe2\x97\x8b changeset: 33:68608f5145f9 (esc)
649 649 \xe2\x94\x82 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
650 650 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
651 651 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:33 1970 +0000 (esc)
652 652 \xe2\x94\x82 \xe2\x94\x82 summary: (33) head (esc)
653 653 \xe2\x94\x82 \xe2\x94\x82 (esc)
654 654 \xe2\x97\x8b \xe2\x94\x82 changeset: 32:d06dffa21a31 (esc)
655 655 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 27:886ed638191b (esc)
656 656 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 31:621d83e11f67 (esc)
657 657 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
658 658 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:32 1970 +0000 (esc)
659 659 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (32) expand (esc)
660 660 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
661 661 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 31:621d83e11f67 (esc)
662 662 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 21:d42a756af44d (esc)
663 663 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 30:6e11cd4b648f (esc)
664 664 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
665 665 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:31 1970 +0000 (esc)
666 666 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (31) expand (esc)
667 667 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
668 668 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 30:6e11cd4b648f (esc)
669 669 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 28:44ecd0b9ae99 (esc)
670 670 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 29:cd9bb2be7593 (esc)
671 671 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
672 672 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:30 1970 +0000 (esc)
673 673 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (30) expand (esc)
674 674 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
675 675 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 29:cd9bb2be7593 (esc)
676 676 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
677 677 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
678 678 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:29 1970 +0000 (esc)
679 679 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (29) regular commit (esc)
680 680 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
681 681 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 28:44ecd0b9ae99 (esc)
682 682 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 1:6db2ef61d156 (esc)
683 683 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 26:7f25b6c2f0b9 (esc)
684 684 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
685 685 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:28 1970 +0000 (esc)
686 686 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (28) merge zero known (esc)
687 687 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
688 688 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 27:886ed638191b (esc)
689 689 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 21:d42a756af44d (esc)
690 690 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
691 691 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:27 1970 +0000 (esc)
692 692 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (27) collapse (esc)
693 693 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
694 694 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 26:7f25b6c2f0b9 (esc)
695 695 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
696 696 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 25:91da8ed57247 (esc)
697 697 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
698 698 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:26 1970 +0000 (esc)
699 699 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (26) merge one known; far right (esc)
700 700 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
701 701 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 25:91da8ed57247 (esc)
702 702 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 21:d42a756af44d (esc)
703 703 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 24:a9c19a3d96b7 (esc)
704 704 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
705 705 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:25 1970 +0000 (esc)
706 706 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (25) merge one known; far left (esc)
707 707 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
708 708 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 24:a9c19a3d96b7 (esc)
709 709 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
710 710 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 23:a01cddf0766d (esc)
711 711 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
712 712 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:24 1970 +0000 (esc)
713 713 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (24) merge one known; immediate right (esc)
714 714 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
715 715 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 23:a01cddf0766d (esc)
716 716 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 1:6db2ef61d156 (esc)
717 717 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 22:e0d9cccacb5d (esc)
718 718 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
719 719 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:23 1970 +0000 (esc)
720 720 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (23) merge one known; immediate left (esc)
721 721 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
722 722 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 22:e0d9cccacb5d (esc)
723 723 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
724 724 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xb1 \xe2\x95\xb1 parent: 21:d42a756af44d (esc)
725 725 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
726 726 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:22 1970 +0000 (esc)
727 727 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (22) merge two known; one far left, one far right (esc)
728 728 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
729 729 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 21:d42a756af44d (esc)
730 730 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 19:31ddc2c1573b (esc)
731 731 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 20:d30ed6450e32 (esc)
732 732 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
733 733 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:21 1970 +0000 (esc)
734 734 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (21) expand (esc)
735 735 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
736 736 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\xa4 changeset: 20:d30ed6450e32 (esc)
737 737 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
738 738 \xe2\x94\x82 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 18:1aa84d96232a (esc)
739 739 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
740 740 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:20 1970 +0000 (esc)
741 741 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (20) merge two known; two far right (esc)
742 742 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
743 743 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 19:31ddc2c1573b (esc)
744 744 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 15:1dda3f72782d (esc)
745 745 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 17:44765d7c06e0 (esc)
746 746 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
747 747 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:19 1970 +0000 (esc)
748 748 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (19) expand (esc)
749 749 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
750 750 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b changeset: 18:1aa84d96232a (esc)
751 751 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 1:6db2ef61d156 (esc)
752 752 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 15:1dda3f72782d (esc)
753 753 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
754 754 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:18 1970 +0000 (esc)
755 755 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (18) merge two known; two far left (esc)
756 756 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
757 757 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 17:44765d7c06e0 (esc)
758 758 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 12:86b91144a6e9 (esc)
759 759 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 16:3677d192927d (esc)
760 760 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
761 761 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:17 1970 +0000 (esc)
762 762 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (17) expand (esc)
763 763 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
764 764 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 16:3677d192927d (esc)
765 765 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
766 766 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 parent: 1:6db2ef61d156 (esc)
767 767 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
768 768 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:16 1970 +0000 (esc)
769 769 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (16) merge two known; one immediate right, one near right (esc)
770 770 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
771 771 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 15:1dda3f72782d (esc)
772 772 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 13:22d8966a97e3 (esc)
773 773 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 14:8eac370358ef (esc)
774 774 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
775 775 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:15 1970 +0000 (esc)
776 776 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (15) expand (esc)
777 777 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
778 778 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 14:8eac370358ef (esc)
779 779 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
780 780 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 12:86b91144a6e9 (esc)
781 781 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
782 782 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:14 1970 +0000 (esc)
783 783 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (14) merge two known; one immediate right, one far right (esc)
784 784 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
785 785 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 13:22d8966a97e3 (esc)
786 786 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 9:7010c0af0a35 (esc)
787 787 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 11:832d76e6bdf2 (esc)
788 788 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
789 789 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:13 1970 +0000 (esc)
790 790 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (13) expand (esc)
791 791 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
792 792 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 12:86b91144a6e9 (esc)
793 793 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 parent: 1:6db2ef61d156 (esc)
794 794 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 9:7010c0af0a35 (esc)
795 795 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
796 796 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:12 1970 +0000 (esc)
797 797 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (12) merge two known; one immediate right, one far left (esc)
798 798 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
799 799 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 11:832d76e6bdf2 (esc)
800 800 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 6:b105a072e251 (esc)
801 801 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 10:74c64d036d72 (esc)
802 802 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
803 803 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:11 1970 +0000 (esc)
804 804 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (11) expand (esc)
805 805 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
806 806 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 10:74c64d036d72 (esc)
807 807 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
808 808 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 6:b105a072e251 (esc)
809 809 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
810 810 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:10 1970 +0000 (esc)
811 811 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (10) merge two known; one immediate left, one near right (esc)
812 812 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
813 813 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 9:7010c0af0a35 (esc)
814 814 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 7:b632bb1b1224 (esc)
815 815 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 8:7a0b11f71937 (esc)
816 816 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
817 817 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:09 1970 +0000 (esc)
818 818 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (9) expand (esc)
819 819 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
820 820 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 8:7a0b11f71937 (esc)
821 821 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
822 822 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 7:b632bb1b1224 (esc)
823 823 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
824 824 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:08 1970 +0000 (esc)
825 825 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (8) merge two known; one immediate left, one far right (esc)
826 826 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
827 827 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 7:b632bb1b1224 (esc)
828 828 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 2:3d9a33b8d1e1 (esc)
829 829 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 5:4409d547b708 (esc)
830 830 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
831 831 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:07 1970 +0000 (esc)
832 832 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (7) expand (esc)
833 833 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
834 834 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 6:b105a072e251 (esc)
835 835 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 2:3d9a33b8d1e1 (esc)
836 836 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 5:4409d547b708 (esc)
837 837 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
838 838 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:06 1970 +0000 (esc)
839 839 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (6) merge two known; one immediate left, one far left (esc)
840 840 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
841 841 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 5:4409d547b708 (esc)
842 842 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 3:27eef8ed80b4 (esc)
843 843 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 4:26a8bac39d9f (esc)
844 844 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
845 845 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:05 1970 +0000 (esc)
846 846 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (5) expand (esc)
847 847 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
848 848 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 4:26a8bac39d9f (esc)
849 849 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 parent: 1:6db2ef61d156 (esc)
850 850 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 3:27eef8ed80b4 (esc)
851 851 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
852 852 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:04 1970 +0000 (esc)
853 853 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (4) merge two known; one immediate left, one immediate right (esc)
854 854 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
855 855 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 3:27eef8ed80b4 (esc)
856 856 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 user: test (esc)
857 857 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:03 1970 +0000 (esc)
858 858 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (3) collapse (esc)
859 859 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
860 860 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 2:3d9a33b8d1e1 (esc)
861 861 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 user: test (esc)
862 862 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:02 1970 +0000 (esc)
863 863 \xe2\x94\x82 \xe2\x94\x82 summary: (2) collapse (esc)
864 864 \xe2\x94\x82 \xe2\x94\x82 (esc)
865 865 \xe2\x97\x8b \xe2\x94\x82 changeset: 1:6db2ef61d156 (esc)
866 866 \xe2\x94\x82\xe2\x95\xb1 user: test (esc)
867 867 \xe2\x94\x82 date: Thu Jan 01 00:00:01 1970 +0000 (esc)
868 868 \xe2\x94\x82 summary: (1) collapse (esc)
869 869 \xe2\x94\x82 (esc)
870 870 \xe2\x97\x8b changeset: 0:e6eb3150255d (esc)
871 871 user: test
872 872 date: Thu Jan 01 00:00:00 1970 +0000
873 873 summary: (0) root
874 874
875 875 File glog per revset:
876 876
877 877 $ hg log -G -r 'file("a")'
878 878 \xe2\x97\x8d changeset: 34:fea3ac5810e0 (esc)
879 879 \xe2\x94\x82 tag: tip (esc)
880 880 \xe2\x94\x82 parent: 32:d06dffa21a31 (esc)
881 881 \xe2\x94\x82 user: test (esc)
882 882 \xe2\x94\x82 date: Thu Jan 01 00:00:34 1970 +0000 (esc)
883 883 \xe2\x94\x82 summary: (34) head (esc)
884 884 \xe2\x94\x82 (esc)
885 885 \xe2\x94\x82 \xe2\x97\x8b changeset: 33:68608f5145f9 (esc)
886 886 \xe2\x94\x82 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
887 887 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
888 888 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:33 1970 +0000 (esc)
889 889 \xe2\x94\x82 \xe2\x94\x82 summary: (33) head (esc)
890 890 \xe2\x94\x82 \xe2\x94\x82 (esc)
891 891 \xe2\x97\x8b \xe2\x94\x82 changeset: 32:d06dffa21a31 (esc)
892 892 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 27:886ed638191b (esc)
893 893 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 31:621d83e11f67 (esc)
894 894 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
895 895 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:32 1970 +0000 (esc)
896 896 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (32) expand (esc)
897 897 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
898 898 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 31:621d83e11f67 (esc)
899 899 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 21:d42a756af44d (esc)
900 900 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 30:6e11cd4b648f (esc)
901 901 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
902 902 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:31 1970 +0000 (esc)
903 903 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (31) expand (esc)
904 904 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
905 905 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 30:6e11cd4b648f (esc)
906 906 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 28:44ecd0b9ae99 (esc)
907 907 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 29:cd9bb2be7593 (esc)
908 908 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
909 909 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:30 1970 +0000 (esc)
910 910 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (30) expand (esc)
911 911 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
912 912 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 29:cd9bb2be7593 (esc)
913 913 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
914 914 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
915 915 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:29 1970 +0000 (esc)
916 916 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (29) regular commit (esc)
917 917 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
918 918 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 28:44ecd0b9ae99 (esc)
919 919 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 1:6db2ef61d156 (esc)
920 920 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 26:7f25b6c2f0b9 (esc)
921 921 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
922 922 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:28 1970 +0000 (esc)
923 923 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (28) merge zero known (esc)
924 924 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
925 925 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 27:886ed638191b (esc)
926 926 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 21:d42a756af44d (esc)
927 927 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
928 928 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:27 1970 +0000 (esc)
929 929 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (27) collapse (esc)
930 930 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
931 931 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 26:7f25b6c2f0b9 (esc)
932 932 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
933 933 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 25:91da8ed57247 (esc)
934 934 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
935 935 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:26 1970 +0000 (esc)
936 936 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (26) merge one known; far right (esc)
937 937 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
938 938 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 25:91da8ed57247 (esc)
939 939 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 21:d42a756af44d (esc)
940 940 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 24:a9c19a3d96b7 (esc)
941 941 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
942 942 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:25 1970 +0000 (esc)
943 943 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (25) merge one known; far left (esc)
944 944 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
945 945 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 24:a9c19a3d96b7 (esc)
946 946 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
947 947 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 23:a01cddf0766d (esc)
948 948 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
949 949 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:24 1970 +0000 (esc)
950 950 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (24) merge one known; immediate right (esc)
951 951 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
952 952 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 23:a01cddf0766d (esc)
953 953 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 1:6db2ef61d156 (esc)
954 954 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 22:e0d9cccacb5d (esc)
955 955 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
956 956 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:23 1970 +0000 (esc)
957 957 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (23) merge one known; immediate left (esc)
958 958 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
959 959 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 22:e0d9cccacb5d (esc)
960 960 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
961 961 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xb1 \xe2\x95\xb1 parent: 21:d42a756af44d (esc)
962 962 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
963 963 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:22 1970 +0000 (esc)
964 964 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (22) merge two known; one far left, one far right (esc)
965 965 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
966 966 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 21:d42a756af44d (esc)
967 967 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 19:31ddc2c1573b (esc)
968 968 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 20:d30ed6450e32 (esc)
969 969 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
970 970 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:21 1970 +0000 (esc)
971 971 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (21) expand (esc)
972 972 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
973 973 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\xa4 changeset: 20:d30ed6450e32 (esc)
974 974 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
975 975 \xe2\x94\x82 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 18:1aa84d96232a (esc)
976 976 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
977 977 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:20 1970 +0000 (esc)
978 978 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (20) merge two known; two far right (esc)
979 979 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
980 980 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 19:31ddc2c1573b (esc)
981 981 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 15:1dda3f72782d (esc)
982 982 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 17:44765d7c06e0 (esc)
983 983 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
984 984 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:19 1970 +0000 (esc)
985 985 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (19) expand (esc)
986 986 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
987 987 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b changeset: 18:1aa84d96232a (esc)
988 988 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 1:6db2ef61d156 (esc)
989 989 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 15:1dda3f72782d (esc)
990 990 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
991 991 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:18 1970 +0000 (esc)
992 992 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (18) merge two known; two far left (esc)
993 993 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
994 994 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 17:44765d7c06e0 (esc)
995 995 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 12:86b91144a6e9 (esc)
996 996 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 16:3677d192927d (esc)
997 997 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
998 998 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:17 1970 +0000 (esc)
999 999 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (17) expand (esc)
1000 1000 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1001 1001 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 16:3677d192927d (esc)
1002 1002 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
1003 1003 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 parent: 1:6db2ef61d156 (esc)
1004 1004 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1005 1005 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:16 1970 +0000 (esc)
1006 1006 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (16) merge two known; one immediate right, one near right (esc)
1007 1007 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1008 1008 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 15:1dda3f72782d (esc)
1009 1009 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 13:22d8966a97e3 (esc)
1010 1010 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 14:8eac370358ef (esc)
1011 1011 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1012 1012 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:15 1970 +0000 (esc)
1013 1013 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (15) expand (esc)
1014 1014 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1015 1015 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 14:8eac370358ef (esc)
1016 1016 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
1017 1017 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 12:86b91144a6e9 (esc)
1018 1018 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1019 1019 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:14 1970 +0000 (esc)
1020 1020 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (14) merge two known; one immediate right, one far right (esc)
1021 1021 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1022 1022 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 13:22d8966a97e3 (esc)
1023 1023 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 9:7010c0af0a35 (esc)
1024 1024 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 11:832d76e6bdf2 (esc)
1025 1025 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1026 1026 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:13 1970 +0000 (esc)
1027 1027 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (13) expand (esc)
1028 1028 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1029 1029 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 12:86b91144a6e9 (esc)
1030 1030 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 parent: 1:6db2ef61d156 (esc)
1031 1031 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 9:7010c0af0a35 (esc)
1032 1032 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1033 1033 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:12 1970 +0000 (esc)
1034 1034 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (12) merge two known; one immediate right, one far left (esc)
1035 1035 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1036 1036 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 11:832d76e6bdf2 (esc)
1037 1037 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 6:b105a072e251 (esc)
1038 1038 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 10:74c64d036d72 (esc)
1039 1039 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1040 1040 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:11 1970 +0000 (esc)
1041 1041 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (11) expand (esc)
1042 1042 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1043 1043 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 10:74c64d036d72 (esc)
1044 1044 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
1045 1045 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 6:b105a072e251 (esc)
1046 1046 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1047 1047 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:10 1970 +0000 (esc)
1048 1048 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (10) merge two known; one immediate left, one near right (esc)
1049 1049 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1050 1050 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 9:7010c0af0a35 (esc)
1051 1051 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 7:b632bb1b1224 (esc)
1052 1052 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 8:7a0b11f71937 (esc)
1053 1053 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1054 1054 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:09 1970 +0000 (esc)
1055 1055 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (9) expand (esc)
1056 1056 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1057 1057 \xe2\x94\x82 \xe2\x97\x8b\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4 changeset: 8:7a0b11f71937 (esc)
1058 1058 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
1059 1059 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 7:b632bb1b1224 (esc)
1060 1060 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1061 1061 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:08 1970 +0000 (esc)
1062 1062 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (8) merge two known; one immediate left, one far right (esc)
1063 1063 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1064 1064 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 changeset: 7:b632bb1b1224 (esc)
1065 1065 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 2:3d9a33b8d1e1 (esc)
1066 1066 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 5:4409d547b708 (esc)
1067 1067 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1068 1068 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:07 1970 +0000 (esc)
1069 1069 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (7) expand (esc)
1070 1070 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1071 1071 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 6:b105a072e251 (esc)
1072 1072 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 parent: 2:3d9a33b8d1e1 (esc)
1073 1073 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 5:4409d547b708 (esc)
1074 1074 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1075 1075 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:06 1970 +0000 (esc)
1076 1076 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (6) merge two known; one immediate left, one far left (esc)
1077 1077 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1078 1078 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 5:4409d547b708 (esc)
1079 1079 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 \xe2\x95\xb2 parent: 3:27eef8ed80b4 (esc)
1080 1080 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 4:26a8bac39d9f (esc)
1081 1081 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1082 1082 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:05 1970 +0000 (esc)
1083 1083 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (5) expand (esc)
1084 1084 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1085 1085 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 4:26a8bac39d9f (esc)
1086 1086 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 parent: 1:6db2ef61d156 (esc)
1087 1087 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 3:27eef8ed80b4 (esc)
1088 1088 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1089 1089 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:04 1970 +0000 (esc)
1090 1090 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (4) merge two known; one immediate left, one immediate right (esc)
1091 1091 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1092 1092 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 3:27eef8ed80b4 (esc)
1093 1093 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 \xe2\x95\xb1 user: test (esc)
1094 1094 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:03 1970 +0000 (esc)
1095 1095 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (3) collapse (esc)
1096 1096 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1097 1097 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 2:3d9a33b8d1e1 (esc)
1098 1098 \xe2\x94\x82\xe2\x95\xb1 \xe2\x95\xb1 user: test (esc)
1099 1099 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:02 1970 +0000 (esc)
1100 1100 \xe2\x94\x82 \xe2\x94\x82 summary: (2) collapse (esc)
1101 1101 \xe2\x94\x82 \xe2\x94\x82 (esc)
1102 1102 \xe2\x97\x8b \xe2\x94\x82 changeset: 1:6db2ef61d156 (esc)
1103 1103 \xe2\x94\x82\xe2\x95\xb1 user: test (esc)
1104 1104 \xe2\x94\x82 date: Thu Jan 01 00:00:01 1970 +0000 (esc)
1105 1105 \xe2\x94\x82 summary: (1) collapse (esc)
1106 1106 \xe2\x94\x82 (esc)
1107 1107 \xe2\x97\x8b changeset: 0:e6eb3150255d (esc)
1108 1108 user: test
1109 1109 date: Thu Jan 01 00:00:00 1970 +0000
1110 1110 summary: (0) root
1111 1111
1112 1112
1113 1113 File glog per revset (only merges):
1114 1114
1115 1115 $ hg log -G -r 'file("a")' -m
1116 1116 \xe2\x97\x8b changeset: 32:d06dffa21a31 (esc)
1117 1117 \xe2\x94\x82\xe2\x95\xb2 parent: 27:886ed638191b (esc)
1118 1118 \xe2\x94\x82 \xe2\x94\x86 parent: 31:621d83e11f67 (esc)
1119 1119 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
1120 1120 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:32 1970 +0000 (esc)
1121 1121 \xe2\x94\x82 \xe2\x94\x86 summary: (32) expand (esc)
1122 1122 \xe2\x94\x82 \xe2\x94\x86 (esc)
1123 1123 \xe2\x97\x8b \xe2\x94\x86 changeset: 31:621d83e11f67 (esc)
1124 1124 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x86 parent: 21:d42a756af44d (esc)
1125 1125 \xe2\x94\x82 \xe2\x94\x86 parent: 30:6e11cd4b648f (esc)
1126 1126 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
1127 1127 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:31 1970 +0000 (esc)
1128 1128 \xe2\x94\x82 \xe2\x94\x86 summary: (31) expand (esc)
1129 1129 \xe2\x94\x82 \xe2\x94\x86 (esc)
1130 1130 \xe2\x97\x8b \xe2\x94\x86 changeset: 30:6e11cd4b648f (esc)
1131 1131 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 28:44ecd0b9ae99 (esc)
1132 1132 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x86 parent: 29:cd9bb2be7593 (esc)
1133 1133 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
1134 1134 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:30 1970 +0000 (esc)
1135 1135 \xe2\x94\x82 \xe2\x94\x86 summary: (30) expand (esc)
1136 1136 \xe2\x94\x82 \xe2\x95\xb1 (esc)
1137 1137 \xe2\x97\x8b \xe2\x94\x86 changeset: 28:44ecd0b9ae99 (esc)
1138 1138 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 1:6db2ef61d156 (esc)
1139 1139 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x86 parent: 26:7f25b6c2f0b9 (esc)
1140 1140 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
1141 1141 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:28 1970 +0000 (esc)
1142 1142 \xe2\x94\x82 \xe2\x94\x86 summary: (28) merge zero known (esc)
1143 1143 \xe2\x94\x82 \xe2\x95\xb1 (esc)
1144 1144 \xe2\x97\x8b \xe2\x94\x86 changeset: 26:7f25b6c2f0b9 (esc)
1145 1145 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 18:1aa84d96232a (esc)
1146 1146 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 parent: 25:91da8ed57247 (esc)
1147 1147 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
1148 1148 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:26 1970 +0000 (esc)
1149 1149 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 summary: (26) merge one known; far right (esc)
1150 1150 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 (esc)
1151 1151 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x86 changeset: 25:91da8ed57247 (esc)
1152 1152 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x86 parent: 21:d42a756af44d (esc)
1153 1153 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 parent: 24:a9c19a3d96b7 (esc)
1154 1154 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
1155 1155 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:25 1970 +0000 (esc)
1156 1156 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 summary: (25) merge one known; far left (esc)
1157 1157 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 (esc)
1158 1158 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x86 changeset: 24:a9c19a3d96b7 (esc)
1159 1159 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 0:e6eb3150255d (esc)
1160 1160 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x86 parent: 23:a01cddf0766d (esc)
1161 1161 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
1162 1162 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:24 1970 +0000 (esc)
1163 1163 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 summary: (24) merge one known; immediate right (esc)
1164 1164 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xb1 (esc)
1165 1165 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x86 changeset: 23:a01cddf0766d (esc)
1166 1166 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 1:6db2ef61d156 (esc)
1167 1167 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x86 parent: 22:e0d9cccacb5d (esc)
1168 1168 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
1169 1169 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:23 1970 +0000 (esc)
1170 1170 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 summary: (23) merge one known; immediate left (esc)
1171 1171 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xb1 (esc)
1172 1172 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x86 changeset: 22:e0d9cccacb5d (esc)
1173 1173 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x86\xe2\x95\xb1 parent: 18:1aa84d96232a (esc)
1174 1174 \xe2\x94\x82 \xe2\x94\x86 parent: 21:d42a756af44d (esc)
1175 1175 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
1176 1176 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:22 1970 +0000 (esc)
1177 1177 \xe2\x94\x82 \xe2\x94\x86 summary: (22) merge two known; one far left, one far right (esc)
1178 1178 \xe2\x94\x82 \xe2\x94\x86 (esc)
1179 1179 \xe2\x94\x82 \xe2\x97\x8b changeset: 21:d42a756af44d (esc)
1180 1180 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 parent: 19:31ddc2c1573b (esc)
1181 1181 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 20:d30ed6450e32 (esc)
1182 1182 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1183 1183 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:21 1970 +0000 (esc)
1184 1184 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (21) expand (esc)
1185 1185 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1186 1186 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b changeset: 20:d30ed6450e32 (esc)
1187 1187 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
1188 1188 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 parent: 18:1aa84d96232a (esc)
1189 1189 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1190 1190 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:20 1970 +0000 (esc)
1191 1191 \xe2\x94\x82 \xe2\x94\x82 summary: (20) merge two known; two far right (esc)
1192 1192 \xe2\x94\x82 \xe2\x94\x82 (esc)
1193 1193 \xe2\x94\x82 \xe2\x97\x8b changeset: 19:31ddc2c1573b (esc)
1194 1194 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 parent: 15:1dda3f72782d (esc)
1195 1195 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 17:44765d7c06e0 (esc)
1196 1196 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1197 1197 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:19 1970 +0000 (esc)
1198 1198 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (19) expand (esc)
1199 1199 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1200 1200 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 18:1aa84d96232a (esc)
1201 1201 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x82 \xe2\x94\x82 parent: 1:6db2ef61d156 (esc)
1202 1202 \xe2\x95\xa7 \xe2\x94\x82 \xe2\x94\x82 parent: 15:1dda3f72782d (esc)
1203 1203 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1204 1204 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:18 1970 +0000 (esc)
1205 1205 \xe2\x94\x82 \xe2\x94\x82 summary: (18) merge two known; two far left (esc)
1206 1206 \xe2\x95\xb1 \xe2\x95\xb1 (esc)
1207 1207 \xe2\x94\x82 \xe2\x97\x8b changeset: 17:44765d7c06e0 (esc)
1208 1208 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 parent: 12:86b91144a6e9 (esc)
1209 1209 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 16:3677d192927d (esc)
1210 1210 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1211 1211 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:17 1970 +0000 (esc)
1212 1212 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (17) expand (esc)
1213 1213 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1214 1214 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b changeset: 16:3677d192927d (esc)
1215 1215 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 parent: 0:e6eb3150255d (esc)
1216 1216 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x95\xa7 parent: 1:6db2ef61d156 (esc)
1217 1217 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1218 1218 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:16 1970 +0000 (esc)
1219 1219 \xe2\x94\x82 \xe2\x94\x82 summary: (16) merge two known; one immediate right, one near right (esc)
1220 1220 \xe2\x94\x82 \xe2\x94\x82 (esc)
1221 1221 \xe2\x97\x8b \xe2\x94\x82 changeset: 15:1dda3f72782d (esc)
1222 1222 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 13:22d8966a97e3 (esc)
1223 1223 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 14:8eac370358ef (esc)
1224 1224 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1225 1225 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:15 1970 +0000 (esc)
1226 1226 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (15) expand (esc)
1227 1227 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1228 1228 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 14:8eac370358ef (esc)
1229 1229 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x82 parent: 0:e6eb3150255d (esc)
1230 1230 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x82 parent: 12:86b91144a6e9 (esc)
1231 1231 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1232 1232 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:14 1970 +0000 (esc)
1233 1233 \xe2\x94\x82 \xe2\x94\x82 summary: (14) merge two known; one immediate right, one far right (esc)
1234 1234 \xe2\x94\x82 \xe2\x95\xb1 (esc)
1235 1235 \xe2\x97\x8b \xe2\x94\x82 changeset: 13:22d8966a97e3 (esc)
1236 1236 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 9:7010c0af0a35 (esc)
1237 1237 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 11:832d76e6bdf2 (esc)
1238 1238 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1239 1239 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:13 1970 +0000 (esc)
1240 1240 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (13) expand (esc)
1241 1241 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1242 1242 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b changeset: 12:86b91144a6e9 (esc)
1243 1243 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 1:6db2ef61d156 (esc)
1244 1244 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 parent: 9:7010c0af0a35 (esc)
1245 1245 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1246 1246 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:12 1970 +0000 (esc)
1247 1247 \xe2\x94\x82 \xe2\x94\x82 summary: (12) merge two known; one immediate right, one far left (esc)
1248 1248 \xe2\x94\x82 \xe2\x94\x82 (esc)
1249 1249 \xe2\x94\x82 \xe2\x97\x8b changeset: 11:832d76e6bdf2 (esc)
1250 1250 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 parent: 6:b105a072e251 (esc)
1251 1251 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 10:74c64d036d72 (esc)
1252 1252 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1253 1253 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:11 1970 +0000 (esc)
1254 1254 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (11) expand (esc)
1255 1255 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1256 1256 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b changeset: 10:74c64d036d72 (esc)
1257 1257 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82 parent: 0:e6eb3150255d (esc)
1258 1258 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 parent: 6:b105a072e251 (esc)
1259 1259 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1260 1260 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:10 1970 +0000 (esc)
1261 1261 \xe2\x94\x82 \xe2\x94\x82 summary: (10) merge two known; one immediate left, one near right (esc)
1262 1262 \xe2\x94\x82 \xe2\x94\x82 (esc)
1263 1263 \xe2\x97\x8b \xe2\x94\x82 changeset: 9:7010c0af0a35 (esc)
1264 1264 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 7:b632bb1b1224 (esc)
1265 1265 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 8:7a0b11f71937 (esc)
1266 1266 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1267 1267 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:09 1970 +0000 (esc)
1268 1268 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (9) expand (esc)
1269 1269 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
1270 1270 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 8:7a0b11f71937 (esc)
1271 1271 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
1272 1272 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x82 parent: 7:b632bb1b1224 (esc)
1273 1273 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1274 1274 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:08 1970 +0000 (esc)
1275 1275 \xe2\x94\x82 \xe2\x94\x82 summary: (8) merge two known; one immediate left, one far right (esc)
1276 1276 \xe2\x94\x82 \xe2\x95\xb1 (esc)
1277 1277 \xe2\x97\x8b \xe2\x94\x82 changeset: 7:b632bb1b1224 (esc)
1278 1278 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 2:3d9a33b8d1e1 (esc)
1279 1279 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x82 parent: 5:4409d547b708 (esc)
1280 1280 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
1281 1281 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:07 1970 +0000 (esc)
1282 1282 \xe2\x94\x82 \xe2\x94\x82 summary: (7) expand (esc)
1283 1283 \xe2\x94\x82 \xe2\x95\xb1 (esc)
1284 1284 \xe2\x94\x82 \xe2\x97\x8b changeset: 6:b105a072e251 (esc)
1285 1285 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82 parent: 2:3d9a33b8d1e1 (esc)
1286 1286 \xe2\x94\x82 \xe2\x95\xa7 parent: 5:4409d547b708 (esc)
1287 1287 \xe2\x94\x82 user: test (esc)
1288 1288 \xe2\x94\x82 date: Thu Jan 01 00:00:06 1970 +0000 (esc)
1289 1289 \xe2\x94\x82 summary: (6) merge two known; one immediate left, one far left (esc)
1290 1290 \xe2\x94\x82 (esc)
1291 1291 \xe2\x97\x8b changeset: 5:4409d547b708 (esc)
1292 1292 \xe2\x94\x82\xe2\x95\xb2 parent: 3:27eef8ed80b4 (esc)
1293 1293 \xe2\x94\x82 \xe2\x95\xa7 parent: 4:26a8bac39d9f (esc)
1294 1294 \xe2\x94\x82 user: test (esc)
1295 1295 \xe2\x94\x82 date: Thu Jan 01 00:00:05 1970 +0000 (esc)
1296 1296 \xe2\x94\x82 summary: (5) expand (esc)
1297 1297 \xe2\x94\x82 (esc)
1298 1298 \xe2\x97\x8b changeset: 4:26a8bac39d9f (esc)
1299 1299 \xe2\x94\x82\xe2\x95\xb2 parent: 1:6db2ef61d156 (esc)
1300 1300 \xe2\x95\xa7 \xe2\x95\xa7 parent: 3:27eef8ed80b4 (esc)
1301 1301 user: test
1302 1302 date: Thu Jan 01 00:00:04 1970 +0000
1303 1303 summary: (4) merge two known; one immediate left, one immediate right
1304 1304
1305 1305
1306 1306 Empty revision range - display nothing:
1307 1307 $ hg log -G -r 1..0
1308 1308
1309 1309 $ cd ..
1310 1310
1311 1311 #if no-outer-repo
1312 1312
1313 1313 From outer space:
1314 1314 $ hg log -G -l1 repo
1315 1315 \xe2\x97\x8d changeset: 34:fea3ac5810e0 (esc)
1316 1316 \xe2\x94\x82 tag: tip (esc)
1317 1317 \xe2\x95\xa7 parent: 32:d06dffa21a31 (esc)
1318 1318 user: test
1319 1319 date: Thu Jan 01 00:00:34 1970 +0000
1320 1320 summary: (34) head
1321 1321
1322 1322 $ hg log -G -l1 repo/a
1323 1323 \xe2\x97\x8d changeset: 34:fea3ac5810e0 (esc)
1324 1324 \xe2\x94\x82 tag: tip (esc)
1325 1325 \xe2\x95\xa7 parent: 32:d06dffa21a31 (esc)
1326 1326 user: test
1327 1327 date: Thu Jan 01 00:00:34 1970 +0000
1328 1328 summary: (34) head
1329 1329
1330 1330 $ hg log -G -l1 repo/missing
1331 1331
1332 1332 #endif
1333 1333
1334 1334 File log with revs != cset revs:
1335 1335 $ hg init flog
1336 1336 $ cd flog
1337 1337 $ echo one >one
1338 1338 $ hg add one
1339 1339 $ hg commit -mone
1340 1340 $ echo two >two
1341 1341 $ hg add two
1342 1342 $ hg commit -mtwo
1343 1343 $ echo more >two
1344 1344 $ hg commit -mmore
1345 1345 $ hg log -G two
1346 1346 \xe2\x97\x8d changeset: 2:12c28321755b (esc)
1347 1347 \xe2\x94\x82 tag: tip (esc)
1348 1348 \xe2\x94\x82 user: test (esc)
1349 1349 \xe2\x94\x82 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
1350 1350 \xe2\x94\x82 summary: more (esc)
1351 1351 \xe2\x94\x82 (esc)
1352 1352 \xe2\x97\x8b changeset: 1:5ac72c0599bf (esc)
1353 1353 \xe2\x94\x82 user: test (esc)
1354 1354 \xe2\x95\xa7 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
1355 1355 summary: two
1356 1356
1357 1357
1358 1358 Issue1896: File log with explicit style
1359 1359 $ hg log -G --style=default one
1360 1360 \xe2\x97\x8b changeset: 0:3d578b4a1f53 (esc)
1361 1361 user: test
1362 1362 date: Thu Jan 01 00:00:00 1970 +0000
1363 1363 summary: one
1364 1364
1365 1365 Issue2395: glog --style header and footer
1366 1366 $ hg log -G --style=xml one
1367 1367 <?xml version="1.0"?>
1368 1368 <log>
1369 1369 \xe2\x97\x8b <logentry revision="0" node="3d578b4a1f537d5fcf7301bfa9c0b97adfaa6fb1"> (esc)
1370 1370 <author email="test">test</author>
1371 1371 <date>1970-01-01T00:00:00+00:00</date>
1372 1372 <msg xml:space="preserve">one</msg>
1373 1373 </logentry>
1374 1374 </log>
1375 1375
1376 1376 $ cd ..
1377 1377
1378 1378 Incoming and outgoing:
1379 1379
1380 1380 $ hg clone -U -r31 repo repo2
1381 1381 adding changesets
1382 1382 adding manifests
1383 1383 adding file changes
1384 1384 added 31 changesets with 31 changes to 1 files
1385 1385 new changesets e6eb3150255d:621d83e11f67
1386 1386 $ cd repo2
1387 1387
1388 1388 $ hg incoming --graph ../repo
1389 1389 comparing with ../repo
1390 1390 searching for changes
1391 1391 \xe2\x97\x8b changeset: 34:fea3ac5810e0 (esc)
1392 1392 \xe2\x94\x82 tag: tip (esc)
1393 1393 \xe2\x94\x82 parent: 32:d06dffa21a31 (esc)
1394 1394 \xe2\x94\x82 user: test (esc)
1395 1395 \xe2\x94\x82 date: Thu Jan 01 00:00:34 1970 +0000 (esc)
1396 1396 \xe2\x94\x82 summary: (34) head (esc)
1397 1397 \xe2\x94\x82 (esc)
1398 1398 \xe2\x94\x82 \xe2\x97\x8b changeset: 33:68608f5145f9 (esc)
1399 1399 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
1400 1400 \xe2\x94\x82 user: test (esc)
1401 1401 \xe2\x94\x82 date: Thu Jan 01 00:00:33 1970 +0000 (esc)
1402 1402 \xe2\x94\x82 summary: (33) head (esc)
1403 1403 \xe2\x94\x82 (esc)
1404 1404 \xe2\x97\x8b changeset: 32:d06dffa21a31 (esc)
1405 1405 \xe2\x94\x82 parent: 27:886ed638191b (esc)
1406 1406 \xe2\x94\x82 parent: 31:621d83e11f67 (esc)
1407 1407 \xe2\x94\x82 user: test (esc)
1408 1408 \xe2\x94\x82 date: Thu Jan 01 00:00:32 1970 +0000 (esc)
1409 1409 \xe2\x94\x82 summary: (32) expand (esc)
1410 1410 \xe2\x94\x82 (esc)
1411 1411 \xe2\x97\x8b changeset: 27:886ed638191b (esc)
1412 1412 parent: 21:d42a756af44d
1413 1413 user: test
1414 1414 date: Thu Jan 01 00:00:27 1970 +0000
1415 1415 summary: (27) collapse
1416 1416
1417 1417 $ cd ..
1418 1418
1419 1419 $ hg -R repo outgoing --graph repo2
1420 1420 comparing with repo2
1421 1421 searching for changes
1422 1422 \xe2\x97\x8d changeset: 34:fea3ac5810e0 (esc)
1423 1423 \xe2\x94\x82 tag: tip (esc)
1424 1424 \xe2\x94\x82 parent: 32:d06dffa21a31 (esc)
1425 1425 \xe2\x94\x82 user: test (esc)
1426 1426 \xe2\x94\x82 date: Thu Jan 01 00:00:34 1970 +0000 (esc)
1427 1427 \xe2\x94\x82 summary: (34) head (esc)
1428 1428 \xe2\x94\x82 (esc)
1429 1429 \xe2\x94\x82 \xe2\x97\x8b changeset: 33:68608f5145f9 (esc)
1430 1430 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
1431 1431 \xe2\x94\x82 user: test (esc)
1432 1432 \xe2\x94\x82 date: Thu Jan 01 00:00:33 1970 +0000 (esc)
1433 1433 \xe2\x94\x82 summary: (33) head (esc)
1434 1434 \xe2\x94\x82 (esc)
1435 1435 \xe2\x97\x8b changeset: 32:d06dffa21a31 (esc)
1436 1436 \xe2\x94\x82 parent: 27:886ed638191b (esc)
1437 1437 \xe2\x94\x82 parent: 31:621d83e11f67 (esc)
1438 1438 \xe2\x94\x82 user: test (esc)
1439 1439 \xe2\x94\x82 date: Thu Jan 01 00:00:32 1970 +0000 (esc)
1440 1440 \xe2\x94\x82 summary: (32) expand (esc)
1441 1441 \xe2\x94\x82 (esc)
1442 1442 \xe2\x97\x8b changeset: 27:886ed638191b (esc)
1443 1443 parent: 21:d42a756af44d
1444 1444 user: test
1445 1445 date: Thu Jan 01 00:00:27 1970 +0000
1446 1446 summary: (27) collapse
1447 1447
1448 1448
1449 1449 File + limit with revs != cset revs:
1450 1450 $ cd repo
1451 1451 $ touch b
1452 1452 $ hg ci -Aqm0
1453 1453 $ hg log -G -l2 a
1454 1454 \xe2\x97\x8b changeset: 34:fea3ac5810e0 (esc)
1455 1455 \xe2\x94\x82 parent: 32:d06dffa21a31 (esc)
1456 1456 \xe2\x95\xa7 user: test (esc)
1457 1457 date: Thu Jan 01 00:00:34 1970 +0000
1458 1458 summary: (34) head
1459 1459
1460 1460 \xe2\x97\x8b changeset: 33:68608f5145f9 (esc)
1461 1461 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
1462 1462 \xe2\x95\xa7 user: test (esc)
1463 1463 date: Thu Jan 01 00:00:33 1970 +0000
1464 1464 summary: (33) head
1465 1465
1466 1466
1467 1467 File + limit + -ra:b, (b - a) < limit:
1468 1468 $ hg log -G -l3000 -r32:tip a
1469 1469 \xe2\x97\x8b changeset: 34:fea3ac5810e0 (esc)
1470 1470 \xe2\x94\x82 parent: 32:d06dffa21a31 (esc)
1471 1471 \xe2\x94\x82 user: test (esc)
1472 1472 \xe2\x94\x82 date: Thu Jan 01 00:00:34 1970 +0000 (esc)
1473 1473 \xe2\x94\x82 summary: (34) head (esc)
1474 1474 \xe2\x94\x82 (esc)
1475 1475 \xe2\x94\x82 \xe2\x97\x8b changeset: 33:68608f5145f9 (esc)
1476 1476 \xe2\x94\x82 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
1477 1477 \xe2\x94\x82 \xe2\x95\xa7 user: test (esc)
1478 1478 \xe2\x94\x82 date: Thu Jan 01 00:00:33 1970 +0000 (esc)
1479 1479 \xe2\x94\x82 summary: (33) head (esc)
1480 1480 \xe2\x94\x82 (esc)
1481 1481 \xe2\x97\x8b changeset: 32:d06dffa21a31 (esc)
1482 1482 \xe2\x94\x82\xe2\x95\xb2 parent: 27:886ed638191b (esc)
1483 1483 \xe2\x95\xa7 \xe2\x95\xa7 parent: 31:621d83e11f67 (esc)
1484 1484 user: test
1485 1485 date: Thu Jan 01 00:00:32 1970 +0000
1486 1486 summary: (32) expand
1487 1487
1488 1488
1489 1489 Point out a common and an uncommon unshown parent
1490 1490
1491 1491 $ hg log -G -r 'rev(8) or rev(9)'
1492 1492 \xe2\x97\x8b changeset: 9:7010c0af0a35 (esc)
1493 1493 \xe2\x94\x82\xe2\x95\xb2 parent: 7:b632bb1b1224 (esc)
1494 1494 \xe2\x94\x82 \xe2\x95\xa7 parent: 8:7a0b11f71937 (esc)
1495 1495 \xe2\x94\x82 user: test (esc)
1496 1496 \xe2\x94\x82 date: Thu Jan 01 00:00:09 1970 +0000 (esc)
1497 1497 \xe2\x94\x82 summary: (9) expand (esc)
1498 1498 \xe2\x94\x82 (esc)
1499 1499 \xe2\x97\x8b changeset: 8:7a0b11f71937 (esc)
1500 1500 \xe2\x94\x82\xe2\x95\xb2 parent: 0:e6eb3150255d (esc)
1501 1501 \xe2\x95\xa7 \xe2\x95\xa7 parent: 7:b632bb1b1224 (esc)
1502 1502 user: test
1503 1503 date: Thu Jan 01 00:00:08 1970 +0000
1504 1504 summary: (8) merge two known; one immediate left, one far right
1505 1505
1506 1506
1507 1507 File + limit + -ra:b, b < tip:
1508 1508
1509 1509 $ hg log -G -l1 -r32:34 a
1510 1510 \xe2\x97\x8b changeset: 34:fea3ac5810e0 (esc)
1511 1511 \xe2\x94\x82 parent: 32:d06dffa21a31 (esc)
1512 1512 \xe2\x95\xa7 user: test (esc)
1513 1513 date: Thu Jan 01 00:00:34 1970 +0000
1514 1514 summary: (34) head
1515 1515
1516 1516
1517 1517 file(File) + limit + -ra:b, b < tip:
1518 1518
1519 1519 $ hg log -G -l1 -r32:34 -r 'file("a")'
1520 1520 \xe2\x97\x8b changeset: 34:fea3ac5810e0 (esc)
1521 1521 \xe2\x94\x82 parent: 32:d06dffa21a31 (esc)
1522 1522 \xe2\x95\xa7 user: test (esc)
1523 1523 date: Thu Jan 01 00:00:34 1970 +0000
1524 1524 summary: (34) head
1525 1525
1526 1526
1527 1527 limit(file(File) and a::b), b < tip:
1528 1528
1529 1529 $ hg log -G -r 'limit(file("a") and 32::34, 1)'
1530 1530 \xe2\x97\x8b changeset: 32:d06dffa21a31 (esc)
1531 1531 \xe2\x94\x82\xe2\x95\xb2 parent: 27:886ed638191b (esc)
1532 1532 \xe2\x95\xa7 \xe2\x95\xa7 parent: 31:621d83e11f67 (esc)
1533 1533 user: test
1534 1534 date: Thu Jan 01 00:00:32 1970 +0000
1535 1535 summary: (32) expand
1536 1536
1537 1537
1538 1538 File + limit + -ra:b, b < tip:
1539 1539
1540 1540 $ hg log -G -r 'limit(file("a") and 34::32, 1)'
1541 1541
1542 1542 File + limit + -ra:b, b < tip, (b - a) < limit:
1543 1543
1544 1544 $ hg log -G -l10 -r33:34 a
1545 1545 \xe2\x97\x8b changeset: 34:fea3ac5810e0 (esc)
1546 1546 \xe2\x94\x82 parent: 32:d06dffa21a31 (esc)
1547 1547 \xe2\x95\xa7 user: test (esc)
1548 1548 date: Thu Jan 01 00:00:34 1970 +0000
1549 1549 summary: (34) head
1550 1550
1551 1551 \xe2\x97\x8b changeset: 33:68608f5145f9 (esc)
1552 1552 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
1553 1553 \xe2\x95\xa7 user: test (esc)
1554 1554 date: Thu Jan 01 00:00:33 1970 +0000
1555 1555 summary: (33) head
1556 1556
1557 1557
1558 1558 Do not crash or produce strange graphs if history is buggy
1559 1559
1560 1560 $ hg branch branch
1561 1561 marked working directory as branch branch
1562 1562 (branches are permanent and global, did you want a bookmark?)
1563 1563 $ commit 36 "buggy merge: identical parents" 35 35
1564 1564 $ hg log -G -l5
1565 1565 \xe2\x97\x8d changeset: 36:08a19a744424 (esc)
1566 1566 \xe2\x94\x82 branch: branch (esc)
1567 1567 \xe2\x94\x82 tag: tip (esc)
1568 1568 \xe2\x94\x82 parent: 35:9159c3644c5e (esc)
1569 1569 \xe2\x94\x82 parent: 35:9159c3644c5e (esc)
1570 1570 \xe2\x94\x82 user: test (esc)
1571 1571 \xe2\x94\x82 date: Thu Jan 01 00:00:36 1970 +0000 (esc)
1572 1572 \xe2\x94\x82 summary: (36) buggy merge: identical parents (esc)
1573 1573 \xe2\x94\x82 (esc)
1574 1574 \xe2\x97\x8b changeset: 35:9159c3644c5e (esc)
1575 1575 \xe2\x94\x82 user: test (esc)
1576 1576 \xe2\x94\x82 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
1577 1577 \xe2\x94\x82 summary: 0 (esc)
1578 1578 \xe2\x94\x82 (esc)
1579 1579 \xe2\x97\x8b changeset: 34:fea3ac5810e0 (esc)
1580 1580 \xe2\x94\x82 parent: 32:d06dffa21a31 (esc)
1581 1581 \xe2\x94\x82 user: test (esc)
1582 1582 \xe2\x94\x82 date: Thu Jan 01 00:00:34 1970 +0000 (esc)
1583 1583 \xe2\x94\x82 summary: (34) head (esc)
1584 1584 \xe2\x94\x82 (esc)
1585 1585 \xe2\x94\x82 \xe2\x97\x8b changeset: 33:68608f5145f9 (esc)
1586 1586 \xe2\x94\x82 \xe2\x94\x82 parent: 18:1aa84d96232a (esc)
1587 1587 \xe2\x94\x82 \xe2\x95\xa7 user: test (esc)
1588 1588 \xe2\x94\x82 date: Thu Jan 01 00:00:33 1970 +0000 (esc)
1589 1589 \xe2\x94\x82 summary: (33) head (esc)
1590 1590 \xe2\x94\x82 (esc)
1591 1591 \xe2\x97\x8b changeset: 32:d06dffa21a31 (esc)
1592 1592 \xe2\x94\x82\xe2\x95\xb2 parent: 27:886ed638191b (esc)
1593 1593 \xe2\x95\xa7 \xe2\x95\xa7 parent: 31:621d83e11f67 (esc)
1594 1594 user: test
1595 1595 date: Thu Jan 01 00:00:32 1970 +0000
1596 1596 summary: (32) expand
1597 1597
1598 1598
1599 1599 Test log -G options
1600 1600
1601 1601 $ testlog() {
1602 1602 > hg log -G --print-revset "$@"
1603 1603 > hg log --template 'nodetag {rev}\n' "$@" | grep nodetag \
1604 1604 > | sed 's/.*nodetag/nodetag/' > log.nodes
1605 1605 > hg log -G --template 'nodetag {rev}\n' "$@" | grep nodetag \
1606 1606 > | sed 's/.*nodetag/nodetag/' > glog.nodes
1607 1607 > (cmp log.nodes glog.nodes || diff -u log.nodes glog.nodes) \
1608 1608 > | grep '^[-+@ ]' || :
1609 1609 > }
1610 1610
1611 1611 glog always reorders nodes which explains the difference with log
1612 1612
1613 1613 $ testlog -r 27 -r 25 -r 21 -r 34 -r 32 -r 31
1614 1614 ['27', '25', '21', '34', '32', '31']
1615 1615 []
1616 1616 <baseset- [21, 25, 27, 31, 32, 34]>
1617 1617 --- log.nodes * (glob)
1618 1618 +++ glog.nodes * (glob)
1619 1619 @@ -1,6 +1,6 @@
1620 1620 -nodetag 27
1621 1621 -nodetag 25
1622 1622 -nodetag 21
1623 1623 nodetag 34
1624 1624 nodetag 32
1625 1625 nodetag 31
1626 1626 +nodetag 27
1627 1627 +nodetag 25
1628 1628 +nodetag 21
1629 1629 $ testlog -u test -u not-a-user
1630 1630 []
1631 1631 (or
1632 1632 (list
1633 1633 (func
1634 1634 (symbol 'user')
1635 1635 (string 'test'))
1636 1636 (func
1637 1637 (symbol 'user')
1638 1638 (string 'not-a-user'))))
1639 1639 <filteredset
1640 1640 <spanset- 0:37>,
1641 1641 <addset
1642 1642 <filteredset
1643 1643 <fullreposet+ 0:37>,
1644 1644 <user 'test'>>,
1645 1645 <filteredset
1646 1646 <fullreposet+ 0:37>,
1647 1647 <user 'not-a-user'>>>>
1648 1648 $ testlog -b not-a-branch
1649 1649 abort: unknown revision 'not-a-branch'!
1650 1650 abort: unknown revision 'not-a-branch'!
1651 1651 abort: unknown revision 'not-a-branch'!
1652 1652 $ testlog -b 35 -b 36 --only-branch branch
1653 1653 []
1654 1654 (or
1655 1655 (list
1656 1656 (func
1657 1657 (symbol 'branch')
1658 1658 (string 'default'))
1659 1659 (or
1660 1660 (list
1661 1661 (func
1662 1662 (symbol 'branch')
1663 1663 (string 'branch'))
1664 1664 (func
1665 1665 (symbol 'branch')
1666 1666 (string 'branch'))))))
1667 1667 <filteredset
1668 1668 <spanset- 0:37>,
1669 1669 <addset
1670 1670 <filteredset
1671 1671 <fullreposet+ 0:37>,
1672 1672 <branch 'default'>>,
1673 1673 <addset
1674 1674 <filteredset
1675 1675 <fullreposet+ 0:37>,
1676 1676 <branch 'branch'>>,
1677 1677 <filteredset
1678 1678 <fullreposet+ 0:37>,
1679 1679 <branch 'branch'>>>>>
1680 1680 $ testlog -k expand -k merge
1681 1681 []
1682 1682 (or
1683 1683 (list
1684 1684 (func
1685 1685 (symbol 'keyword')
1686 1686 (string 'expand'))
1687 1687 (func
1688 1688 (symbol 'keyword')
1689 1689 (string 'merge'))))
1690 1690 <filteredset
1691 1691 <spanset- 0:37>,
1692 1692 <addset
1693 1693 <filteredset
1694 1694 <fullreposet+ 0:37>,
1695 1695 <keyword 'expand'>>,
1696 1696 <filteredset
1697 1697 <fullreposet+ 0:37>,
1698 1698 <keyword 'merge'>>>>
1699 1699 $ testlog --only-merges
1700 1700 []
1701 1701 (func
1702 1702 (symbol 'merge')
1703 1703 None)
1704 1704 <filteredset
1705 1705 <spanset- 0:37>,
1706 1706 <merge>>
1707 1707 $ testlog --no-merges
1708 1708 []
1709 1709 (not
1710 1710 (func
1711 1711 (symbol 'merge')
1712 1712 None))
1713 1713 <filteredset
1714 1714 <spanset- 0:37>,
1715 1715 <not
1716 1716 <filteredset
1717 1717 <spanset- 0:37>,
1718 1718 <merge>>>>
1719 1719 $ testlog --date '2 0 to 4 0'
1720 1720 []
1721 1721 (func
1722 1722 (symbol 'date')
1723 1723 (string '2 0 to 4 0'))
1724 1724 <filteredset
1725 1725 <spanset- 0:37>,
1726 1726 <date '2 0 to 4 0'>>
1727 1727 $ hg log -G -d 'brace ) in a date'
1728 1728 hg: parse error: invalid date: 'brace ) in a date'
1729 1729 [255]
1730 1730 $ testlog --prune 31 --prune 32
1731 1731 []
1732 1732 (not
1733 1733 (or
1734 1734 (list
1735 1735 (func
1736 1736 (symbol 'ancestors')
1737 1737 (string '31'))
1738 1738 (func
1739 1739 (symbol 'ancestors')
1740 1740 (string '32')))))
1741 1741 <filteredset
1742 1742 <spanset- 0:37>,
1743 1743 <not
1744 1744 <addset
1745 1745 <filteredset
1746 1746 <spanset- 0:37>,
1747 1747 <generatorsetdesc+>>,
1748 1748 <filteredset
1749 1749 <spanset- 0:37>,
1750 1750 <generatorsetdesc+>>>>>
1751 1751
1752 1752 Dedicated repo for --follow and paths filtering. The g is crafted to
1753 1753 have 2 filelog topological heads in a linear changeset graph.
1754 1754
1755 1755 $ cd ..
1756 1756 $ hg init follow
1757 1757 $ cd follow
1758 1758 $ testlog --follow
1759 1759 []
1760 1760 []
1761 1761 <baseset []>
1762 1762 $ testlog -rnull
1763 1763 ['null']
1764 1764 []
1765 1765 <baseset [-1]>
1766 1766 $ echo a > a
1767 1767 $ echo aa > aa
1768 1768 $ echo f > f
1769 1769 $ hg ci -Am "add a" a aa f
1770 1770 $ hg cp a b
1771 1771 $ hg cp f g
1772 1772 $ hg ci -m "copy a b"
1773 1773 $ mkdir dir
1774 1774 $ hg mv b dir
1775 1775 $ echo g >> g
1776 1776 $ echo f >> f
1777 1777 $ hg ci -m "mv b dir/b"
1778 1778 $ hg mv a b
1779 1779 $ hg cp -f f g
1780 1780 $ echo a > d
1781 1781 $ hg add d
1782 1782 $ hg ci -m "mv a b; add d"
1783 1783 $ hg mv dir/b e
1784 1784 $ hg ci -m "mv dir/b e"
1785 1785 $ hg log -G --template '({rev}) {desc|firstline}\n'
1786 1786 \xe2\x97\x8d (4) mv dir/b e (esc)
1787 1787 \xe2\x94\x82 (esc)
1788 1788 \xe2\x97\x8b (3) mv a b; add d (esc)
1789 1789 \xe2\x94\x82 (esc)
1790 1790 \xe2\x97\x8b (2) mv b dir/b (esc)
1791 1791 \xe2\x94\x82 (esc)
1792 1792 \xe2\x97\x8b (1) copy a b (esc)
1793 1793 \xe2\x94\x82 (esc)
1794 1794 \xe2\x97\x8b (0) add a (esc)
1795 1795
1796 1796
1797 1797 $ testlog a
1798 1798 []
1799 1799 (func
1800 1800 (symbol 'filelog')
1801 1801 (string 'a'))
1802 1802 <filteredset
1803 1803 <spanset- 0:5>, set([0])>
1804 1804 $ testlog a b
1805 1805 []
1806 1806 (or
1807 1807 (list
1808 1808 (func
1809 1809 (symbol 'filelog')
1810 1810 (string 'a'))
1811 1811 (func
1812 1812 (symbol 'filelog')
1813 1813 (string 'b'))))
1814 1814 <filteredset
1815 1815 <spanset- 0:5>,
1816 1816 <addset
1817 1817 <baseset+ [0]>,
1818 1818 <baseset+ [1]>>>
1819 1819
1820 1820 Test falling back to slow path for non-existing files
1821 1821
1822 1822 $ testlog a c
1823 1823 []
1824 1824 (func
1825 1825 (symbol '_matchfiles')
1826 1826 (list
1827 1827 (string 'r:')
1828 1828 (string 'd:relpath')
1829 1829 (string 'p:a')
1830 1830 (string 'p:c')))
1831 1831 <filteredset
1832 1832 <spanset- 0:5>,
1833 1833 <matchfiles patterns=['a', 'c'], include=[] exclude=[], default='relpath', rev=2147483647>>
1834 1834
1835 1835 Test multiple --include/--exclude/paths
1836 1836
1837 1837 $ testlog --include a --include e --exclude b --exclude e a e
1838 1838 []
1839 1839 (func
1840 1840 (symbol '_matchfiles')
1841 1841 (list
1842 1842 (string 'r:')
1843 1843 (string 'd:relpath')
1844 1844 (string 'p:a')
1845 1845 (string 'p:e')
1846 1846 (string 'i:a')
1847 1847 (string 'i:e')
1848 1848 (string 'x:b')
1849 1849 (string 'x:e')))
1850 1850 <filteredset
1851 1851 <spanset- 0:5>,
1852 1852 <matchfiles patterns=['a', 'e'], include=['a', 'e'] exclude=['b', 'e'], default='relpath', rev=2147483647>>
1853 1853
1854 1854 Test glob expansion of pats
1855 1855
1856 1856 $ expandglobs=`$PYTHON -c "import mercurial.util; \
1857 1857 > print(mercurial.util.expandglobs and 'true' or 'false')"`
1858 1858 $ if [ $expandglobs = "true" ]; then
1859 1859 > testlog 'a*';
1860 1860 > else
1861 1861 > testlog a*;
1862 1862 > fi;
1863 1863 []
1864 1864 (func
1865 1865 (symbol 'filelog')
1866 1866 (string 'aa'))
1867 1867 <filteredset
1868 1868 <spanset- 0:5>, set([0])>
1869 1869
1870 1870 Test --follow on a non-existent directory
1871 1871
1872 1872 $ testlog -f dir
1873 1873 abort: cannot follow file not in parent revision: "dir"
1874 1874 abort: cannot follow file not in parent revision: "dir"
1875 1875 abort: cannot follow file not in parent revision: "dir"
1876 1876
1877 1877 Test --follow on a directory
1878 1878
1879 1879 $ hg up -q '.^'
1880 1880 $ testlog -f dir
1881 1881 []
1882 1882 (func
1883 1883 (symbol '_matchfiles')
1884 1884 (list
1885 1885 (string 'r:')
1886 1886 (string 'd:relpath')
1887 1887 (string 'p:dir')))
1888 1888 <filteredset
1889 1889 <generatorsetdesc->,
1890 1890 <matchfiles patterns=['dir'], include=[] exclude=[], default='relpath', rev=2147483647>>
1891 1891 $ hg up -q tip
1892 1892
1893 1893 Test --follow on file not in parent revision
1894 1894
1895 1895 $ testlog -f a
1896 1896 abort: cannot follow file not in parent revision: "a"
1897 1897 abort: cannot follow file not in parent revision: "a"
1898 1898 abort: cannot follow file not in parent revision: "a"
1899 1899
1900 1900 Test --follow and patterns
1901 1901
1902 1902 $ testlog -f 'glob:*'
1903 1903 []
1904 1904 (func
1905 1905 (symbol '_matchfiles')
1906 1906 (list
1907 1907 (string 'r:')
1908 1908 (string 'd:relpath')
1909 1909 (string 'p:glob:*')))
1910 1910 <filteredset
1911 1911 <generatorsetdesc->,
1912 1912 <matchfiles patterns=['glob:*'], include=[] exclude=[], default='relpath', rev=2147483647>>
1913 1913
1914 1914 Test --follow on a single rename
1915 1915
1916 1916 $ hg up -q 2
1917 1917 $ testlog -f a
1918 1918 []
1919 1919 []
1920 1920 <generatorsetdesc->
1921 1921
1922 1922 Test --follow and multiple renames
1923 1923
1924 1924 $ hg up -q tip
1925 1925 $ testlog -f e
1926 1926 []
1927 1927 []
1928 1928 <generatorsetdesc->
1929 1929
1930 1930 Test --follow and multiple filelog heads
1931 1931
1932 1932 $ hg up -q 2
1933 1933 $ testlog -f g
1934 1934 []
1935 1935 []
1936 1936 <generatorsetdesc->
1937 1937 $ cat log.nodes
1938 1938 nodetag 2
1939 1939 nodetag 1
1940 1940 nodetag 0
1941 1941 $ hg up -q tip
1942 1942 $ testlog -f g
1943 1943 []
1944 1944 []
1945 1945 <generatorsetdesc->
1946 1946 $ cat log.nodes
1947 1947 nodetag 3
1948 1948 nodetag 2
1949 1949 nodetag 0
1950 1950
1951 1951 Test --follow and multiple files
1952 1952
1953 1953 $ testlog -f g e
1954 1954 []
1955 1955 []
1956 1956 <generatorsetdesc->
1957 1957 $ cat log.nodes
1958 1958 nodetag 4
1959 1959 nodetag 3
1960 1960 nodetag 2
1961 1961 nodetag 1
1962 1962 nodetag 0
1963 1963
1964 1964 Test --follow null parent
1965 1965
1966 1966 $ hg up -q null
1967 1967 $ testlog -f
1968 1968 []
1969 1969 []
1970 1970 <baseset []>
1971 1971
1972 1972 Test --follow-first
1973 1973
1974 1974 $ hg up -q 3
1975 1975 $ echo ee > e
1976 1976 $ hg ci -Am "add another e" e
1977 1977 created new head
1978 1978 $ hg merge --tool internal:other 4
1979 1979 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
1980 1980 (branch merge, don't forget to commit)
1981 1981 $ echo merge > e
1982 1982 $ hg ci -m "merge 5 and 4"
1983 1983 $ testlog --follow-first
1984 1984 []
1985 1985 []
1986 1986 <generatorsetdesc->
1987 1987
1988 1988 Cannot compare with log --follow-first FILE as it never worked
1989 1989
1990 1990 $ hg log -G --print-revset --follow-first e
1991 1991 []
1992 1992 []
1993 1993 <generatorsetdesc->
1994 1994 $ hg log -G --follow-first e --template '{rev} {desc|firstline}\n'
1995 1995 \xe2\x97\x8d 6 merge 5 and 4 (esc)
1996 1996 \xe2\x94\x82\xe2\x95\xb2 (esc)
1997 1997 \xe2\x94\x82 \xe2\x95\xa7 (esc)
1998 1998 \xe2\x97\x8b 5 add another e (esc)
1999 1999 \xe2\x94\x82 (esc)
2000 2000 \xe2\x95\xa7 (esc)
2001 2001
2002 2002 Test --copies
2003 2003
2004 2004 $ hg log -G --copies --template "{rev} {desc|firstline} \
2005 2005 > copies: {file_copies_switch}\n"
2006 2006 \xe2\x97\x8d 6 merge 5 and 4 copies: (esc)
2007 2007 \xe2\x94\x82\xe2\x95\xb2 (esc)
2008 2008 \xe2\x94\x82 \xe2\x97\x8b 5 add another e copies: (esc)
2009 2009 \xe2\x94\x82 \xe2\x94\x82 (esc)
2010 2010 \xe2\x97\x8b \xe2\x94\x82 4 mv dir/b e copies: e (dir/b) (esc)
2011 2011 \xe2\x94\x82\xe2\x95\xb1 (esc)
2012 2012 \xe2\x97\x8b 3 mv a b; add d copies: b (a)g (f) (esc)
2013 2013 \xe2\x94\x82 (esc)
2014 2014 \xe2\x97\x8b 2 mv b dir/b copies: dir/b (b) (esc)
2015 2015 \xe2\x94\x82 (esc)
2016 2016 \xe2\x97\x8b 1 copy a b copies: b (a)g (f) (esc)
2017 2017 \xe2\x94\x82 (esc)
2018 2018 \xe2\x97\x8b 0 add a copies: (esc)
2019 2019
2020 2020 Test "set:..." and parent revision
2021 2021
2022 2022 $ hg up -q 4
2023 2023 $ testlog "set:copied()"
2024 2024 []
2025 2025 (func
2026 (symbol '_matchfiles')
2027 (list
2028 (string 'r:')
2029 (string 'd:relpath')
2030 (string 'p:set:copied()')))
2026 (symbol 'filelog')
2027 (string 'set:copied()'))
2031 2028 <filteredset
2032 <spanset- 0:7>,
2033 <matchfiles patterns=['set:copied()'], include=[] exclude=[], default='relpath', rev=2147483647>>
2029 <spanset- 0:7>, set([])>
2034 2030 $ testlog --include "set:copied()"
2035 2031 []
2036 (func
2037 (symbol '_matchfiles')
2038 (list
2039 (string 'r:')
2040 (string 'd:relpath')
2041 (string 'i:set:copied()')))
2042 <filteredset
2043 <spanset- 0:7>,
2044 <matchfiles patterns=[], include=['set:copied()'] exclude=[], default='relpath', rev=2147483647>>
2032 []
2033 <spanset- 0:7>
2045 2034 $ testlog -r "sort(file('set:copied()'), -rev)"
2046 2035 ["sort(file('set:copied()'), -rev)"]
2047 2036 []
2048 2037 <filteredset
2049 2038 <fullreposet- 0:7>,
2050 2039 <matchfiles patterns=['set:copied()'], include=[] exclude=[], default='glob', rev=None>>
2051 2040
2052 2041 Test --removed
2053 2042
2054 2043 $ testlog --removed
2055 2044 []
2056 2045 []
2057 2046 <spanset- 0:7>
2058 2047 $ testlog --removed a
2059 2048 []
2060 2049 (func
2061 2050 (symbol '_matchfiles')
2062 2051 (list
2063 2052 (string 'r:')
2064 2053 (string 'd:relpath')
2065 2054 (string 'p:a')))
2066 2055 <filteredset
2067 2056 <spanset- 0:7>,
2068 2057 <matchfiles patterns=['a'], include=[] exclude=[], default='relpath', rev=2147483647>>
2069 2058 $ testlog --removed --follow a
2070 2059 []
2071 2060 (func
2072 2061 (symbol '_matchfiles')
2073 2062 (list
2074 2063 (string 'r:')
2075 2064 (string 'd:relpath')
2076 2065 (string 'p:a')))
2077 2066 <filteredset
2078 2067 <generatorsetdesc->,
2079 2068 <matchfiles patterns=['a'], include=[] exclude=[], default='relpath', rev=2147483647>>
2080 2069
2081 2070 Test --patch and --stat with --follow and --follow-first
2082 2071
2083 2072 $ hg up -q 3
2084 2073 $ hg log -G --git --patch b
2085 2074 \xe2\x97\x8b changeset: 1:216d4c92cf98 (esc)
2086 2075 \xe2\x94\x82 user: test (esc)
2087 2076 \xe2\x95\xa7 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
2088 2077 summary: copy a b
2089 2078
2090 2079 diff --git a/a b/b
2091 2080 copy from a
2092 2081 copy to b
2093 2082
2094 2083
2095 2084 $ hg log -G --git --stat b
2096 2085 \xe2\x97\x8b changeset: 1:216d4c92cf98 (esc)
2097 2086 \xe2\x94\x82 user: test (esc)
2098 2087 \xe2\x95\xa7 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
2099 2088 summary: copy a b
2100 2089
2101 2090 b | 0
2102 2091 1 files changed, 0 insertions(+), 0 deletions(-)
2103 2092
2104 2093
2105 2094 $ hg log -G --git --patch --follow b
2106 2095 \xe2\x97\x8b changeset: 1:216d4c92cf98 (esc)
2107 2096 \xe2\x94\x82 user: test (esc)
2108 2097 \xe2\x94\x82 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
2109 2098 \xe2\x94\x82 summary: copy a b (esc)
2110 2099 \xe2\x94\x82 (esc)
2111 2100 \xe2\x94\x82 diff --git a/a b/b (esc)
2112 2101 \xe2\x94\x82 copy from a (esc)
2113 2102 \xe2\x94\x82 copy to b (esc)
2114 2103 \xe2\x94\x82 (esc)
2115 2104 \xe2\x97\x8b changeset: 0:f8035bb17114 (esc)
2116 2105 user: test
2117 2106 date: Thu Jan 01 00:00:00 1970 +0000
2118 2107 summary: add a
2119 2108
2120 2109 diff --git a/a b/a
2121 2110 new file mode 100644
2122 2111 --- /dev/null
2123 2112 +++ b/a
2124 2113 @@ -0,0 +1,1 @@
2125 2114 +a
2126 2115
2127 2116
2128 2117 $ hg log -G --git --stat --follow b
2129 2118 \xe2\x97\x8b changeset: 1:216d4c92cf98 (esc)
2130 2119 \xe2\x94\x82 user: test (esc)
2131 2120 \xe2\x94\x82 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
2132 2121 \xe2\x94\x82 summary: copy a b (esc)
2133 2122 \xe2\x94\x82 (esc)
2134 2123 \xe2\x94\x82 b | 0 (esc)
2135 2124 \xe2\x94\x82 1 files changed, 0 insertions(+), 0 deletions(-) (esc)
2136 2125 \xe2\x94\x82 (esc)
2137 2126 \xe2\x97\x8b changeset: 0:f8035bb17114 (esc)
2138 2127 user: test
2139 2128 date: Thu Jan 01 00:00:00 1970 +0000
2140 2129 summary: add a
2141 2130
2142 2131 a | 1 +
2143 2132 1 files changed, 1 insertions(+), 0 deletions(-)
2144 2133
2145 2134
2146 2135 $ hg up -q 6
2147 2136 $ hg log -G --git --patch --follow-first e
2148 2137 \xe2\x97\x8d changeset: 6:fc281d8ff18d (esc)
2149 2138 \xe2\x94\x82\xe2\x95\xb2 tag: tip (esc)
2150 2139 \xe2\x94\x82 \xe2\x95\xa7 parent: 5:99b31f1c2782 (esc)
2151 2140 \xe2\x94\x82 parent: 4:17d952250a9d (esc)
2152 2141 \xe2\x94\x82 user: test (esc)
2153 2142 \xe2\x94\x82 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
2154 2143 \xe2\x94\x82 summary: merge 5 and 4 (esc)
2155 2144 \xe2\x94\x82 (esc)
2156 2145 \xe2\x94\x82 diff --git a/e b/e (esc)
2157 2146 \xe2\x94\x82 --- a/e (esc)
2158 2147 \xe2\x94\x82 +++ b/e (esc)
2159 2148 \xe2\x94\x82 @@ -1,1 +1,1 @@ (esc)
2160 2149 \xe2\x94\x82 -ee (esc)
2161 2150 \xe2\x94\x82 +merge (esc)
2162 2151 \xe2\x94\x82 (esc)
2163 2152 \xe2\x97\x8b changeset: 5:99b31f1c2782 (esc)
2164 2153 \xe2\x94\x82 parent: 3:5918b8d165d1 (esc)
2165 2154 \xe2\x95\xa7 user: test (esc)
2166 2155 date: Thu Jan 01 00:00:00 1970 +0000
2167 2156 summary: add another e
2168 2157
2169 2158 diff --git a/e b/e
2170 2159 new file mode 100644
2171 2160 --- /dev/null
2172 2161 +++ b/e
2173 2162 @@ -0,0 +1,1 @@
2174 2163 +ee
2175 2164
2176 2165
2177 2166 Test old-style --rev
2178 2167
2179 2168 $ hg tag 'foo-bar'
2180 2169 $ testlog -r 'foo-bar'
2181 2170 ['foo-bar']
2182 2171 []
2183 2172 <baseset [6]>
2184 2173
2185 2174 Test --follow and forward --rev
2186 2175
2187 2176 $ hg up -q 6
2188 2177 $ echo g > g
2189 2178 $ hg ci -Am 'add g' g
2190 2179 created new head
2191 2180 $ hg up -q 2
2192 2181 $ hg log -G --template "{rev} {desc|firstline}\n"
2193 2182 \xe2\x97\x8b 8 add g (esc)
2194 2183 \xe2\x94\x82 (esc)
2195 2184 \xe2\x94\x82 \xe2\x97\x8b 7 Added tag foo-bar for changeset fc281d8ff18d (esc)
2196 2185 \xe2\x94\x82\xe2\x95\xb1 (esc)
2197 2186 \xe2\x97\x8b 6 merge 5 and 4 (esc)
2198 2187 \xe2\x94\x82\xe2\x95\xb2 (esc)
2199 2188 \xe2\x94\x82 \xe2\x97\x8b 5 add another e (esc)
2200 2189 \xe2\x94\x82 \xe2\x94\x82 (esc)
2201 2190 \xe2\x97\x8b \xe2\x94\x82 4 mv dir/b e (esc)
2202 2191 \xe2\x94\x82\xe2\x95\xb1 (esc)
2203 2192 \xe2\x97\x8b 3 mv a b; add d (esc)
2204 2193 \xe2\x94\x82 (esc)
2205 2194 \xe2\x97\x8d 2 mv b dir/b (esc)
2206 2195 \xe2\x94\x82 (esc)
2207 2196 \xe2\x97\x8b 1 copy a b (esc)
2208 2197 \xe2\x94\x82 (esc)
2209 2198 \xe2\x97\x8b 0 add a (esc)
2210 2199
2211 2200 $ hg archive -r 7 archive
2212 2201 $ grep changessincelatesttag archive/.hg_archival.txt
2213 2202 changessincelatesttag: 1
2214 2203 $ rm -r archive
2215 2204
2216 2205 changessincelatesttag with no prior tag
2217 2206 $ hg archive -r 4 archive
2218 2207 $ grep changessincelatesttag archive/.hg_archival.txt
2219 2208 changessincelatesttag: 5
2220 2209
2221 2210 $ hg export 'all()'
2222 2211 # HG changeset patch
2223 2212 # User test
2224 2213 # Date 0 0
2225 2214 # Thu Jan 01 00:00:00 1970 +0000
2226 2215 # Node ID f8035bb17114da16215af3436ec5222428ace8ee
2227 2216 # Parent 0000000000000000000000000000000000000000
2228 2217 add a
2229 2218
2230 2219 diff -r 000000000000 -r f8035bb17114 a
2231 2220 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2232 2221 +++ b/a Thu Jan 01 00:00:00 1970 +0000
2233 2222 @@ -0,0 +1,1 @@
2234 2223 +a
2235 2224 diff -r 000000000000 -r f8035bb17114 aa
2236 2225 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2237 2226 +++ b/aa Thu Jan 01 00:00:00 1970 +0000
2238 2227 @@ -0,0 +1,1 @@
2239 2228 +aa
2240 2229 diff -r 000000000000 -r f8035bb17114 f
2241 2230 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2242 2231 +++ b/f Thu Jan 01 00:00:00 1970 +0000
2243 2232 @@ -0,0 +1,1 @@
2244 2233 +f
2245 2234 # HG changeset patch
2246 2235 # User test
2247 2236 # Date 0 0
2248 2237 # Thu Jan 01 00:00:00 1970 +0000
2249 2238 # Node ID 216d4c92cf98ff2b4641d508b76b529f3d424c92
2250 2239 # Parent f8035bb17114da16215af3436ec5222428ace8ee
2251 2240 copy a b
2252 2241
2253 2242 diff -r f8035bb17114 -r 216d4c92cf98 b
2254 2243 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2255 2244 +++ b/b Thu Jan 01 00:00:00 1970 +0000
2256 2245 @@ -0,0 +1,1 @@
2257 2246 +a
2258 2247 diff -r f8035bb17114 -r 216d4c92cf98 g
2259 2248 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2260 2249 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2261 2250 @@ -0,0 +1,1 @@
2262 2251 +f
2263 2252 # HG changeset patch
2264 2253 # User test
2265 2254 # Date 0 0
2266 2255 # Thu Jan 01 00:00:00 1970 +0000
2267 2256 # Node ID bb573313a9e8349099b6ea2b2fb1fc7f424446f3
2268 2257 # Parent 216d4c92cf98ff2b4641d508b76b529f3d424c92
2269 2258 mv b dir/b
2270 2259
2271 2260 diff -r 216d4c92cf98 -r bb573313a9e8 b
2272 2261 --- a/b Thu Jan 01 00:00:00 1970 +0000
2273 2262 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2274 2263 @@ -1,1 +0,0 @@
2275 2264 -a
2276 2265 diff -r 216d4c92cf98 -r bb573313a9e8 dir/b
2277 2266 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2278 2267 +++ b/dir/b Thu Jan 01 00:00:00 1970 +0000
2279 2268 @@ -0,0 +1,1 @@
2280 2269 +a
2281 2270 diff -r 216d4c92cf98 -r bb573313a9e8 f
2282 2271 --- a/f Thu Jan 01 00:00:00 1970 +0000
2283 2272 +++ b/f Thu Jan 01 00:00:00 1970 +0000
2284 2273 @@ -1,1 +1,2 @@
2285 2274 f
2286 2275 +f
2287 2276 diff -r 216d4c92cf98 -r bb573313a9e8 g
2288 2277 --- a/g Thu Jan 01 00:00:00 1970 +0000
2289 2278 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2290 2279 @@ -1,1 +1,2 @@
2291 2280 f
2292 2281 +g
2293 2282 # HG changeset patch
2294 2283 # User test
2295 2284 # Date 0 0
2296 2285 # Thu Jan 01 00:00:00 1970 +0000
2297 2286 # Node ID 5918b8d165d1364e78a66d02e66caa0133c5d1ed
2298 2287 # Parent bb573313a9e8349099b6ea2b2fb1fc7f424446f3
2299 2288 mv a b; add d
2300 2289
2301 2290 diff -r bb573313a9e8 -r 5918b8d165d1 a
2302 2291 --- a/a Thu Jan 01 00:00:00 1970 +0000
2303 2292 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2304 2293 @@ -1,1 +0,0 @@
2305 2294 -a
2306 2295 diff -r bb573313a9e8 -r 5918b8d165d1 b
2307 2296 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2308 2297 +++ b/b Thu Jan 01 00:00:00 1970 +0000
2309 2298 @@ -0,0 +1,1 @@
2310 2299 +a
2311 2300 diff -r bb573313a9e8 -r 5918b8d165d1 d
2312 2301 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2313 2302 +++ b/d Thu Jan 01 00:00:00 1970 +0000
2314 2303 @@ -0,0 +1,1 @@
2315 2304 +a
2316 2305 diff -r bb573313a9e8 -r 5918b8d165d1 g
2317 2306 --- a/g Thu Jan 01 00:00:00 1970 +0000
2318 2307 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2319 2308 @@ -1,2 +1,2 @@
2320 2309 f
2321 2310 -g
2322 2311 +f
2323 2312 # HG changeset patch
2324 2313 # User test
2325 2314 # Date 0 0
2326 2315 # Thu Jan 01 00:00:00 1970 +0000
2327 2316 # Node ID 17d952250a9d03cc3dc77b199ab60e959b9b0260
2328 2317 # Parent 5918b8d165d1364e78a66d02e66caa0133c5d1ed
2329 2318 mv dir/b e
2330 2319
2331 2320 diff -r 5918b8d165d1 -r 17d952250a9d dir/b
2332 2321 --- a/dir/b Thu Jan 01 00:00:00 1970 +0000
2333 2322 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2334 2323 @@ -1,1 +0,0 @@
2335 2324 -a
2336 2325 diff -r 5918b8d165d1 -r 17d952250a9d e
2337 2326 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2338 2327 +++ b/e Thu Jan 01 00:00:00 1970 +0000
2339 2328 @@ -0,0 +1,1 @@
2340 2329 +a
2341 2330 # HG changeset patch
2342 2331 # User test
2343 2332 # Date 0 0
2344 2333 # Thu Jan 01 00:00:00 1970 +0000
2345 2334 # Node ID 99b31f1c2782e2deb1723cef08930f70fc84b37b
2346 2335 # Parent 5918b8d165d1364e78a66d02e66caa0133c5d1ed
2347 2336 add another e
2348 2337
2349 2338 diff -r 5918b8d165d1 -r 99b31f1c2782 e
2350 2339 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2351 2340 +++ b/e Thu Jan 01 00:00:00 1970 +0000
2352 2341 @@ -0,0 +1,1 @@
2353 2342 +ee
2354 2343 # HG changeset patch
2355 2344 # User test
2356 2345 # Date 0 0
2357 2346 # Thu Jan 01 00:00:00 1970 +0000
2358 2347 # Node ID fc281d8ff18d999ad6497b3d27390bcd695dcc73
2359 2348 # Parent 99b31f1c2782e2deb1723cef08930f70fc84b37b
2360 2349 # Parent 17d952250a9d03cc3dc77b199ab60e959b9b0260
2361 2350 merge 5 and 4
2362 2351
2363 2352 diff -r 99b31f1c2782 -r fc281d8ff18d dir/b
2364 2353 --- a/dir/b Thu Jan 01 00:00:00 1970 +0000
2365 2354 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2366 2355 @@ -1,1 +0,0 @@
2367 2356 -a
2368 2357 diff -r 99b31f1c2782 -r fc281d8ff18d e
2369 2358 --- a/e Thu Jan 01 00:00:00 1970 +0000
2370 2359 +++ b/e Thu Jan 01 00:00:00 1970 +0000
2371 2360 @@ -1,1 +1,1 @@
2372 2361 -ee
2373 2362 +merge
2374 2363 # HG changeset patch
2375 2364 # User test
2376 2365 # Date 0 0
2377 2366 # Thu Jan 01 00:00:00 1970 +0000
2378 2367 # Node ID 02dbb8e276b8ab7abfd07cab50c901647e75c2dd
2379 2368 # Parent fc281d8ff18d999ad6497b3d27390bcd695dcc73
2380 2369 Added tag foo-bar for changeset fc281d8ff18d
2381 2370
2382 2371 diff -r fc281d8ff18d -r 02dbb8e276b8 .hgtags
2383 2372 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2384 2373 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2385 2374 @@ -0,0 +1,1 @@
2386 2375 +fc281d8ff18d999ad6497b3d27390bcd695dcc73 foo-bar
2387 2376 # HG changeset patch
2388 2377 # User test
2389 2378 # Date 0 0
2390 2379 # Thu Jan 01 00:00:00 1970 +0000
2391 2380 # Node ID 24c2e826ddebf80f9dcd60b856bdb8e6715c5449
2392 2381 # Parent fc281d8ff18d999ad6497b3d27390bcd695dcc73
2393 2382 add g
2394 2383
2395 2384 diff -r fc281d8ff18d -r 24c2e826ddeb g
2396 2385 --- a/g Thu Jan 01 00:00:00 1970 +0000
2397 2386 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2398 2387 @@ -1,2 +1,1 @@
2399 2388 -f
2400 2389 -f
2401 2390 +g
2402 2391 $ testlog --follow -r6 -r8 -r5 -r7 -r4
2403 2392 ['6', '8', '5', '7', '4']
2404 2393 []
2405 2394 <generatorsetdesc->
2406 2395
2407 2396 Test --follow-first and forward --rev
2408 2397
2409 2398 $ testlog --follow-first -r6 -r8 -r5 -r7 -r4
2410 2399 ['6', '8', '5', '7', '4']
2411 2400 []
2412 2401 <generatorsetdesc->
2413 2402
2414 2403 Test --follow and backward --rev
2415 2404
2416 2405 $ testlog --follow -r6 -r5 -r7 -r8 -r4
2417 2406 ['6', '5', '7', '8', '4']
2418 2407 []
2419 2408 <generatorsetdesc->
2420 2409
2421 2410 Test --follow-first and backward --rev
2422 2411
2423 2412 $ testlog --follow-first -r6 -r5 -r7 -r8 -r4
2424 2413 ['6', '5', '7', '8', '4']
2425 2414 []
2426 2415 <generatorsetdesc->
2427 2416
2428 2417 Test --follow with --rev of graphlog extension
2429 2418
2430 2419 $ hg --config extensions.graphlog= glog -qfr1
2431 2420 \xe2\x97\x8b 1:216d4c92cf98 (esc)
2432 2421 \xe2\x94\x82 (esc)
2433 2422 \xe2\x97\x8b 0:f8035bb17114 (esc)
2434 2423
2435 2424
2436 2425 Test subdir
2437 2426
2438 2427 $ hg up -q 3
2439 2428 $ cd dir
2440 2429 $ testlog .
2441 2430 []
2442 2431 (func
2443 2432 (symbol '_matchfiles')
2444 2433 (list
2445 2434 (string 'r:')
2446 2435 (string 'd:relpath')
2447 2436 (string 'p:.')))
2448 2437 <filteredset
2449 2438 <spanset- 0:9>,
2450 2439 <matchfiles patterns=['.'], include=[] exclude=[], default='relpath', rev=2147483647>>
2451 2440 $ testlog ../b
2452 2441 []
2453 2442 (func
2454 2443 (symbol 'filelog')
2455 2444 (string '../b'))
2456 2445 <filteredset
2457 2446 <spanset- 0:9>, set([1])>
2458 2447 $ testlog -f ../b
2459 2448 []
2460 2449 []
2461 2450 <generatorsetdesc->
2462 2451 $ cd ..
2463 2452
2464 2453 Test --hidden
2465 2454 (enable obsolete)
2466 2455
2467 2456 $ cat >> $HGRCPATH << EOF
2468 2457 > [experimental]
2469 2458 > evolution.createmarkers=True
2470 2459 > EOF
2471 2460
2472 2461 $ hg debugobsolete `hg id --debug -i -r 8`
2473 2462 obsoleted 1 changesets
2474 2463 $ testlog
2475 2464 []
2476 2465 []
2477 2466 <spanset- 0:9>
2478 2467 $ testlog --hidden
2479 2468 []
2480 2469 []
2481 2470 <spanset- 0:9>
2482 2471 $ hg log -G --template '{rev} {desc}\n'
2483 2472 \xe2\x97\x8b 7 Added tag foo-bar for changeset fc281d8ff18d (esc)
2484 2473 \xe2\x94\x82 (esc)
2485 2474 \xe2\x97\x8b 6 merge 5 and 4 (esc)
2486 2475 \xe2\x94\x82\xe2\x95\xb2 (esc)
2487 2476 \xe2\x94\x82 \xe2\x97\x8b 5 add another e (esc)
2488 2477 \xe2\x94\x82 \xe2\x94\x82 (esc)
2489 2478 \xe2\x97\x8b \xe2\x94\x82 4 mv dir/b e (esc)
2490 2479 \xe2\x94\x82\xe2\x95\xb1 (esc)
2491 2480 \xe2\x97\x8d 3 mv a b; add d (esc)
2492 2481 \xe2\x94\x82 (esc)
2493 2482 \xe2\x97\x8b 2 mv b dir/b (esc)
2494 2483 \xe2\x94\x82 (esc)
2495 2484 \xe2\x97\x8b 1 copy a b (esc)
2496 2485 \xe2\x94\x82 (esc)
2497 2486 \xe2\x97\x8b 0 add a (esc)
2498 2487
2499 2488
2500 2489 A template without trailing newline should do something sane
2501 2490
2502 2491 $ hg log -G -r ::2 --template '{rev} {desc}'
2503 2492 \xe2\x97\x8b 2 mv b dir/b (esc)
2504 2493 \xe2\x94\x82 (esc)
2505 2494 \xe2\x97\x8b 1 copy a b (esc)
2506 2495 \xe2\x94\x82 (esc)
2507 2496 \xe2\x97\x8b 0 add a (esc)
2508 2497
2509 2498
2510 2499 Extra newlines must be preserved
2511 2500
2512 2501 $ hg log -G -r ::2 --template '\n{rev} {desc}\n\n'
2513 2502 \xe2\x97\x8b (esc)
2514 2503 \xe2\x94\x82 2 mv b dir/b (esc)
2515 2504 \xe2\x94\x82 (esc)
2516 2505 \xe2\x97\x8b (esc)
2517 2506 \xe2\x94\x82 1 copy a b (esc)
2518 2507 \xe2\x94\x82 (esc)
2519 2508 \xe2\x97\x8b (esc)
2520 2509 0 add a
2521 2510
2522 2511
2523 2512 The almost-empty template should do something sane too ...
2524 2513
2525 2514 $ hg log -G -r ::2 --template '\n'
2526 2515 \xe2\x97\x8b (esc)
2527 2516 \xe2\x94\x82 (esc)
2528 2517 \xe2\x97\x8b (esc)
2529 2518 \xe2\x94\x82 (esc)
2530 2519 \xe2\x97\x8b (esc)
2531 2520
2532 2521
2533 2522 issue3772
2534 2523
2535 2524 $ hg log -G -r :null
2536 2525 \xe2\x97\x8b changeset: 0:f8035bb17114 (esc)
2537 2526 \xe2\x94\x82 user: test (esc)
2538 2527 \xe2\x94\x82 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
2539 2528 \xe2\x94\x82 summary: add a (esc)
2540 2529 \xe2\x94\x82 (esc)
2541 2530 \xe2\x97\x8b changeset: -1:000000000000 (esc)
2542 2531 user:
2543 2532 date: Thu Jan 01 00:00:00 1970 +0000
2544 2533
2545 2534 $ hg log -G -r null:null
2546 2535 \xe2\x97\x8b changeset: -1:000000000000 (esc)
2547 2536 user:
2548 2537 date: Thu Jan 01 00:00:00 1970 +0000
2549 2538
2550 2539
2551 2540 should not draw line down to null due to the magic of fullreposet
2552 2541
2553 2542 $ hg log -G -r 'all()' | tail -6
2554 2543 \xe2\x94\x82 (esc)
2555 2544 \xe2\x97\x8b changeset: 0:f8035bb17114 (esc)
2556 2545 user: test
2557 2546 date: Thu Jan 01 00:00:00 1970 +0000
2558 2547 summary: add a
2559 2548
2560 2549
2561 2550 $ hg log -G -r 'branch(default)' | tail -6
2562 2551 \xe2\x94\x82 (esc)
2563 2552 \xe2\x97\x8b changeset: 0:f8035bb17114 (esc)
2564 2553 user: test
2565 2554 date: Thu Jan 01 00:00:00 1970 +0000
2566 2555 summary: add a
2567 2556
2568 2557
2569 2558 working-directory revision
2570 2559
2571 2560 $ hg log -G -qr '. + wdir()'
2572 2561 \xe2\x97\x8b 2147483647:ffffffffffff (esc)
2573 2562 \xe2\x94\x82 (esc)
2574 2563 \xe2\x97\x8d 3:5918b8d165d1 (esc)
2575 2564 \xe2\x94\x82 (esc)
2576 2565 \xe2\x95\xa7 (esc)
2577 2566
2578 2567 node template with changesetprinter:
2579 2568
2580 2569 $ hg log -Gqr 5:7 --config ui.graphnodetemplate='"{rev}"'
2581 2570 7 7:02dbb8e276b8
2582 2571 \xe2\x94\x82 (esc)
2583 2572 6 6:fc281d8ff18d
2584 2573 \xe2\x94\x82\xe2\x95\xb2 (esc)
2585 2574 \xe2\x94\x82 \xe2\x95\xa7 (esc)
2586 2575 5 5:99b31f1c2782
2587 2576 \xe2\x94\x82 (esc)
2588 2577 \xe2\x95\xa7 (esc)
2589 2578
2590 2579 node template with changesettemplater (shared cache variable):
2591 2580
2592 2581 $ hg log -Gr 5:7 -T '{latesttag % "{rev} {tag}+{distance}"}\n' \
2593 2582 > --config ui.graphnodetemplate='{ifeq(latesttagdistance, 0, "#", graphnode)}'
2594 2583 \xe2\x97\x8b 7 foo-bar+1 (esc)
2595 2584 \xe2\x94\x82 (esc)
2596 2585 # 6 foo-bar+0
2597 2586 \xe2\x94\x82\xe2\x95\xb2 (esc)
2598 2587 \xe2\x94\x82 \xe2\x95\xa7 (esc)
2599 2588 \xe2\x97\x8b 5 null+5 (esc)
2600 2589 \xe2\x94\x82 (esc)
2601 2590 \xe2\x95\xa7 (esc)
2602 2591
2603 2592 label() should just work in node template:
2604 2593
2605 2594 $ hg log -Gqr 7 --config extensions.color= --color=debug \
2606 2595 > --config ui.graphnodetemplate='{label("branch.{branch}", rev)}'
2607 2596 [branch.default\xe2\x94\x827] [log.node|7:02dbb8e276b8] (esc)
2608 2597 \xe2\x94\x82 (esc)
2609 2598 \xe2\x95\xa7 (esc)
2610 2599
2611 2600 $ cd ..
2612 2601
2613 2602 change graph edge styling
2614 2603
2615 2604 $ cd repo
2616 2605
2617 2606 Setting HGPLAIN ignores graphmod styling:
2618 2607
2619 2608 $ HGPLAIN=1 hg log -G -r 'file("a")' -m
2620 2609 @ changeset: 36:08a19a744424
2621 2610 | branch: branch
2622 2611 | tag: tip
2623 2612 | parent: 35:9159c3644c5e
2624 2613 | parent: 35:9159c3644c5e
2625 2614 | user: test
2626 2615 | date: Thu Jan 01 00:00:36 1970 +0000
2627 2616 | summary: (36) buggy merge: identical parents
2628 2617 |
2629 2618 o changeset: 32:d06dffa21a31
2630 2619 |\ parent: 27:886ed638191b
2631 2620 | | parent: 31:621d83e11f67
2632 2621 | | user: test
2633 2622 | | date: Thu Jan 01 00:00:32 1970 +0000
2634 2623 | | summary: (32) expand
2635 2624 | |
2636 2625 o | changeset: 31:621d83e11f67
2637 2626 |\| parent: 21:d42a756af44d
2638 2627 | | parent: 30:6e11cd4b648f
2639 2628 | | user: test
2640 2629 | | date: Thu Jan 01 00:00:31 1970 +0000
2641 2630 | | summary: (31) expand
2642 2631 | |
2643 2632 o | changeset: 30:6e11cd4b648f
2644 2633 |\ \ parent: 28:44ecd0b9ae99
2645 2634 | | | parent: 29:cd9bb2be7593
2646 2635 | | | user: test
2647 2636 | | | date: Thu Jan 01 00:00:30 1970 +0000
2648 2637 | | | summary: (30) expand
2649 2638 | | |
2650 2639 o | | changeset: 28:44ecd0b9ae99
2651 2640 |\ \ \ parent: 1:6db2ef61d156
2652 2641 | | | | parent: 26:7f25b6c2f0b9
2653 2642 | | | | user: test
2654 2643 | | | | date: Thu Jan 01 00:00:28 1970 +0000
2655 2644 | | | | summary: (28) merge zero known
2656 2645 | | | |
2657 2646 o | | | changeset: 26:7f25b6c2f0b9
2658 2647 |\ \ \ \ parent: 18:1aa84d96232a
2659 2648 | | | | | parent: 25:91da8ed57247
2660 2649 | | | | | user: test
2661 2650 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
2662 2651 | | | | | summary: (26) merge one known; far right
2663 2652 | | | | |
2664 2653 | o-----+ changeset: 25:91da8ed57247
2665 2654 | | | | | parent: 21:d42a756af44d
2666 2655 | | | | | parent: 24:a9c19a3d96b7
2667 2656 | | | | | user: test
2668 2657 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
2669 2658 | | | | | summary: (25) merge one known; far left
2670 2659 | | | | |
2671 2660 | o | | | changeset: 24:a9c19a3d96b7
2672 2661 | |\ \ \ \ parent: 0:e6eb3150255d
2673 2662 | | | | | | parent: 23:a01cddf0766d
2674 2663 | | | | | | user: test
2675 2664 | | | | | | date: Thu Jan 01 00:00:24 1970 +0000
2676 2665 | | | | | | summary: (24) merge one known; immediate right
2677 2666 | | | | | |
2678 2667 | o---+ | | changeset: 23:a01cddf0766d
2679 2668 | | | | | | parent: 1:6db2ef61d156
2680 2669 | | | | | | parent: 22:e0d9cccacb5d
2681 2670 | | | | | | user: test
2682 2671 | | | | | | date: Thu Jan 01 00:00:23 1970 +0000
2683 2672 | | | | | | summary: (23) merge one known; immediate left
2684 2673 | | | | | |
2685 2674 | o-------+ changeset: 22:e0d9cccacb5d
2686 2675 | | | | | | parent: 18:1aa84d96232a
2687 2676 |/ / / / / parent: 21:d42a756af44d
2688 2677 | | | | | user: test
2689 2678 | | | | | date: Thu Jan 01 00:00:22 1970 +0000
2690 2679 | | | | | summary: (22) merge two known; one far left, one far right
2691 2680 | | | | |
2692 2681 | | | | o changeset: 21:d42a756af44d
2693 2682 | | | | |\ parent: 19:31ddc2c1573b
2694 2683 | | | | | | parent: 20:d30ed6450e32
2695 2684 | | | | | | user: test
2696 2685 | | | | | | date: Thu Jan 01 00:00:21 1970 +0000
2697 2686 | | | | | | summary: (21) expand
2698 2687 | | | | | |
2699 2688 +-+-------o changeset: 20:d30ed6450e32
2700 2689 | | | | | parent: 0:e6eb3150255d
2701 2690 | | | | | parent: 18:1aa84d96232a
2702 2691 | | | | | user: test
2703 2692 | | | | | date: Thu Jan 01 00:00:20 1970 +0000
2704 2693 | | | | | summary: (20) merge two known; two far right
2705 2694 | | | | |
2706 2695 | | | | o changeset: 19:31ddc2c1573b
2707 2696 | | | | |\ parent: 15:1dda3f72782d
2708 2697 | | | | | | parent: 17:44765d7c06e0
2709 2698 | | | | | | user: test
2710 2699 | | | | | | date: Thu Jan 01 00:00:19 1970 +0000
2711 2700 | | | | | | summary: (19) expand
2712 2701 | | | | | |
2713 2702 o---+---+ | changeset: 18:1aa84d96232a
2714 2703 | | | | | parent: 1:6db2ef61d156
2715 2704 / / / / / parent: 15:1dda3f72782d
2716 2705 | | | | | user: test
2717 2706 | | | | | date: Thu Jan 01 00:00:18 1970 +0000
2718 2707 | | | | | summary: (18) merge two known; two far left
2719 2708 | | | | |
2720 2709 | | | | o changeset: 17:44765d7c06e0
2721 2710 | | | | |\ parent: 12:86b91144a6e9
2722 2711 | | | | | | parent: 16:3677d192927d
2723 2712 | | | | | | user: test
2724 2713 | | | | | | date: Thu Jan 01 00:00:17 1970 +0000
2725 2714 | | | | | | summary: (17) expand
2726 2715 | | | | | |
2727 2716 +-+-------o changeset: 16:3677d192927d
2728 2717 | | | | | parent: 0:e6eb3150255d
2729 2718 | | | | | parent: 1:6db2ef61d156
2730 2719 | | | | | user: test
2731 2720 | | | | | date: Thu Jan 01 00:00:16 1970 +0000
2732 2721 | | | | | summary: (16) merge two known; one immediate right, one near right
2733 2722 | | | | |
2734 2723 | | | o | changeset: 15:1dda3f72782d
2735 2724 | | | |\ \ parent: 13:22d8966a97e3
2736 2725 | | | | | | parent: 14:8eac370358ef
2737 2726 | | | | | | user: test
2738 2727 | | | | | | date: Thu Jan 01 00:00:15 1970 +0000
2739 2728 | | | | | | summary: (15) expand
2740 2729 | | | | | |
2741 2730 +-------o | changeset: 14:8eac370358ef
2742 2731 | | | | |/ parent: 0:e6eb3150255d
2743 2732 | | | | | parent: 12:86b91144a6e9
2744 2733 | | | | | user: test
2745 2734 | | | | | date: Thu Jan 01 00:00:14 1970 +0000
2746 2735 | | | | | summary: (14) merge two known; one immediate right, one far right
2747 2736 | | | | |
2748 2737 | | | o | changeset: 13:22d8966a97e3
2749 2738 | | | |\ \ parent: 9:7010c0af0a35
2750 2739 | | | | | | parent: 11:832d76e6bdf2
2751 2740 | | | | | | user: test
2752 2741 | | | | | | date: Thu Jan 01 00:00:13 1970 +0000
2753 2742 | | | | | | summary: (13) expand
2754 2743 | | | | | |
2755 2744 | +---+---o changeset: 12:86b91144a6e9
2756 2745 | | | | | parent: 1:6db2ef61d156
2757 2746 | | | | | parent: 9:7010c0af0a35
2758 2747 | | | | | user: test
2759 2748 | | | | | date: Thu Jan 01 00:00:12 1970 +0000
2760 2749 | | | | | summary: (12) merge two known; one immediate right, one far left
2761 2750 | | | | |
2762 2751 | | | | o changeset: 11:832d76e6bdf2
2763 2752 | | | | |\ parent: 6:b105a072e251
2764 2753 | | | | | | parent: 10:74c64d036d72
2765 2754 | | | | | | user: test
2766 2755 | | | | | | date: Thu Jan 01 00:00:11 1970 +0000
2767 2756 | | | | | | summary: (11) expand
2768 2757 | | | | | |
2769 2758 +---------o changeset: 10:74c64d036d72
2770 2759 | | | | |/ parent: 0:e6eb3150255d
2771 2760 | | | | | parent: 6:b105a072e251
2772 2761 | | | | | user: test
2773 2762 | | | | | date: Thu Jan 01 00:00:10 1970 +0000
2774 2763 | | | | | summary: (10) merge two known; one immediate left, one near right
2775 2764 | | | | |
2776 2765 | | | o | changeset: 9:7010c0af0a35
2777 2766 | | | |\ \ parent: 7:b632bb1b1224
2778 2767 | | | | | | parent: 8:7a0b11f71937
2779 2768 | | | | | | user: test
2780 2769 | | | | | | date: Thu Jan 01 00:00:09 1970 +0000
2781 2770 | | | | | | summary: (9) expand
2782 2771 | | | | | |
2783 2772 +-------o | changeset: 8:7a0b11f71937
2784 2773 | | | |/ / parent: 0:e6eb3150255d
2785 2774 | | | | | parent: 7:b632bb1b1224
2786 2775 | | | | | user: test
2787 2776 | | | | | date: Thu Jan 01 00:00:08 1970 +0000
2788 2777 | | | | | summary: (8) merge two known; one immediate left, one far right
2789 2778 | | | | |
2790 2779 | | | o | changeset: 7:b632bb1b1224
2791 2780 | | | |\ \ parent: 2:3d9a33b8d1e1
2792 2781 | | | | | | parent: 5:4409d547b708
2793 2782 | | | | | | user: test
2794 2783 | | | | | | date: Thu Jan 01 00:00:07 1970 +0000
2795 2784 | | | | | | summary: (7) expand
2796 2785 | | | | | |
2797 2786 | | | +---o changeset: 6:b105a072e251
2798 2787 | | | | |/ parent: 2:3d9a33b8d1e1
2799 2788 | | | | | parent: 5:4409d547b708
2800 2789 | | | | | user: test
2801 2790 | | | | | date: Thu Jan 01 00:00:06 1970 +0000
2802 2791 | | | | | summary: (6) merge two known; one immediate left, one far left
2803 2792 | | | | |
2804 2793 | | | o | changeset: 5:4409d547b708
2805 2794 | | | |\ \ parent: 3:27eef8ed80b4
2806 2795 | | | | | | parent: 4:26a8bac39d9f
2807 2796 | | | | | | user: test
2808 2797 | | | | | | date: Thu Jan 01 00:00:05 1970 +0000
2809 2798 | | | | | | summary: (5) expand
2810 2799 | | | | | |
2811 2800 | +---o | | changeset: 4:26a8bac39d9f
2812 2801 | | | |/ / parent: 1:6db2ef61d156
2813 2802 | | | | | parent: 3:27eef8ed80b4
2814 2803 | | | | | user: test
2815 2804 | | | | | date: Thu Jan 01 00:00:04 1970 +0000
2816 2805 | | | | | summary: (4) merge two known; one immediate left, one immediate right
2817 2806 | | | | |
2818 2807
2819 2808 .. unless HGPLAINEXCEPT=graph is set:
2820 2809
2821 2810 $ HGPLAIN=1 HGPLAINEXCEPT=graph hg log -G -r 'file("a")' -m
2822 2811 \xe2\x97\x8d changeset: 36:08a19a744424 (esc)
2823 2812 \xe2\x94\x86 branch: branch (esc)
2824 2813 \xe2\x94\x86 tag: tip (esc)
2825 2814 \xe2\x94\x86 parent: 35:9159c3644c5e (esc)
2826 2815 \xe2\x94\x86 parent: 35:9159c3644c5e (esc)
2827 2816 \xe2\x94\x86 user: test (esc)
2828 2817 \xe2\x94\x86 date: Thu Jan 01 00:00:36 1970 +0000 (esc)
2829 2818 \xe2\x94\x86 summary: (36) buggy merge: identical parents (esc)
2830 2819 \xe2\x94\x86 (esc)
2831 2820 \xe2\x97\x8b changeset: 32:d06dffa21a31 (esc)
2832 2821 \xe2\x94\x82\xe2\x95\xb2 parent: 27:886ed638191b (esc)
2833 2822 \xe2\x94\x82 \xe2\x94\x86 parent: 31:621d83e11f67 (esc)
2834 2823 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
2835 2824 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:32 1970 +0000 (esc)
2836 2825 \xe2\x94\x82 \xe2\x94\x86 summary: (32) expand (esc)
2837 2826 \xe2\x94\x82 \xe2\x94\x86 (esc)
2838 2827 \xe2\x97\x8b \xe2\x94\x86 changeset: 31:621d83e11f67 (esc)
2839 2828 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x86 parent: 21:d42a756af44d (esc)
2840 2829 \xe2\x94\x82 \xe2\x94\x86 parent: 30:6e11cd4b648f (esc)
2841 2830 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
2842 2831 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:31 1970 +0000 (esc)
2843 2832 \xe2\x94\x82 \xe2\x94\x86 summary: (31) expand (esc)
2844 2833 \xe2\x94\x82 \xe2\x94\x86 (esc)
2845 2834 \xe2\x97\x8b \xe2\x94\x86 changeset: 30:6e11cd4b648f (esc)
2846 2835 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 28:44ecd0b9ae99 (esc)
2847 2836 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x86 parent: 29:cd9bb2be7593 (esc)
2848 2837 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
2849 2838 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:30 1970 +0000 (esc)
2850 2839 \xe2\x94\x82 \xe2\x94\x86 summary: (30) expand (esc)
2851 2840 \xe2\x94\x82 \xe2\x95\xb1 (esc)
2852 2841 \xe2\x97\x8b \xe2\x94\x86 changeset: 28:44ecd0b9ae99 (esc)
2853 2842 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 1:6db2ef61d156 (esc)
2854 2843 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x86 parent: 26:7f25b6c2f0b9 (esc)
2855 2844 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
2856 2845 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:28 1970 +0000 (esc)
2857 2846 \xe2\x94\x82 \xe2\x94\x86 summary: (28) merge zero known (esc)
2858 2847 \xe2\x94\x82 \xe2\x95\xb1 (esc)
2859 2848 \xe2\x97\x8b \xe2\x94\x86 changeset: 26:7f25b6c2f0b9 (esc)
2860 2849 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 18:1aa84d96232a (esc)
2861 2850 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 parent: 25:91da8ed57247 (esc)
2862 2851 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
2863 2852 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:26 1970 +0000 (esc)
2864 2853 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 summary: (26) merge one known; far right (esc)
2865 2854 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 (esc)
2866 2855 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x86 changeset: 25:91da8ed57247 (esc)
2867 2856 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x86 parent: 21:d42a756af44d (esc)
2868 2857 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 parent: 24:a9c19a3d96b7 (esc)
2869 2858 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
2870 2859 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:25 1970 +0000 (esc)
2871 2860 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 summary: (25) merge one known; far left (esc)
2872 2861 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 (esc)
2873 2862 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x86 changeset: 24:a9c19a3d96b7 (esc)
2874 2863 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 0:e6eb3150255d (esc)
2875 2864 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x86 parent: 23:a01cddf0766d (esc)
2876 2865 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
2877 2866 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:24 1970 +0000 (esc)
2878 2867 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 summary: (24) merge one known; immediate right (esc)
2879 2868 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xb1 (esc)
2880 2869 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x86 changeset: 23:a01cddf0766d (esc)
2881 2870 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 1:6db2ef61d156 (esc)
2882 2871 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x86 parent: 22:e0d9cccacb5d (esc)
2883 2872 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
2884 2873 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:23 1970 +0000 (esc)
2885 2874 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x86 summary: (23) merge one known; immediate left (esc)
2886 2875 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xb1 (esc)
2887 2876 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x86 changeset: 22:e0d9cccacb5d (esc)
2888 2877 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x86\xe2\x95\xb1 parent: 18:1aa84d96232a (esc)
2889 2878 \xe2\x94\x82 \xe2\x94\x86 parent: 21:d42a756af44d (esc)
2890 2879 \xe2\x94\x82 \xe2\x94\x86 user: test (esc)
2891 2880 \xe2\x94\x82 \xe2\x94\x86 date: Thu Jan 01 00:00:22 1970 +0000 (esc)
2892 2881 \xe2\x94\x82 \xe2\x94\x86 summary: (22) merge two known; one far left, one far right (esc)
2893 2882 \xe2\x94\x82 \xe2\x94\x86 (esc)
2894 2883 \xe2\x94\x82 \xe2\x97\x8b changeset: 21:d42a756af44d (esc)
2895 2884 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 parent: 19:31ddc2c1573b (esc)
2896 2885 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 20:d30ed6450e32 (esc)
2897 2886 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2898 2887 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:21 1970 +0000 (esc)
2899 2888 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (21) expand (esc)
2900 2889 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
2901 2890 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b changeset: 20:d30ed6450e32 (esc)
2902 2891 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
2903 2892 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 parent: 18:1aa84d96232a (esc)
2904 2893 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2905 2894 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:20 1970 +0000 (esc)
2906 2895 \xe2\x94\x82 \xe2\x94\x82 summary: (20) merge two known; two far right (esc)
2907 2896 \xe2\x94\x82 \xe2\x94\x82 (esc)
2908 2897 \xe2\x94\x82 \xe2\x97\x8b changeset: 19:31ddc2c1573b (esc)
2909 2898 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 parent: 15:1dda3f72782d (esc)
2910 2899 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 17:44765d7c06e0 (esc)
2911 2900 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2912 2901 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:19 1970 +0000 (esc)
2913 2902 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (19) expand (esc)
2914 2903 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
2915 2904 \xe2\x97\x8b \xe2\x94\x82 \xe2\x94\x82 changeset: 18:1aa84d96232a (esc)
2916 2905 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x82 \xe2\x94\x82 parent: 1:6db2ef61d156 (esc)
2917 2906 \xe2\x95\xa7 \xe2\x94\x82 \xe2\x94\x82 parent: 15:1dda3f72782d (esc)
2918 2907 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2919 2908 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:18 1970 +0000 (esc)
2920 2909 \xe2\x94\x82 \xe2\x94\x82 summary: (18) merge two known; two far left (esc)
2921 2910 \xe2\x95\xb1 \xe2\x95\xb1 (esc)
2922 2911 \xe2\x94\x82 \xe2\x97\x8b changeset: 17:44765d7c06e0 (esc)
2923 2912 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 parent: 12:86b91144a6e9 (esc)
2924 2913 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 16:3677d192927d (esc)
2925 2914 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2926 2915 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:17 1970 +0000 (esc)
2927 2916 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (17) expand (esc)
2928 2917 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
2929 2918 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b changeset: 16:3677d192927d (esc)
2930 2919 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 parent: 0:e6eb3150255d (esc)
2931 2920 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x95\xa7 parent: 1:6db2ef61d156 (esc)
2932 2921 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2933 2922 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:16 1970 +0000 (esc)
2934 2923 \xe2\x94\x82 \xe2\x94\x82 summary: (16) merge two known; one immediate right, one near right (esc)
2935 2924 \xe2\x94\x82 \xe2\x94\x82 (esc)
2936 2925 \xe2\x97\x8b \xe2\x94\x82 changeset: 15:1dda3f72782d (esc)
2937 2926 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 13:22d8966a97e3 (esc)
2938 2927 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 14:8eac370358ef (esc)
2939 2928 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2940 2929 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:15 1970 +0000 (esc)
2941 2930 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (15) expand (esc)
2942 2931 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
2943 2932 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 14:8eac370358ef (esc)
2944 2933 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2\xe2\x94\x82 parent: 0:e6eb3150255d (esc)
2945 2934 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x82 parent: 12:86b91144a6e9 (esc)
2946 2935 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2947 2936 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:14 1970 +0000 (esc)
2948 2937 \xe2\x94\x82 \xe2\x94\x82 summary: (14) merge two known; one immediate right, one far right (esc)
2949 2938 \xe2\x94\x82 \xe2\x95\xb1 (esc)
2950 2939 \xe2\x97\x8b \xe2\x94\x82 changeset: 13:22d8966a97e3 (esc)
2951 2940 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 9:7010c0af0a35 (esc)
2952 2941 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 11:832d76e6bdf2 (esc)
2953 2942 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2954 2943 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:13 1970 +0000 (esc)
2955 2944 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (13) expand (esc)
2956 2945 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
2957 2946 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x97\x8b changeset: 12:86b91144a6e9 (esc)
2958 2947 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 1:6db2ef61d156 (esc)
2959 2948 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 parent: 9:7010c0af0a35 (esc)
2960 2949 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2961 2950 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:12 1970 +0000 (esc)
2962 2951 \xe2\x94\x82 \xe2\x94\x82 summary: (12) merge two known; one immediate right, one far left (esc)
2963 2952 \xe2\x94\x82 \xe2\x94\x82 (esc)
2964 2953 \xe2\x94\x82 \xe2\x97\x8b changeset: 11:832d76e6bdf2 (esc)
2965 2954 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb2 parent: 6:b105a072e251 (esc)
2966 2955 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 10:74c64d036d72 (esc)
2967 2956 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2968 2957 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:11 1970 +0000 (esc)
2969 2958 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (11) expand (esc)
2970 2959 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
2971 2960 \xe2\x94\x82 \xe2\x94\x82 \xe2\x97\x8b changeset: 10:74c64d036d72 (esc)
2972 2961 \xe2\x94\x82 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82 parent: 0:e6eb3150255d (esc)
2973 2962 \xe2\x94\x82 \xe2\x94\x82 \xe2\x95\xa7 parent: 6:b105a072e251 (esc)
2974 2963 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2975 2964 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:10 1970 +0000 (esc)
2976 2965 \xe2\x94\x82 \xe2\x94\x82 summary: (10) merge two known; one immediate left, one near right (esc)
2977 2966 \xe2\x94\x82 \xe2\x94\x82 (esc)
2978 2967 \xe2\x97\x8b \xe2\x94\x82 changeset: 9:7010c0af0a35 (esc)
2979 2968 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 7:b632bb1b1224 (esc)
2980 2969 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 parent: 8:7a0b11f71937 (esc)
2981 2970 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2982 2971 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:09 1970 +0000 (esc)
2983 2972 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 summary: (9) expand (esc)
2984 2973 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 (esc)
2985 2974 \xe2\x94\x82 \xe2\x97\x8b \xe2\x94\x82 changeset: 8:7a0b11f71937 (esc)
2986 2975 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82 \xe2\x94\x82 parent: 0:e6eb3150255d (esc)
2987 2976 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x82 parent: 7:b632bb1b1224 (esc)
2988 2977 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2989 2978 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:08 1970 +0000 (esc)
2990 2979 \xe2\x94\x82 \xe2\x94\x82 summary: (8) merge two known; one immediate left, one far right (esc)
2991 2980 \xe2\x94\x82 \xe2\x95\xb1 (esc)
2992 2981 \xe2\x97\x8b \xe2\x94\x82 changeset: 7:b632bb1b1224 (esc)
2993 2982 \xe2\x94\x82\xe2\x95\xb2 \xe2\x95\xb2 parent: 2:3d9a33b8d1e1 (esc)
2994 2983 \xe2\x94\x82 \xe2\x95\xa7 \xe2\x94\x82 parent: 5:4409d547b708 (esc)
2995 2984 \xe2\x94\x82 \xe2\x94\x82 user: test (esc)
2996 2985 \xe2\x94\x82 \xe2\x94\x82 date: Thu Jan 01 00:00:07 1970 +0000 (esc)
2997 2986 \xe2\x94\x82 \xe2\x94\x82 summary: (7) expand (esc)
2998 2987 \xe2\x94\x82 \xe2\x95\xb1 (esc)
2999 2988 \xe2\x94\x82 \xe2\x97\x8b changeset: 6:b105a072e251 (esc)
3000 2989 \xe2\x94\x82\xe2\x95\xb1\xe2\x94\x82 parent: 2:3d9a33b8d1e1 (esc)
3001 2990 \xe2\x94\x82 \xe2\x95\xa7 parent: 5:4409d547b708 (esc)
3002 2991 \xe2\x94\x82 user: test (esc)
3003 2992 \xe2\x94\x82 date: Thu Jan 01 00:00:06 1970 +0000 (esc)
3004 2993 \xe2\x94\x82 summary: (6) merge two known; one immediate left, one far left (esc)
3005 2994 \xe2\x94\x82 (esc)
3006 2995 \xe2\x97\x8b changeset: 5:4409d547b708 (esc)
3007 2996 \xe2\x94\x82\xe2\x95\xb2 parent: 3:27eef8ed80b4 (esc)
3008 2997 \xe2\x94\x82 \xe2\x95\xa7 parent: 4:26a8bac39d9f (esc)
3009 2998 \xe2\x94\x82 user: test (esc)
3010 2999 \xe2\x94\x82 date: Thu Jan 01 00:00:05 1970 +0000 (esc)
3011 3000 \xe2\x94\x82 summary: (5) expand (esc)
3012 3001 \xe2\x94\x82 (esc)
3013 3002 \xe2\x97\x8b changeset: 4:26a8bac39d9f (esc)
3014 3003 \xe2\x94\x82\xe2\x95\xb2 parent: 1:6db2ef61d156 (esc)
3015 3004 \xe2\x95\xa7 \xe2\x95\xa7 parent: 3:27eef8ed80b4 (esc)
3016 3005 user: test
3017 3006 date: Thu Jan 01 00:00:04 1970 +0000
3018 3007 summary: (4) merge two known; one immediate left, one immediate right
3019 3008
3020 3009 $ cd ..
3021 3010 $ cd repo
3022 3011
3023 3012 behavior with newlines
3024 3013
3025 3014 $ hg log -G -r ::2 -T '{rev} {desc}'
3026 3015 \xe2\x97\x8b 2 (2) collapse (esc)
3027 3016 \xe2\x94\x82 (esc)
3028 3017 \xe2\x97\x8b 1 (1) collapse (esc)
3029 3018 \xe2\x94\x82 (esc)
3030 3019 \xe2\x97\x8b 0 (0) root (esc)
3031 3020
3032 3021
3033 3022 $ hg log -G -r ::2 -T '{rev} {desc}\n'
3034 3023 \xe2\x97\x8b 2 (2) collapse (esc)
3035 3024 \xe2\x94\x82 (esc)
3036 3025 \xe2\x97\x8b 1 (1) collapse (esc)
3037 3026 \xe2\x94\x82 (esc)
3038 3027 \xe2\x97\x8b 0 (0) root (esc)
3039 3028
3040 3029
3041 3030 $ hg log -G -r ::2 -T '{rev} {desc}\n\n'
3042 3031 \xe2\x97\x8b 2 (2) collapse (esc)
3043 3032 \xe2\x94\x82 (esc)
3044 3033 \xe2\x97\x8b 1 (1) collapse (esc)
3045 3034 \xe2\x94\x82 (esc)
3046 3035 \xe2\x97\x8b 0 (0) root (esc)
3047 3036
3048 3037
3049 3038 $ hg log -G -r ::2 -T '\n{rev} {desc}'
3050 3039 \xe2\x97\x8b (esc)
3051 3040 \xe2\x94\x82 2 (2) collapse (esc)
3052 3041 \xe2\x97\x8b (esc)
3053 3042 \xe2\x94\x82 1 (1) collapse (esc)
3054 3043 \xe2\x97\x8b (esc)
3055 3044 0 (0) root
3056 3045
3057 3046 $ hg log -G -r ::2 -T '{rev} {desc}\n\n\n'
3058 3047 \xe2\x97\x8b 2 (2) collapse (esc)
3059 3048 \xe2\x94\x82 (esc)
3060 3049 \xe2\x94\x82 (esc)
3061 3050 \xe2\x97\x8b 1 (1) collapse (esc)
3062 3051 \xe2\x94\x82 (esc)
3063 3052 \xe2\x94\x82 (esc)
3064 3053 \xe2\x97\x8b 0 (0) root (esc)
3065 3054
3066 3055
3067 3056 $ cd ..
3068 3057
3069 3058 When inserting extra line nodes to handle more than 2 parents, ensure that
3070 3059 the right node styles are used (issue5174):
3071 3060
3072 3061 $ hg init repo-issue5174
3073 3062 $ cd repo-issue5174
3074 3063 $ echo a > f0
3075 3064 $ hg ci -Aqm 0
3076 3065 $ echo a > f1
3077 3066 $ hg ci -Aqm 1
3078 3067 $ echo a > f2
3079 3068 $ hg ci -Aqm 2
3080 3069 $ hg co ".^"
3081 3070 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
3082 3071 $ echo a > f3
3083 3072 $ hg ci -Aqm 3
3084 3073 $ hg co ".^^"
3085 3074 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
3086 3075 $ echo a > f4
3087 3076 $ hg ci -Aqm 4
3088 3077 $ hg merge -r 2
3089 3078 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
3090 3079 (branch merge, don't forget to commit)
3091 3080 $ hg ci -qm 5
3092 3081 $ hg merge -r 3
3093 3082 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3094 3083 (branch merge, don't forget to commit)
3095 3084 $ hg ci -qm 6
3096 3085 $ hg log -G -r '0 | 1 | 2 | 6'
3097 3086 \xe2\x97\x8d changeset: 6:851fe89689ad (esc)
3098 3087 \xe2\x94\x86\xe2\x95\xb2 tag: tip (esc)
3099 3088 \xe2\x94\x86 \xe2\x94\x86 parent: 5:4f1e3cf15f5d (esc)
3100 3089 \xe2\x94\x86 \xe2\x94\x86 parent: 3:b74ba7084d2d (esc)
3101 3090 \xe2\x94\x86 \xe2\x94\x86 user: test (esc)
3102 3091 \xe2\x94\x86 \xe2\x94\x86 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
3103 3092 \xe2\x94\x86 \xe2\x94\x86 summary: 6 (esc)
3104 3093 \xe2\x94\x86 \xe2\x94\x86 (esc)
3105 3094 \xe2\x94\x86 \xe2\x95\xb2 (esc)
3106 3095 \xe2\x94\x86 \xe2\x94\x86\xe2\x95\xb2 (esc)
3107 3096 \xe2\x94\x86 \xe2\x97\x8b \xe2\x94\x86 changeset: 2:3e6599df4cce (esc)
3108 3097 \xe2\x94\x86 \xe2\x94\x86\xe2\x95\xb1 user: test (esc)
3109 3098 \xe2\x94\x86 \xe2\x94\x86 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
3110 3099 \xe2\x94\x86 \xe2\x94\x86 summary: 2 (esc)
3111 3100 \xe2\x94\x86 \xe2\x94\x86 (esc)
3112 3101 \xe2\x94\x86 \xe2\x97\x8b changeset: 1:bd9a55143933 (esc)
3113 3102 \xe2\x94\x86\xe2\x95\xb1 user: test (esc)
3114 3103 \xe2\x94\x86 date: Thu Jan 01 00:00:00 1970 +0000 (esc)
3115 3104 \xe2\x94\x86 summary: 1 (esc)
3116 3105 \xe2\x94\x86 (esc)
3117 3106 \xe2\x97\x8b changeset: 0:870a5edc339c (esc)
3118 3107 user: test
3119 3108 date: Thu Jan 01 00:00:00 1970 +0000
3120 3109 summary: 0
3121 3110
3122 3111
3123 3112 $ cd ..
3124 3113
3125 3114 Multiple roots (issue5440):
3126 3115
3127 3116 $ hg init multiroots
3128 3117 $ cd multiroots
3129 3118 $ cat <<EOF > .hg/hgrc
3130 3119 > [ui]
3131 3120 > logtemplate = '{rev} {desc}\n\n'
3132 3121 > EOF
3133 3122
3134 3123 $ touch foo
3135 3124 $ hg ci -Aqm foo
3136 3125 $ hg co -q null
3137 3126 $ touch bar
3138 3127 $ hg ci -Aqm bar
3139 3128
3140 3129 $ hg log -Gr null:
3141 3130 \xe2\x97\x8d 1 bar (esc)
3142 3131 \xe2\x94\x82 (esc)
3143 3132 \xe2\x94\x82 \xe2\x97\x8b 0 foo (esc)
3144 3133 \xe2\x94\x82\xe2\x95\xb1 (esc)
3145 3134 \xe2\x97\x8b -1 (esc)
3146 3135
3147 3136 $ hg log -Gr null+0
3148 3137 \xe2\x97\x8b 0 foo (esc)
3149 3138 \xe2\x94\x82 (esc)
3150 3139 \xe2\x97\x8b -1 (esc)
3151 3140
3152 3141 $ hg log -Gr null+1
3153 3142 \xe2\x97\x8d 1 bar (esc)
3154 3143 \xe2\x94\x82 (esc)
3155 3144 \xe2\x97\x8b -1 (esc)
3156 3145
3157 3146
3158 3147 $ cd ..
@@ -1,3488 +1,3477 b''
1 1 @ (34) head
2 2 |
3 3 | o (33) head
4 4 | |
5 5 o | (32) expand
6 6 |\ \
7 7 | o \ (31) expand
8 8 | |\ \
9 9 | | o \ (30) expand
10 10 | | |\ \
11 11 | | | o | (29) regular commit
12 12 | | | | |
13 13 | | o | | (28) merge zero known
14 14 | | |\ \ \
15 15 o | | | | | (27) collapse
16 16 |/ / / / /
17 17 | | o---+ (26) merge one known; far right
18 18 | | | | |
19 19 +---o | | (25) merge one known; far left
20 20 | | | | |
21 21 | | o | | (24) merge one known; immediate right
22 22 | | |\| |
23 23 | | o | | (23) merge one known; immediate left
24 24 | |/| | |
25 25 +---o---+ (22) merge two known; one far left, one far right
26 26 | | / /
27 27 o | | | (21) expand
28 28 |\ \ \ \
29 29 | o---+-+ (20) merge two known; two far right
30 30 | / / /
31 31 o | | | (19) expand
32 32 |\ \ \ \
33 33 +---+---o (18) merge two known; two far left
34 34 | | | |
35 35 | o | | (17) expand
36 36 | |\ \ \
37 37 | | o---+ (16) merge two known; one immediate right, one near right
38 38 | | |/ /
39 39 o | | | (15) expand
40 40 |\ \ \ \
41 41 | o-----+ (14) merge two known; one immediate right, one far right
42 42 | |/ / /
43 43 o | | | (13) expand
44 44 |\ \ \ \
45 45 +---o | | (12) merge two known; one immediate right, one far left
46 46 | | |/ /
47 47 | o | | (11) expand
48 48 | |\ \ \
49 49 | | o---+ (10) merge two known; one immediate left, one near right
50 50 | |/ / /
51 51 o | | | (9) expand
52 52 |\ \ \ \
53 53 | o-----+ (8) merge two known; one immediate left, one far right
54 54 |/ / / /
55 55 o | | | (7) expand
56 56 |\ \ \ \
57 57 +---o | | (6) merge two known; one immediate left, one far left
58 58 | |/ / /
59 59 | o | | (5) expand
60 60 | |\ \ \
61 61 | | o | | (4) merge two known; one immediate left, one immediate right
62 62 | |/|/ /
63 63 | o / / (3) collapse
64 64 |/ / /
65 65 o / / (2) collapse
66 66 |/ /
67 67 o / (1) collapse
68 68 |/
69 69 o (0) root
70 70
71 71
72 72 $ commit()
73 73 > {
74 74 > rev=$1
75 75 > msg=$2
76 76 > shift 2
77 77 > if [ "$#" -gt 0 ]; then
78 78 > hg debugsetparents "$@"
79 79 > fi
80 80 > echo $rev > a
81 81 > hg commit -Aqd "$rev 0" -m "($rev) $msg"
82 82 > }
83 83
84 84 $ cat > printrevset.py <<EOF
85 85 > from __future__ import absolute_import
86 86 > from mercurial import (
87 87 > cmdutil,
88 88 > commands,
89 89 > extensions,
90 90 > logcmdutil,
91 91 > revsetlang,
92 92 > smartset,
93 93 > )
94 94 > from mercurial.utils import stringutil
95 95 >
96 96 > def logrevset(repo, pats, opts):
97 97 > revs = logcmdutil._initialrevs(repo, opts)
98 98 > if not revs:
99 99 > return None
100 100 > match, pats, slowpath = logcmdutil._makematcher(repo, revs, pats, opts)
101 101 > return logcmdutil._makerevset(repo, match, pats, slowpath, opts)
102 102 >
103 103 > def uisetup(ui):
104 104 > def printrevset(orig, repo, pats, opts):
105 105 > revs, filematcher = orig(repo, pats, opts)
106 106 > if opts.get(b'print_revset'):
107 107 > expr = logrevset(repo, pats, opts)
108 108 > if expr:
109 109 > tree = revsetlang.parse(expr)
110 110 > tree = revsetlang.analyze(tree)
111 111 > else:
112 112 > tree = []
113 113 > ui = repo.ui
114 114 > ui.write(b'%r\n' % (opts.get(b'rev', []),))
115 115 > ui.write(revsetlang.prettyformat(tree) + b'\n')
116 116 > ui.write(stringutil.prettyrepr(revs) + b'\n')
117 117 > revs = smartset.baseset() # display no revisions
118 118 > return revs, filematcher
119 119 > extensions.wrapfunction(logcmdutil, 'getrevs', printrevset)
120 120 > aliases, entry = cmdutil.findcmd(b'log', commands.table)
121 121 > entry[1].append((b'', b'print-revset', False,
122 122 > b'print generated revset and exit (DEPRECATED)'))
123 123 > EOF
124 124
125 125 $ echo "[extensions]" >> $HGRCPATH
126 126 $ echo "printrevset=`pwd`/printrevset.py" >> $HGRCPATH
127 127
128 128 $ hg init repo
129 129 $ cd repo
130 130
131 131 Empty repo:
132 132
133 133 $ hg log -G
134 134
135 135
136 136 Building DAG:
137 137
138 138 $ commit 0 "root"
139 139 $ commit 1 "collapse" 0
140 140 $ commit 2 "collapse" 1
141 141 $ commit 3 "collapse" 2
142 142 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
143 143 $ commit 5 "expand" 3 4
144 144 $ commit 6 "merge two known; one immediate left, one far left" 2 5
145 145 $ commit 7 "expand" 2 5
146 146 $ commit 8 "merge two known; one immediate left, one far right" 0 7
147 147 $ commit 9 "expand" 7 8
148 148 $ commit 10 "merge two known; one immediate left, one near right" 0 6
149 149 $ commit 11 "expand" 6 10
150 150 $ commit 12 "merge two known; one immediate right, one far left" 1 9
151 151 $ commit 13 "expand" 9 11
152 152 $ commit 14 "merge two known; one immediate right, one far right" 0 12
153 153 $ commit 15 "expand" 13 14
154 154 $ commit 16 "merge two known; one immediate right, one near right" 0 1
155 155 $ commit 17 "expand" 12 16
156 156 $ commit 18 "merge two known; two far left" 1 15
157 157 $ commit 19 "expand" 15 17
158 158 $ commit 20 "merge two known; two far right" 0 18
159 159 $ commit 21 "expand" 19 20
160 160 $ commit 22 "merge two known; one far left, one far right" 18 21
161 161 $ commit 23 "merge one known; immediate left" 1 22
162 162 $ commit 24 "merge one known; immediate right" 0 23
163 163 $ commit 25 "merge one known; far left" 21 24
164 164 $ commit 26 "merge one known; far right" 18 25
165 165 $ commit 27 "collapse" 21
166 166 $ commit 28 "merge zero known" 1 26
167 167 $ commit 29 "regular commit" 0
168 168 $ commit 30 "expand" 28 29
169 169 $ commit 31 "expand" 21 30
170 170 $ commit 32 "expand" 27 31
171 171 $ commit 33 "head" 18
172 172 $ commit 34 "head" 32
173 173
174 174
175 175 $ hg log -G -q
176 176 @ 34:fea3ac5810e0
177 177 |
178 178 | o 33:68608f5145f9
179 179 | |
180 180 o | 32:d06dffa21a31
181 181 |\ \
182 182 | o \ 31:621d83e11f67
183 183 | |\ \
184 184 | | o \ 30:6e11cd4b648f
185 185 | | |\ \
186 186 | | | o | 29:cd9bb2be7593
187 187 | | | | |
188 188 | | o | | 28:44ecd0b9ae99
189 189 | | |\ \ \
190 190 o | | | | | 27:886ed638191b
191 191 |/ / / / /
192 192 | | o---+ 26:7f25b6c2f0b9
193 193 | | | | |
194 194 +---o | | 25:91da8ed57247
195 195 | | | | |
196 196 | | o | | 24:a9c19a3d96b7
197 197 | | |\| |
198 198 | | o | | 23:a01cddf0766d
199 199 | |/| | |
200 200 +---o---+ 22:e0d9cccacb5d
201 201 | | / /
202 202 o | | | 21:d42a756af44d
203 203 |\ \ \ \
204 204 | o---+-+ 20:d30ed6450e32
205 205 | / / /
206 206 o | | | 19:31ddc2c1573b
207 207 |\ \ \ \
208 208 +---+---o 18:1aa84d96232a
209 209 | | | |
210 210 | o | | 17:44765d7c06e0
211 211 | |\ \ \
212 212 | | o---+ 16:3677d192927d
213 213 | | |/ /
214 214 o | | | 15:1dda3f72782d
215 215 |\ \ \ \
216 216 | o-----+ 14:8eac370358ef
217 217 | |/ / /
218 218 o | | | 13:22d8966a97e3
219 219 |\ \ \ \
220 220 +---o | | 12:86b91144a6e9
221 221 | | |/ /
222 222 | o | | 11:832d76e6bdf2
223 223 | |\ \ \
224 224 | | o---+ 10:74c64d036d72
225 225 | |/ / /
226 226 o | | | 9:7010c0af0a35
227 227 |\ \ \ \
228 228 | o-----+ 8:7a0b11f71937
229 229 |/ / / /
230 230 o | | | 7:b632bb1b1224
231 231 |\ \ \ \
232 232 +---o | | 6:b105a072e251
233 233 | |/ / /
234 234 | o | | 5:4409d547b708
235 235 | |\ \ \
236 236 | | o | | 4:26a8bac39d9f
237 237 | |/|/ /
238 238 | o / / 3:27eef8ed80b4
239 239 |/ / /
240 240 o / / 2:3d9a33b8d1e1
241 241 |/ /
242 242 o / 1:6db2ef61d156
243 243 |/
244 244 o 0:e6eb3150255d
245 245
246 246
247 247 $ hg log -G
248 248 @ changeset: 34:fea3ac5810e0
249 249 | tag: tip
250 250 | parent: 32:d06dffa21a31
251 251 | user: test
252 252 | date: Thu Jan 01 00:00:34 1970 +0000
253 253 | summary: (34) head
254 254 |
255 255 | o changeset: 33:68608f5145f9
256 256 | | parent: 18:1aa84d96232a
257 257 | | user: test
258 258 | | date: Thu Jan 01 00:00:33 1970 +0000
259 259 | | summary: (33) head
260 260 | |
261 261 o | changeset: 32:d06dffa21a31
262 262 |\ \ parent: 27:886ed638191b
263 263 | | | parent: 31:621d83e11f67
264 264 | | | user: test
265 265 | | | date: Thu Jan 01 00:00:32 1970 +0000
266 266 | | | summary: (32) expand
267 267 | | |
268 268 | o | changeset: 31:621d83e11f67
269 269 | |\ \ parent: 21:d42a756af44d
270 270 | | | | parent: 30:6e11cd4b648f
271 271 | | | | user: test
272 272 | | | | date: Thu Jan 01 00:00:31 1970 +0000
273 273 | | | | summary: (31) expand
274 274 | | | |
275 275 | | o | changeset: 30:6e11cd4b648f
276 276 | | |\ \ parent: 28:44ecd0b9ae99
277 277 | | | | | parent: 29:cd9bb2be7593
278 278 | | | | | user: test
279 279 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
280 280 | | | | | summary: (30) expand
281 281 | | | | |
282 282 | | | o | changeset: 29:cd9bb2be7593
283 283 | | | | | parent: 0:e6eb3150255d
284 284 | | | | | user: test
285 285 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
286 286 | | | | | summary: (29) regular commit
287 287 | | | | |
288 288 | | o | | changeset: 28:44ecd0b9ae99
289 289 | | |\ \ \ parent: 1:6db2ef61d156
290 290 | | | | | | parent: 26:7f25b6c2f0b9
291 291 | | | | | | user: test
292 292 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
293 293 | | | | | | summary: (28) merge zero known
294 294 | | | | | |
295 295 o | | | | | changeset: 27:886ed638191b
296 296 |/ / / / / parent: 21:d42a756af44d
297 297 | | | | | user: test
298 298 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
299 299 | | | | | summary: (27) collapse
300 300 | | | | |
301 301 | | o---+ changeset: 26:7f25b6c2f0b9
302 302 | | | | | parent: 18:1aa84d96232a
303 303 | | | | | parent: 25:91da8ed57247
304 304 | | | | | user: test
305 305 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
306 306 | | | | | summary: (26) merge one known; far right
307 307 | | | | |
308 308 +---o | | changeset: 25:91da8ed57247
309 309 | | | | | parent: 21:d42a756af44d
310 310 | | | | | parent: 24:a9c19a3d96b7
311 311 | | | | | user: test
312 312 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
313 313 | | | | | summary: (25) merge one known; far left
314 314 | | | | |
315 315 | | o | | changeset: 24:a9c19a3d96b7
316 316 | | |\| | parent: 0:e6eb3150255d
317 317 | | | | | parent: 23:a01cddf0766d
318 318 | | | | | user: test
319 319 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
320 320 | | | | | summary: (24) merge one known; immediate right
321 321 | | | | |
322 322 | | o | | changeset: 23:a01cddf0766d
323 323 | |/| | | parent: 1:6db2ef61d156
324 324 | | | | | parent: 22:e0d9cccacb5d
325 325 | | | | | user: test
326 326 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
327 327 | | | | | summary: (23) merge one known; immediate left
328 328 | | | | |
329 329 +---o---+ changeset: 22:e0d9cccacb5d
330 330 | | | | parent: 18:1aa84d96232a
331 331 | | / / parent: 21:d42a756af44d
332 332 | | | | user: test
333 333 | | | | date: Thu Jan 01 00:00:22 1970 +0000
334 334 | | | | summary: (22) merge two known; one far left, one far right
335 335 | | | |
336 336 o | | | changeset: 21:d42a756af44d
337 337 |\ \ \ \ parent: 19:31ddc2c1573b
338 338 | | | | | parent: 20:d30ed6450e32
339 339 | | | | | user: test
340 340 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
341 341 | | | | | summary: (21) expand
342 342 | | | | |
343 343 | o---+-+ changeset: 20:d30ed6450e32
344 344 | | | | parent: 0:e6eb3150255d
345 345 | / / / parent: 18:1aa84d96232a
346 346 | | | | user: test
347 347 | | | | date: Thu Jan 01 00:00:20 1970 +0000
348 348 | | | | summary: (20) merge two known; two far right
349 349 | | | |
350 350 o | | | changeset: 19:31ddc2c1573b
351 351 |\ \ \ \ parent: 15:1dda3f72782d
352 352 | | | | | parent: 17:44765d7c06e0
353 353 | | | | | user: test
354 354 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
355 355 | | | | | summary: (19) expand
356 356 | | | | |
357 357 +---+---o changeset: 18:1aa84d96232a
358 358 | | | | parent: 1:6db2ef61d156
359 359 | | | | parent: 15:1dda3f72782d
360 360 | | | | user: test
361 361 | | | | date: Thu Jan 01 00:00:18 1970 +0000
362 362 | | | | summary: (18) merge two known; two far left
363 363 | | | |
364 364 | o | | changeset: 17:44765d7c06e0
365 365 | |\ \ \ parent: 12:86b91144a6e9
366 366 | | | | | parent: 16:3677d192927d
367 367 | | | | | user: test
368 368 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
369 369 | | | | | summary: (17) expand
370 370 | | | | |
371 371 | | o---+ changeset: 16:3677d192927d
372 372 | | | | | parent: 0:e6eb3150255d
373 373 | | |/ / parent: 1:6db2ef61d156
374 374 | | | | user: test
375 375 | | | | date: Thu Jan 01 00:00:16 1970 +0000
376 376 | | | | summary: (16) merge two known; one immediate right, one near right
377 377 | | | |
378 378 o | | | changeset: 15:1dda3f72782d
379 379 |\ \ \ \ parent: 13:22d8966a97e3
380 380 | | | | | parent: 14:8eac370358ef
381 381 | | | | | user: test
382 382 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
383 383 | | | | | summary: (15) expand
384 384 | | | | |
385 385 | o-----+ changeset: 14:8eac370358ef
386 386 | | | | | parent: 0:e6eb3150255d
387 387 | |/ / / parent: 12:86b91144a6e9
388 388 | | | | user: test
389 389 | | | | date: Thu Jan 01 00:00:14 1970 +0000
390 390 | | | | summary: (14) merge two known; one immediate right, one far right
391 391 | | | |
392 392 o | | | changeset: 13:22d8966a97e3
393 393 |\ \ \ \ parent: 9:7010c0af0a35
394 394 | | | | | parent: 11:832d76e6bdf2
395 395 | | | | | user: test
396 396 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
397 397 | | | | | summary: (13) expand
398 398 | | | | |
399 399 +---o | | changeset: 12:86b91144a6e9
400 400 | | |/ / parent: 1:6db2ef61d156
401 401 | | | | parent: 9:7010c0af0a35
402 402 | | | | user: test
403 403 | | | | date: Thu Jan 01 00:00:12 1970 +0000
404 404 | | | | summary: (12) merge two known; one immediate right, one far left
405 405 | | | |
406 406 | o | | changeset: 11:832d76e6bdf2
407 407 | |\ \ \ parent: 6:b105a072e251
408 408 | | | | | parent: 10:74c64d036d72
409 409 | | | | | user: test
410 410 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
411 411 | | | | | summary: (11) expand
412 412 | | | | |
413 413 | | o---+ changeset: 10:74c64d036d72
414 414 | | | | | parent: 0:e6eb3150255d
415 415 | |/ / / parent: 6:b105a072e251
416 416 | | | | user: test
417 417 | | | | date: Thu Jan 01 00:00:10 1970 +0000
418 418 | | | | summary: (10) merge two known; one immediate left, one near right
419 419 | | | |
420 420 o | | | changeset: 9:7010c0af0a35
421 421 |\ \ \ \ parent: 7:b632bb1b1224
422 422 | | | | | parent: 8:7a0b11f71937
423 423 | | | | | user: test
424 424 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
425 425 | | | | | summary: (9) expand
426 426 | | | | |
427 427 | o-----+ changeset: 8:7a0b11f71937
428 428 | | | | | parent: 0:e6eb3150255d
429 429 |/ / / / parent: 7:b632bb1b1224
430 430 | | | | user: test
431 431 | | | | date: Thu Jan 01 00:00:08 1970 +0000
432 432 | | | | summary: (8) merge two known; one immediate left, one far right
433 433 | | | |
434 434 o | | | changeset: 7:b632bb1b1224
435 435 |\ \ \ \ parent: 2:3d9a33b8d1e1
436 436 | | | | | parent: 5:4409d547b708
437 437 | | | | | user: test
438 438 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
439 439 | | | | | summary: (7) expand
440 440 | | | | |
441 441 +---o | | changeset: 6:b105a072e251
442 442 | |/ / / parent: 2:3d9a33b8d1e1
443 443 | | | | parent: 5:4409d547b708
444 444 | | | | user: test
445 445 | | | | date: Thu Jan 01 00:00:06 1970 +0000
446 446 | | | | summary: (6) merge two known; one immediate left, one far left
447 447 | | | |
448 448 | o | | changeset: 5:4409d547b708
449 449 | |\ \ \ parent: 3:27eef8ed80b4
450 450 | | | | | parent: 4:26a8bac39d9f
451 451 | | | | | user: test
452 452 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
453 453 | | | | | summary: (5) expand
454 454 | | | | |
455 455 | | o | | changeset: 4:26a8bac39d9f
456 456 | |/|/ / parent: 1:6db2ef61d156
457 457 | | | | parent: 3:27eef8ed80b4
458 458 | | | | user: test
459 459 | | | | date: Thu Jan 01 00:00:04 1970 +0000
460 460 | | | | summary: (4) merge two known; one immediate left, one immediate right
461 461 | | | |
462 462 | o | | changeset: 3:27eef8ed80b4
463 463 |/ / / user: test
464 464 | | | date: Thu Jan 01 00:00:03 1970 +0000
465 465 | | | summary: (3) collapse
466 466 | | |
467 467 o | | changeset: 2:3d9a33b8d1e1
468 468 |/ / user: test
469 469 | | date: Thu Jan 01 00:00:02 1970 +0000
470 470 | | summary: (2) collapse
471 471 | |
472 472 o | changeset: 1:6db2ef61d156
473 473 |/ user: test
474 474 | date: Thu Jan 01 00:00:01 1970 +0000
475 475 | summary: (1) collapse
476 476 |
477 477 o changeset: 0:e6eb3150255d
478 478 user: test
479 479 date: Thu Jan 01 00:00:00 1970 +0000
480 480 summary: (0) root
481 481
482 482
483 483 File glog:
484 484 $ hg log -G a
485 485 @ changeset: 34:fea3ac5810e0
486 486 | tag: tip
487 487 | parent: 32:d06dffa21a31
488 488 | user: test
489 489 | date: Thu Jan 01 00:00:34 1970 +0000
490 490 | summary: (34) head
491 491 |
492 492 | o changeset: 33:68608f5145f9
493 493 | | parent: 18:1aa84d96232a
494 494 | | user: test
495 495 | | date: Thu Jan 01 00:00:33 1970 +0000
496 496 | | summary: (33) head
497 497 | |
498 498 o | changeset: 32:d06dffa21a31
499 499 |\ \ parent: 27:886ed638191b
500 500 | | | parent: 31:621d83e11f67
501 501 | | | user: test
502 502 | | | date: Thu Jan 01 00:00:32 1970 +0000
503 503 | | | summary: (32) expand
504 504 | | |
505 505 | o | changeset: 31:621d83e11f67
506 506 | |\ \ parent: 21:d42a756af44d
507 507 | | | | parent: 30:6e11cd4b648f
508 508 | | | | user: test
509 509 | | | | date: Thu Jan 01 00:00:31 1970 +0000
510 510 | | | | summary: (31) expand
511 511 | | | |
512 512 | | o | changeset: 30:6e11cd4b648f
513 513 | | |\ \ parent: 28:44ecd0b9ae99
514 514 | | | | | parent: 29:cd9bb2be7593
515 515 | | | | | user: test
516 516 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
517 517 | | | | | summary: (30) expand
518 518 | | | | |
519 519 | | | o | changeset: 29:cd9bb2be7593
520 520 | | | | | parent: 0:e6eb3150255d
521 521 | | | | | user: test
522 522 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
523 523 | | | | | summary: (29) regular commit
524 524 | | | | |
525 525 | | o | | changeset: 28:44ecd0b9ae99
526 526 | | |\ \ \ parent: 1:6db2ef61d156
527 527 | | | | | | parent: 26:7f25b6c2f0b9
528 528 | | | | | | user: test
529 529 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
530 530 | | | | | | summary: (28) merge zero known
531 531 | | | | | |
532 532 o | | | | | changeset: 27:886ed638191b
533 533 |/ / / / / parent: 21:d42a756af44d
534 534 | | | | | user: test
535 535 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
536 536 | | | | | summary: (27) collapse
537 537 | | | | |
538 538 | | o---+ changeset: 26:7f25b6c2f0b9
539 539 | | | | | parent: 18:1aa84d96232a
540 540 | | | | | parent: 25:91da8ed57247
541 541 | | | | | user: test
542 542 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
543 543 | | | | | summary: (26) merge one known; far right
544 544 | | | | |
545 545 +---o | | changeset: 25:91da8ed57247
546 546 | | | | | parent: 21:d42a756af44d
547 547 | | | | | parent: 24:a9c19a3d96b7
548 548 | | | | | user: test
549 549 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
550 550 | | | | | summary: (25) merge one known; far left
551 551 | | | | |
552 552 | | o | | changeset: 24:a9c19a3d96b7
553 553 | | |\| | parent: 0:e6eb3150255d
554 554 | | | | | parent: 23:a01cddf0766d
555 555 | | | | | user: test
556 556 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
557 557 | | | | | summary: (24) merge one known; immediate right
558 558 | | | | |
559 559 | | o | | changeset: 23:a01cddf0766d
560 560 | |/| | | parent: 1:6db2ef61d156
561 561 | | | | | parent: 22:e0d9cccacb5d
562 562 | | | | | user: test
563 563 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
564 564 | | | | | summary: (23) merge one known; immediate left
565 565 | | | | |
566 566 +---o---+ changeset: 22:e0d9cccacb5d
567 567 | | | | parent: 18:1aa84d96232a
568 568 | | / / parent: 21:d42a756af44d
569 569 | | | | user: test
570 570 | | | | date: Thu Jan 01 00:00:22 1970 +0000
571 571 | | | | summary: (22) merge two known; one far left, one far right
572 572 | | | |
573 573 o | | | changeset: 21:d42a756af44d
574 574 |\ \ \ \ parent: 19:31ddc2c1573b
575 575 | | | | | parent: 20:d30ed6450e32
576 576 | | | | | user: test
577 577 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
578 578 | | | | | summary: (21) expand
579 579 | | | | |
580 580 | o---+-+ changeset: 20:d30ed6450e32
581 581 | | | | parent: 0:e6eb3150255d
582 582 | / / / parent: 18:1aa84d96232a
583 583 | | | | user: test
584 584 | | | | date: Thu Jan 01 00:00:20 1970 +0000
585 585 | | | | summary: (20) merge two known; two far right
586 586 | | | |
587 587 o | | | changeset: 19:31ddc2c1573b
588 588 |\ \ \ \ parent: 15:1dda3f72782d
589 589 | | | | | parent: 17:44765d7c06e0
590 590 | | | | | user: test
591 591 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
592 592 | | | | | summary: (19) expand
593 593 | | | | |
594 594 +---+---o changeset: 18:1aa84d96232a
595 595 | | | | parent: 1:6db2ef61d156
596 596 | | | | parent: 15:1dda3f72782d
597 597 | | | | user: test
598 598 | | | | date: Thu Jan 01 00:00:18 1970 +0000
599 599 | | | | summary: (18) merge two known; two far left
600 600 | | | |
601 601 | o | | changeset: 17:44765d7c06e0
602 602 | |\ \ \ parent: 12:86b91144a6e9
603 603 | | | | | parent: 16:3677d192927d
604 604 | | | | | user: test
605 605 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
606 606 | | | | | summary: (17) expand
607 607 | | | | |
608 608 | | o---+ changeset: 16:3677d192927d
609 609 | | | | | parent: 0:e6eb3150255d
610 610 | | |/ / parent: 1:6db2ef61d156
611 611 | | | | user: test
612 612 | | | | date: Thu Jan 01 00:00:16 1970 +0000
613 613 | | | | summary: (16) merge two known; one immediate right, one near right
614 614 | | | |
615 615 o | | | changeset: 15:1dda3f72782d
616 616 |\ \ \ \ parent: 13:22d8966a97e3
617 617 | | | | | parent: 14:8eac370358ef
618 618 | | | | | user: test
619 619 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
620 620 | | | | | summary: (15) expand
621 621 | | | | |
622 622 | o-----+ changeset: 14:8eac370358ef
623 623 | | | | | parent: 0:e6eb3150255d
624 624 | |/ / / parent: 12:86b91144a6e9
625 625 | | | | user: test
626 626 | | | | date: Thu Jan 01 00:00:14 1970 +0000
627 627 | | | | summary: (14) merge two known; one immediate right, one far right
628 628 | | | |
629 629 o | | | changeset: 13:22d8966a97e3
630 630 |\ \ \ \ parent: 9:7010c0af0a35
631 631 | | | | | parent: 11:832d76e6bdf2
632 632 | | | | | user: test
633 633 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
634 634 | | | | | summary: (13) expand
635 635 | | | | |
636 636 +---o | | changeset: 12:86b91144a6e9
637 637 | | |/ / parent: 1:6db2ef61d156
638 638 | | | | parent: 9:7010c0af0a35
639 639 | | | | user: test
640 640 | | | | date: Thu Jan 01 00:00:12 1970 +0000
641 641 | | | | summary: (12) merge two known; one immediate right, one far left
642 642 | | | |
643 643 | o | | changeset: 11:832d76e6bdf2
644 644 | |\ \ \ parent: 6:b105a072e251
645 645 | | | | | parent: 10:74c64d036d72
646 646 | | | | | user: test
647 647 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
648 648 | | | | | summary: (11) expand
649 649 | | | | |
650 650 | | o---+ changeset: 10:74c64d036d72
651 651 | | | | | parent: 0:e6eb3150255d
652 652 | |/ / / parent: 6:b105a072e251
653 653 | | | | user: test
654 654 | | | | date: Thu Jan 01 00:00:10 1970 +0000
655 655 | | | | summary: (10) merge two known; one immediate left, one near right
656 656 | | | |
657 657 o | | | changeset: 9:7010c0af0a35
658 658 |\ \ \ \ parent: 7:b632bb1b1224
659 659 | | | | | parent: 8:7a0b11f71937
660 660 | | | | | user: test
661 661 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
662 662 | | | | | summary: (9) expand
663 663 | | | | |
664 664 | o-----+ changeset: 8:7a0b11f71937
665 665 | | | | | parent: 0:e6eb3150255d
666 666 |/ / / / parent: 7:b632bb1b1224
667 667 | | | | user: test
668 668 | | | | date: Thu Jan 01 00:00:08 1970 +0000
669 669 | | | | summary: (8) merge two known; one immediate left, one far right
670 670 | | | |
671 671 o | | | changeset: 7:b632bb1b1224
672 672 |\ \ \ \ parent: 2:3d9a33b8d1e1
673 673 | | | | | parent: 5:4409d547b708
674 674 | | | | | user: test
675 675 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
676 676 | | | | | summary: (7) expand
677 677 | | | | |
678 678 +---o | | changeset: 6:b105a072e251
679 679 | |/ / / parent: 2:3d9a33b8d1e1
680 680 | | | | parent: 5:4409d547b708
681 681 | | | | user: test
682 682 | | | | date: Thu Jan 01 00:00:06 1970 +0000
683 683 | | | | summary: (6) merge two known; one immediate left, one far left
684 684 | | | |
685 685 | o | | changeset: 5:4409d547b708
686 686 | |\ \ \ parent: 3:27eef8ed80b4
687 687 | | | | | parent: 4:26a8bac39d9f
688 688 | | | | | user: test
689 689 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
690 690 | | | | | summary: (5) expand
691 691 | | | | |
692 692 | | o | | changeset: 4:26a8bac39d9f
693 693 | |/|/ / parent: 1:6db2ef61d156
694 694 | | | | parent: 3:27eef8ed80b4
695 695 | | | | user: test
696 696 | | | | date: Thu Jan 01 00:00:04 1970 +0000
697 697 | | | | summary: (4) merge two known; one immediate left, one immediate right
698 698 | | | |
699 699 | o | | changeset: 3:27eef8ed80b4
700 700 |/ / / user: test
701 701 | | | date: Thu Jan 01 00:00:03 1970 +0000
702 702 | | | summary: (3) collapse
703 703 | | |
704 704 o | | changeset: 2:3d9a33b8d1e1
705 705 |/ / user: test
706 706 | | date: Thu Jan 01 00:00:02 1970 +0000
707 707 | | summary: (2) collapse
708 708 | |
709 709 o | changeset: 1:6db2ef61d156
710 710 |/ user: test
711 711 | date: Thu Jan 01 00:00:01 1970 +0000
712 712 | summary: (1) collapse
713 713 |
714 714 o changeset: 0:e6eb3150255d
715 715 user: test
716 716 date: Thu Jan 01 00:00:00 1970 +0000
717 717 summary: (0) root
718 718
719 719
720 720 File glog per revset:
721 721
722 722 $ hg log -G -r 'file("a")'
723 723 @ changeset: 34:fea3ac5810e0
724 724 | tag: tip
725 725 | parent: 32:d06dffa21a31
726 726 | user: test
727 727 | date: Thu Jan 01 00:00:34 1970 +0000
728 728 | summary: (34) head
729 729 |
730 730 | o changeset: 33:68608f5145f9
731 731 | | parent: 18:1aa84d96232a
732 732 | | user: test
733 733 | | date: Thu Jan 01 00:00:33 1970 +0000
734 734 | | summary: (33) head
735 735 | |
736 736 o | changeset: 32:d06dffa21a31
737 737 |\ \ parent: 27:886ed638191b
738 738 | | | parent: 31:621d83e11f67
739 739 | | | user: test
740 740 | | | date: Thu Jan 01 00:00:32 1970 +0000
741 741 | | | summary: (32) expand
742 742 | | |
743 743 | o | changeset: 31:621d83e11f67
744 744 | |\ \ parent: 21:d42a756af44d
745 745 | | | | parent: 30:6e11cd4b648f
746 746 | | | | user: test
747 747 | | | | date: Thu Jan 01 00:00:31 1970 +0000
748 748 | | | | summary: (31) expand
749 749 | | | |
750 750 | | o | changeset: 30:6e11cd4b648f
751 751 | | |\ \ parent: 28:44ecd0b9ae99
752 752 | | | | | parent: 29:cd9bb2be7593
753 753 | | | | | user: test
754 754 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
755 755 | | | | | summary: (30) expand
756 756 | | | | |
757 757 | | | o | changeset: 29:cd9bb2be7593
758 758 | | | | | parent: 0:e6eb3150255d
759 759 | | | | | user: test
760 760 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
761 761 | | | | | summary: (29) regular commit
762 762 | | | | |
763 763 | | o | | changeset: 28:44ecd0b9ae99
764 764 | | |\ \ \ parent: 1:6db2ef61d156
765 765 | | | | | | parent: 26:7f25b6c2f0b9
766 766 | | | | | | user: test
767 767 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
768 768 | | | | | | summary: (28) merge zero known
769 769 | | | | | |
770 770 o | | | | | changeset: 27:886ed638191b
771 771 |/ / / / / parent: 21:d42a756af44d
772 772 | | | | | user: test
773 773 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
774 774 | | | | | summary: (27) collapse
775 775 | | | | |
776 776 | | o---+ changeset: 26:7f25b6c2f0b9
777 777 | | | | | parent: 18:1aa84d96232a
778 778 | | | | | parent: 25:91da8ed57247
779 779 | | | | | user: test
780 780 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
781 781 | | | | | summary: (26) merge one known; far right
782 782 | | | | |
783 783 +---o | | changeset: 25:91da8ed57247
784 784 | | | | | parent: 21:d42a756af44d
785 785 | | | | | parent: 24:a9c19a3d96b7
786 786 | | | | | user: test
787 787 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
788 788 | | | | | summary: (25) merge one known; far left
789 789 | | | | |
790 790 | | o | | changeset: 24:a9c19a3d96b7
791 791 | | |\| | parent: 0:e6eb3150255d
792 792 | | | | | parent: 23:a01cddf0766d
793 793 | | | | | user: test
794 794 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
795 795 | | | | | summary: (24) merge one known; immediate right
796 796 | | | | |
797 797 | | o | | changeset: 23:a01cddf0766d
798 798 | |/| | | parent: 1:6db2ef61d156
799 799 | | | | | parent: 22:e0d9cccacb5d
800 800 | | | | | user: test
801 801 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
802 802 | | | | | summary: (23) merge one known; immediate left
803 803 | | | | |
804 804 +---o---+ changeset: 22:e0d9cccacb5d
805 805 | | | | parent: 18:1aa84d96232a
806 806 | | / / parent: 21:d42a756af44d
807 807 | | | | user: test
808 808 | | | | date: Thu Jan 01 00:00:22 1970 +0000
809 809 | | | | summary: (22) merge two known; one far left, one far right
810 810 | | | |
811 811 o | | | changeset: 21:d42a756af44d
812 812 |\ \ \ \ parent: 19:31ddc2c1573b
813 813 | | | | | parent: 20:d30ed6450e32
814 814 | | | | | user: test
815 815 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
816 816 | | | | | summary: (21) expand
817 817 | | | | |
818 818 | o---+-+ changeset: 20:d30ed6450e32
819 819 | | | | parent: 0:e6eb3150255d
820 820 | / / / parent: 18:1aa84d96232a
821 821 | | | | user: test
822 822 | | | | date: Thu Jan 01 00:00:20 1970 +0000
823 823 | | | | summary: (20) merge two known; two far right
824 824 | | | |
825 825 o | | | changeset: 19:31ddc2c1573b
826 826 |\ \ \ \ parent: 15:1dda3f72782d
827 827 | | | | | parent: 17:44765d7c06e0
828 828 | | | | | user: test
829 829 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
830 830 | | | | | summary: (19) expand
831 831 | | | | |
832 832 +---+---o changeset: 18:1aa84d96232a
833 833 | | | | parent: 1:6db2ef61d156
834 834 | | | | parent: 15:1dda3f72782d
835 835 | | | | user: test
836 836 | | | | date: Thu Jan 01 00:00:18 1970 +0000
837 837 | | | | summary: (18) merge two known; two far left
838 838 | | | |
839 839 | o | | changeset: 17:44765d7c06e0
840 840 | |\ \ \ parent: 12:86b91144a6e9
841 841 | | | | | parent: 16:3677d192927d
842 842 | | | | | user: test
843 843 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
844 844 | | | | | summary: (17) expand
845 845 | | | | |
846 846 | | o---+ changeset: 16:3677d192927d
847 847 | | | | | parent: 0:e6eb3150255d
848 848 | | |/ / parent: 1:6db2ef61d156
849 849 | | | | user: test
850 850 | | | | date: Thu Jan 01 00:00:16 1970 +0000
851 851 | | | | summary: (16) merge two known; one immediate right, one near right
852 852 | | | |
853 853 o | | | changeset: 15:1dda3f72782d
854 854 |\ \ \ \ parent: 13:22d8966a97e3
855 855 | | | | | parent: 14:8eac370358ef
856 856 | | | | | user: test
857 857 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
858 858 | | | | | summary: (15) expand
859 859 | | | | |
860 860 | o-----+ changeset: 14:8eac370358ef
861 861 | | | | | parent: 0:e6eb3150255d
862 862 | |/ / / parent: 12:86b91144a6e9
863 863 | | | | user: test
864 864 | | | | date: Thu Jan 01 00:00:14 1970 +0000
865 865 | | | | summary: (14) merge two known; one immediate right, one far right
866 866 | | | |
867 867 o | | | changeset: 13:22d8966a97e3
868 868 |\ \ \ \ parent: 9:7010c0af0a35
869 869 | | | | | parent: 11:832d76e6bdf2
870 870 | | | | | user: test
871 871 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
872 872 | | | | | summary: (13) expand
873 873 | | | | |
874 874 +---o | | changeset: 12:86b91144a6e9
875 875 | | |/ / parent: 1:6db2ef61d156
876 876 | | | | parent: 9:7010c0af0a35
877 877 | | | | user: test
878 878 | | | | date: Thu Jan 01 00:00:12 1970 +0000
879 879 | | | | summary: (12) merge two known; one immediate right, one far left
880 880 | | | |
881 881 | o | | changeset: 11:832d76e6bdf2
882 882 | |\ \ \ parent: 6:b105a072e251
883 883 | | | | | parent: 10:74c64d036d72
884 884 | | | | | user: test
885 885 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
886 886 | | | | | summary: (11) expand
887 887 | | | | |
888 888 | | o---+ changeset: 10:74c64d036d72
889 889 | | | | | parent: 0:e6eb3150255d
890 890 | |/ / / parent: 6:b105a072e251
891 891 | | | | user: test
892 892 | | | | date: Thu Jan 01 00:00:10 1970 +0000
893 893 | | | | summary: (10) merge two known; one immediate left, one near right
894 894 | | | |
895 895 o | | | changeset: 9:7010c0af0a35
896 896 |\ \ \ \ parent: 7:b632bb1b1224
897 897 | | | | | parent: 8:7a0b11f71937
898 898 | | | | | user: test
899 899 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
900 900 | | | | | summary: (9) expand
901 901 | | | | |
902 902 | o-----+ changeset: 8:7a0b11f71937
903 903 | | | | | parent: 0:e6eb3150255d
904 904 |/ / / / parent: 7:b632bb1b1224
905 905 | | | | user: test
906 906 | | | | date: Thu Jan 01 00:00:08 1970 +0000
907 907 | | | | summary: (8) merge two known; one immediate left, one far right
908 908 | | | |
909 909 o | | | changeset: 7:b632bb1b1224
910 910 |\ \ \ \ parent: 2:3d9a33b8d1e1
911 911 | | | | | parent: 5:4409d547b708
912 912 | | | | | user: test
913 913 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
914 914 | | | | | summary: (7) expand
915 915 | | | | |
916 916 +---o | | changeset: 6:b105a072e251
917 917 | |/ / / parent: 2:3d9a33b8d1e1
918 918 | | | | parent: 5:4409d547b708
919 919 | | | | user: test
920 920 | | | | date: Thu Jan 01 00:00:06 1970 +0000
921 921 | | | | summary: (6) merge two known; one immediate left, one far left
922 922 | | | |
923 923 | o | | changeset: 5:4409d547b708
924 924 | |\ \ \ parent: 3:27eef8ed80b4
925 925 | | | | | parent: 4:26a8bac39d9f
926 926 | | | | | user: test
927 927 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
928 928 | | | | | summary: (5) expand
929 929 | | | | |
930 930 | | o | | changeset: 4:26a8bac39d9f
931 931 | |/|/ / parent: 1:6db2ef61d156
932 932 | | | | parent: 3:27eef8ed80b4
933 933 | | | | user: test
934 934 | | | | date: Thu Jan 01 00:00:04 1970 +0000
935 935 | | | | summary: (4) merge two known; one immediate left, one immediate right
936 936 | | | |
937 937 | o | | changeset: 3:27eef8ed80b4
938 938 |/ / / user: test
939 939 | | | date: Thu Jan 01 00:00:03 1970 +0000
940 940 | | | summary: (3) collapse
941 941 | | |
942 942 o | | changeset: 2:3d9a33b8d1e1
943 943 |/ / user: test
944 944 | | date: Thu Jan 01 00:00:02 1970 +0000
945 945 | | summary: (2) collapse
946 946 | |
947 947 o | changeset: 1:6db2ef61d156
948 948 |/ user: test
949 949 | date: Thu Jan 01 00:00:01 1970 +0000
950 950 | summary: (1) collapse
951 951 |
952 952 o changeset: 0:e6eb3150255d
953 953 user: test
954 954 date: Thu Jan 01 00:00:00 1970 +0000
955 955 summary: (0) root
956 956
957 957
958 958
959 959 File glog per revset (only merges):
960 960
961 961 $ hg log -G -r 'file("a")' -m
962 962 o changeset: 32:d06dffa21a31
963 963 |\ parent: 27:886ed638191b
964 964 | : parent: 31:621d83e11f67
965 965 | : user: test
966 966 | : date: Thu Jan 01 00:00:32 1970 +0000
967 967 | : summary: (32) expand
968 968 | :
969 969 o : changeset: 31:621d83e11f67
970 970 |\: parent: 21:d42a756af44d
971 971 | : parent: 30:6e11cd4b648f
972 972 | : user: test
973 973 | : date: Thu Jan 01 00:00:31 1970 +0000
974 974 | : summary: (31) expand
975 975 | :
976 976 o : changeset: 30:6e11cd4b648f
977 977 |\ \ parent: 28:44ecd0b9ae99
978 978 | ~ : parent: 29:cd9bb2be7593
979 979 | : user: test
980 980 | : date: Thu Jan 01 00:00:30 1970 +0000
981 981 | : summary: (30) expand
982 982 | /
983 983 o : changeset: 28:44ecd0b9ae99
984 984 |\ \ parent: 1:6db2ef61d156
985 985 | ~ : parent: 26:7f25b6c2f0b9
986 986 | : user: test
987 987 | : date: Thu Jan 01 00:00:28 1970 +0000
988 988 | : summary: (28) merge zero known
989 989 | /
990 990 o : changeset: 26:7f25b6c2f0b9
991 991 |\ \ parent: 18:1aa84d96232a
992 992 | | : parent: 25:91da8ed57247
993 993 | | : user: test
994 994 | | : date: Thu Jan 01 00:00:26 1970 +0000
995 995 | | : summary: (26) merge one known; far right
996 996 | | :
997 997 | o : changeset: 25:91da8ed57247
998 998 | |\: parent: 21:d42a756af44d
999 999 | | : parent: 24:a9c19a3d96b7
1000 1000 | | : user: test
1001 1001 | | : date: Thu Jan 01 00:00:25 1970 +0000
1002 1002 | | : summary: (25) merge one known; far left
1003 1003 | | :
1004 1004 | o : changeset: 24:a9c19a3d96b7
1005 1005 | |\ \ parent: 0:e6eb3150255d
1006 1006 | | ~ : parent: 23:a01cddf0766d
1007 1007 | | : user: test
1008 1008 | | : date: Thu Jan 01 00:00:24 1970 +0000
1009 1009 | | : summary: (24) merge one known; immediate right
1010 1010 | | /
1011 1011 | o : changeset: 23:a01cddf0766d
1012 1012 | |\ \ parent: 1:6db2ef61d156
1013 1013 | | ~ : parent: 22:e0d9cccacb5d
1014 1014 | | : user: test
1015 1015 | | : date: Thu Jan 01 00:00:23 1970 +0000
1016 1016 | | : summary: (23) merge one known; immediate left
1017 1017 | | /
1018 1018 | o : changeset: 22:e0d9cccacb5d
1019 1019 |/:/ parent: 18:1aa84d96232a
1020 1020 | : parent: 21:d42a756af44d
1021 1021 | : user: test
1022 1022 | : date: Thu Jan 01 00:00:22 1970 +0000
1023 1023 | : summary: (22) merge two known; one far left, one far right
1024 1024 | :
1025 1025 | o changeset: 21:d42a756af44d
1026 1026 | |\ parent: 19:31ddc2c1573b
1027 1027 | | | parent: 20:d30ed6450e32
1028 1028 | | | user: test
1029 1029 | | | date: Thu Jan 01 00:00:21 1970 +0000
1030 1030 | | | summary: (21) expand
1031 1031 | | |
1032 1032 +---o changeset: 20:d30ed6450e32
1033 1033 | | | parent: 0:e6eb3150255d
1034 1034 | | ~ parent: 18:1aa84d96232a
1035 1035 | | user: test
1036 1036 | | date: Thu Jan 01 00:00:20 1970 +0000
1037 1037 | | summary: (20) merge two known; two far right
1038 1038 | |
1039 1039 | o changeset: 19:31ddc2c1573b
1040 1040 | |\ parent: 15:1dda3f72782d
1041 1041 | | | parent: 17:44765d7c06e0
1042 1042 | | | user: test
1043 1043 | | | date: Thu Jan 01 00:00:19 1970 +0000
1044 1044 | | | summary: (19) expand
1045 1045 | | |
1046 1046 o | | changeset: 18:1aa84d96232a
1047 1047 |\| | parent: 1:6db2ef61d156
1048 1048 ~ | | parent: 15:1dda3f72782d
1049 1049 | | user: test
1050 1050 | | date: Thu Jan 01 00:00:18 1970 +0000
1051 1051 | | summary: (18) merge two known; two far left
1052 1052 / /
1053 1053 | o changeset: 17:44765d7c06e0
1054 1054 | |\ parent: 12:86b91144a6e9
1055 1055 | | | parent: 16:3677d192927d
1056 1056 | | | user: test
1057 1057 | | | date: Thu Jan 01 00:00:17 1970 +0000
1058 1058 | | | summary: (17) expand
1059 1059 | | |
1060 1060 | | o changeset: 16:3677d192927d
1061 1061 | | |\ parent: 0:e6eb3150255d
1062 1062 | | ~ ~ parent: 1:6db2ef61d156
1063 1063 | | user: test
1064 1064 | | date: Thu Jan 01 00:00:16 1970 +0000
1065 1065 | | summary: (16) merge two known; one immediate right, one near right
1066 1066 | |
1067 1067 o | changeset: 15:1dda3f72782d
1068 1068 |\ \ parent: 13:22d8966a97e3
1069 1069 | | | parent: 14:8eac370358ef
1070 1070 | | | user: test
1071 1071 | | | date: Thu Jan 01 00:00:15 1970 +0000
1072 1072 | | | summary: (15) expand
1073 1073 | | |
1074 1074 | o | changeset: 14:8eac370358ef
1075 1075 | |\| parent: 0:e6eb3150255d
1076 1076 | ~ | parent: 12:86b91144a6e9
1077 1077 | | user: test
1078 1078 | | date: Thu Jan 01 00:00:14 1970 +0000
1079 1079 | | summary: (14) merge two known; one immediate right, one far right
1080 1080 | /
1081 1081 o | changeset: 13:22d8966a97e3
1082 1082 |\ \ parent: 9:7010c0af0a35
1083 1083 | | | parent: 11:832d76e6bdf2
1084 1084 | | | user: test
1085 1085 | | | date: Thu Jan 01 00:00:13 1970 +0000
1086 1086 | | | summary: (13) expand
1087 1087 | | |
1088 1088 +---o changeset: 12:86b91144a6e9
1089 1089 | | | parent: 1:6db2ef61d156
1090 1090 | | ~ parent: 9:7010c0af0a35
1091 1091 | | user: test
1092 1092 | | date: Thu Jan 01 00:00:12 1970 +0000
1093 1093 | | summary: (12) merge two known; one immediate right, one far left
1094 1094 | |
1095 1095 | o changeset: 11:832d76e6bdf2
1096 1096 | |\ parent: 6:b105a072e251
1097 1097 | | | parent: 10:74c64d036d72
1098 1098 | | | user: test
1099 1099 | | | date: Thu Jan 01 00:00:11 1970 +0000
1100 1100 | | | summary: (11) expand
1101 1101 | | |
1102 1102 | | o changeset: 10:74c64d036d72
1103 1103 | |/| parent: 0:e6eb3150255d
1104 1104 | | ~ parent: 6:b105a072e251
1105 1105 | | user: test
1106 1106 | | date: Thu Jan 01 00:00:10 1970 +0000
1107 1107 | | summary: (10) merge two known; one immediate left, one near right
1108 1108 | |
1109 1109 o | changeset: 9:7010c0af0a35
1110 1110 |\ \ parent: 7:b632bb1b1224
1111 1111 | | | parent: 8:7a0b11f71937
1112 1112 | | | user: test
1113 1113 | | | date: Thu Jan 01 00:00:09 1970 +0000
1114 1114 | | | summary: (9) expand
1115 1115 | | |
1116 1116 | o | changeset: 8:7a0b11f71937
1117 1117 |/| | parent: 0:e6eb3150255d
1118 1118 | ~ | parent: 7:b632bb1b1224
1119 1119 | | user: test
1120 1120 | | date: Thu Jan 01 00:00:08 1970 +0000
1121 1121 | | summary: (8) merge two known; one immediate left, one far right
1122 1122 | /
1123 1123 o | changeset: 7:b632bb1b1224
1124 1124 |\ \ parent: 2:3d9a33b8d1e1
1125 1125 | ~ | parent: 5:4409d547b708
1126 1126 | | user: test
1127 1127 | | date: Thu Jan 01 00:00:07 1970 +0000
1128 1128 | | summary: (7) expand
1129 1129 | /
1130 1130 | o changeset: 6:b105a072e251
1131 1131 |/| parent: 2:3d9a33b8d1e1
1132 1132 | ~ parent: 5:4409d547b708
1133 1133 | user: test
1134 1134 | date: Thu Jan 01 00:00:06 1970 +0000
1135 1135 | summary: (6) merge two known; one immediate left, one far left
1136 1136 |
1137 1137 o changeset: 5:4409d547b708
1138 1138 |\ parent: 3:27eef8ed80b4
1139 1139 | ~ parent: 4:26a8bac39d9f
1140 1140 | user: test
1141 1141 | date: Thu Jan 01 00:00:05 1970 +0000
1142 1142 | summary: (5) expand
1143 1143 |
1144 1144 o changeset: 4:26a8bac39d9f
1145 1145 |\ parent: 1:6db2ef61d156
1146 1146 ~ ~ parent: 3:27eef8ed80b4
1147 1147 user: test
1148 1148 date: Thu Jan 01 00:00:04 1970 +0000
1149 1149 summary: (4) merge two known; one immediate left, one immediate right
1150 1150
1151 1151
1152 1152
1153 1153 Empty revision range - display nothing:
1154 1154 $ hg log -G -r 1..0
1155 1155
1156 1156 $ cd ..
1157 1157
1158 1158 #if no-outer-repo
1159 1159
1160 1160 From outer space:
1161 1161 $ hg log -G -l1 repo
1162 1162 @ changeset: 34:fea3ac5810e0
1163 1163 | tag: tip
1164 1164 ~ parent: 32:d06dffa21a31
1165 1165 user: test
1166 1166 date: Thu Jan 01 00:00:34 1970 +0000
1167 1167 summary: (34) head
1168 1168
1169 1169 $ hg log -G -l1 repo/a
1170 1170 @ changeset: 34:fea3ac5810e0
1171 1171 | tag: tip
1172 1172 ~ parent: 32:d06dffa21a31
1173 1173 user: test
1174 1174 date: Thu Jan 01 00:00:34 1970 +0000
1175 1175 summary: (34) head
1176 1176
1177 1177 $ hg log -G -l1 repo/missing
1178 1178
1179 1179 #endif
1180 1180
1181 1181 File log with revs != cset revs:
1182 1182 $ hg init flog
1183 1183 $ cd flog
1184 1184 $ echo one >one
1185 1185 $ hg add one
1186 1186 $ hg commit -mone
1187 1187 $ echo two >two
1188 1188 $ hg add two
1189 1189 $ hg commit -mtwo
1190 1190 $ echo more >two
1191 1191 $ hg commit -mmore
1192 1192 $ hg log -G two
1193 1193 @ changeset: 2:12c28321755b
1194 1194 | tag: tip
1195 1195 | user: test
1196 1196 | date: Thu Jan 01 00:00:00 1970 +0000
1197 1197 | summary: more
1198 1198 |
1199 1199 o changeset: 1:5ac72c0599bf
1200 1200 | user: test
1201 1201 ~ date: Thu Jan 01 00:00:00 1970 +0000
1202 1202 summary: two
1203 1203
1204 1204
1205 1205 Issue1896: File log with explicit style
1206 1206 $ hg log -G --style=default one
1207 1207 o changeset: 0:3d578b4a1f53
1208 1208 user: test
1209 1209 date: Thu Jan 01 00:00:00 1970 +0000
1210 1210 summary: one
1211 1211
1212 1212 Issue2395: glog --style header and footer
1213 1213 $ hg log -G --style=xml one
1214 1214 <?xml version="1.0"?>
1215 1215 <log>
1216 1216 o <logentry revision="0" node="3d578b4a1f537d5fcf7301bfa9c0b97adfaa6fb1">
1217 1217 <author email="test">test</author>
1218 1218 <date>1970-01-01T00:00:00+00:00</date>
1219 1219 <msg xml:space="preserve">one</msg>
1220 1220 </logentry>
1221 1221 </log>
1222 1222
1223 1223 $ cd ..
1224 1224
1225 1225 Incoming and outgoing:
1226 1226
1227 1227 $ hg clone -U -r31 repo repo2
1228 1228 adding changesets
1229 1229 adding manifests
1230 1230 adding file changes
1231 1231 added 31 changesets with 31 changes to 1 files
1232 1232 new changesets e6eb3150255d:621d83e11f67
1233 1233 $ cd repo2
1234 1234
1235 1235 $ hg incoming --graph ../repo
1236 1236 comparing with ../repo
1237 1237 searching for changes
1238 1238 o changeset: 34:fea3ac5810e0
1239 1239 | tag: tip
1240 1240 | parent: 32:d06dffa21a31
1241 1241 | user: test
1242 1242 | date: Thu Jan 01 00:00:34 1970 +0000
1243 1243 | summary: (34) head
1244 1244 |
1245 1245 | o changeset: 33:68608f5145f9
1246 1246 | parent: 18:1aa84d96232a
1247 1247 | user: test
1248 1248 | date: Thu Jan 01 00:00:33 1970 +0000
1249 1249 | summary: (33) head
1250 1250 |
1251 1251 o changeset: 32:d06dffa21a31
1252 1252 | parent: 27:886ed638191b
1253 1253 | parent: 31:621d83e11f67
1254 1254 | user: test
1255 1255 | date: Thu Jan 01 00:00:32 1970 +0000
1256 1256 | summary: (32) expand
1257 1257 |
1258 1258 o changeset: 27:886ed638191b
1259 1259 parent: 21:d42a756af44d
1260 1260 user: test
1261 1261 date: Thu Jan 01 00:00:27 1970 +0000
1262 1262 summary: (27) collapse
1263 1263
1264 1264 $ cd ..
1265 1265
1266 1266 $ hg -R repo outgoing --graph repo2
1267 1267 comparing with repo2
1268 1268 searching for changes
1269 1269 @ changeset: 34:fea3ac5810e0
1270 1270 | tag: tip
1271 1271 | parent: 32:d06dffa21a31
1272 1272 | user: test
1273 1273 | date: Thu Jan 01 00:00:34 1970 +0000
1274 1274 | summary: (34) head
1275 1275 |
1276 1276 | o changeset: 33:68608f5145f9
1277 1277 | parent: 18:1aa84d96232a
1278 1278 | user: test
1279 1279 | date: Thu Jan 01 00:00:33 1970 +0000
1280 1280 | summary: (33) head
1281 1281 |
1282 1282 o changeset: 32:d06dffa21a31
1283 1283 | parent: 27:886ed638191b
1284 1284 | parent: 31:621d83e11f67
1285 1285 | user: test
1286 1286 | date: Thu Jan 01 00:00:32 1970 +0000
1287 1287 | summary: (32) expand
1288 1288 |
1289 1289 o changeset: 27:886ed638191b
1290 1290 parent: 21:d42a756af44d
1291 1291 user: test
1292 1292 date: Thu Jan 01 00:00:27 1970 +0000
1293 1293 summary: (27) collapse
1294 1294
1295 1295
1296 1296 File + limit with revs != cset revs:
1297 1297 $ cd repo
1298 1298 $ touch b
1299 1299 $ hg ci -Aqm0
1300 1300 $ hg log -G -l2 a
1301 1301 o changeset: 34:fea3ac5810e0
1302 1302 | parent: 32:d06dffa21a31
1303 1303 ~ user: test
1304 1304 date: Thu Jan 01 00:00:34 1970 +0000
1305 1305 summary: (34) head
1306 1306
1307 1307 o changeset: 33:68608f5145f9
1308 1308 | parent: 18:1aa84d96232a
1309 1309 ~ user: test
1310 1310 date: Thu Jan 01 00:00:33 1970 +0000
1311 1311 summary: (33) head
1312 1312
1313 1313
1314 1314 File + limit + -ra:b, (b - a) < limit:
1315 1315 $ hg log -G -l3000 -r32:tip a
1316 1316 o changeset: 34:fea3ac5810e0
1317 1317 | parent: 32:d06dffa21a31
1318 1318 | user: test
1319 1319 | date: Thu Jan 01 00:00:34 1970 +0000
1320 1320 | summary: (34) head
1321 1321 |
1322 1322 | o changeset: 33:68608f5145f9
1323 1323 | | parent: 18:1aa84d96232a
1324 1324 | ~ user: test
1325 1325 | date: Thu Jan 01 00:00:33 1970 +0000
1326 1326 | summary: (33) head
1327 1327 |
1328 1328 o changeset: 32:d06dffa21a31
1329 1329 |\ parent: 27:886ed638191b
1330 1330 ~ ~ parent: 31:621d83e11f67
1331 1331 user: test
1332 1332 date: Thu Jan 01 00:00:32 1970 +0000
1333 1333 summary: (32) expand
1334 1334
1335 1335
1336 1336 Point out a common and an uncommon unshown parent
1337 1337
1338 1338 $ hg log -G -r 'rev(8) or rev(9)'
1339 1339 o changeset: 9:7010c0af0a35
1340 1340 |\ parent: 7:b632bb1b1224
1341 1341 | ~ parent: 8:7a0b11f71937
1342 1342 | user: test
1343 1343 | date: Thu Jan 01 00:00:09 1970 +0000
1344 1344 | summary: (9) expand
1345 1345 |
1346 1346 o changeset: 8:7a0b11f71937
1347 1347 |\ parent: 0:e6eb3150255d
1348 1348 ~ ~ parent: 7:b632bb1b1224
1349 1349 user: test
1350 1350 date: Thu Jan 01 00:00:08 1970 +0000
1351 1351 summary: (8) merge two known; one immediate left, one far right
1352 1352
1353 1353
1354 1354 File + limit + -ra:b, b < tip:
1355 1355
1356 1356 $ hg log -G -l1 -r32:34 a
1357 1357 o changeset: 34:fea3ac5810e0
1358 1358 | parent: 32:d06dffa21a31
1359 1359 ~ user: test
1360 1360 date: Thu Jan 01 00:00:34 1970 +0000
1361 1361 summary: (34) head
1362 1362
1363 1363
1364 1364 file(File) + limit + -ra:b, b < tip:
1365 1365
1366 1366 $ hg log -G -l1 -r32:34 -r 'file("a")'
1367 1367 o changeset: 34:fea3ac5810e0
1368 1368 | parent: 32:d06dffa21a31
1369 1369 ~ user: test
1370 1370 date: Thu Jan 01 00:00:34 1970 +0000
1371 1371 summary: (34) head
1372 1372
1373 1373
1374 1374 limit(file(File) and a::b), b < tip:
1375 1375
1376 1376 $ hg log -G -r 'limit(file("a") and 32::34, 1)'
1377 1377 o changeset: 32:d06dffa21a31
1378 1378 |\ parent: 27:886ed638191b
1379 1379 ~ ~ parent: 31:621d83e11f67
1380 1380 user: test
1381 1381 date: Thu Jan 01 00:00:32 1970 +0000
1382 1382 summary: (32) expand
1383 1383
1384 1384
1385 1385 File + limit + -ra:b, b < tip:
1386 1386
1387 1387 $ hg log -G -r 'limit(file("a") and 34::32, 1)'
1388 1388
1389 1389 File + limit + -ra:b, b < tip, (b - a) < limit:
1390 1390
1391 1391 $ hg log -G -l10 -r33:34 a
1392 1392 o changeset: 34:fea3ac5810e0
1393 1393 | parent: 32:d06dffa21a31
1394 1394 ~ user: test
1395 1395 date: Thu Jan 01 00:00:34 1970 +0000
1396 1396 summary: (34) head
1397 1397
1398 1398 o changeset: 33:68608f5145f9
1399 1399 | parent: 18:1aa84d96232a
1400 1400 ~ user: test
1401 1401 date: Thu Jan 01 00:00:33 1970 +0000
1402 1402 summary: (33) head
1403 1403
1404 1404
1405 1405 Do not crash or produce strange graphs if history is buggy
1406 1406
1407 1407 $ hg branch branch
1408 1408 marked working directory as branch branch
1409 1409 (branches are permanent and global, did you want a bookmark?)
1410 1410 $ commit 36 "buggy merge: identical parents" 35 35
1411 1411 $ hg log -G -l5
1412 1412 @ changeset: 36:08a19a744424
1413 1413 | branch: branch
1414 1414 | tag: tip
1415 1415 | parent: 35:9159c3644c5e
1416 1416 | parent: 35:9159c3644c5e
1417 1417 | user: test
1418 1418 | date: Thu Jan 01 00:00:36 1970 +0000
1419 1419 | summary: (36) buggy merge: identical parents
1420 1420 |
1421 1421 o changeset: 35:9159c3644c5e
1422 1422 | user: test
1423 1423 | date: Thu Jan 01 00:00:00 1970 +0000
1424 1424 | summary: 0
1425 1425 |
1426 1426 o changeset: 34:fea3ac5810e0
1427 1427 | parent: 32:d06dffa21a31
1428 1428 | user: test
1429 1429 | date: Thu Jan 01 00:00:34 1970 +0000
1430 1430 | summary: (34) head
1431 1431 |
1432 1432 | o changeset: 33:68608f5145f9
1433 1433 | | parent: 18:1aa84d96232a
1434 1434 | ~ user: test
1435 1435 | date: Thu Jan 01 00:00:33 1970 +0000
1436 1436 | summary: (33) head
1437 1437 |
1438 1438 o changeset: 32:d06dffa21a31
1439 1439 |\ parent: 27:886ed638191b
1440 1440 ~ ~ parent: 31:621d83e11f67
1441 1441 user: test
1442 1442 date: Thu Jan 01 00:00:32 1970 +0000
1443 1443 summary: (32) expand
1444 1444
1445 1445
1446 1446 Test log -G options
1447 1447
1448 1448 $ testlog() {
1449 1449 > hg log -G --print-revset "$@"
1450 1450 > hg log --template 'nodetag {rev}\n' "$@" | grep nodetag \
1451 1451 > | sed 's/.*nodetag/nodetag/' > log.nodes
1452 1452 > hg log -G --template 'nodetag {rev}\n' "$@" | grep nodetag \
1453 1453 > | sed 's/.*nodetag/nodetag/' > glog.nodes
1454 1454 > (cmp log.nodes glog.nodes || diff -u log.nodes glog.nodes) \
1455 1455 > | grep '^[-+@ ]' || :
1456 1456 > }
1457 1457
1458 1458 glog always reorders nodes which explains the difference with log
1459 1459
1460 1460 $ testlog -r 27 -r 25 -r 21 -r 34 -r 32 -r 31
1461 1461 ['27', '25', '21', '34', '32', '31']
1462 1462 []
1463 1463 <baseset- [21, 25, 27, 31, 32, 34]>
1464 1464 --- log.nodes * (glob)
1465 1465 +++ glog.nodes * (glob)
1466 1466 @@ -1,6 +1,6 @@
1467 1467 -nodetag 27
1468 1468 -nodetag 25
1469 1469 -nodetag 21
1470 1470 nodetag 34
1471 1471 nodetag 32
1472 1472 nodetag 31
1473 1473 +nodetag 27
1474 1474 +nodetag 25
1475 1475 +nodetag 21
1476 1476 $ testlog -u test -u not-a-user
1477 1477 []
1478 1478 (or
1479 1479 (list
1480 1480 (func
1481 1481 (symbol 'user')
1482 1482 (string 'test'))
1483 1483 (func
1484 1484 (symbol 'user')
1485 1485 (string 'not-a-user'))))
1486 1486 <filteredset
1487 1487 <spanset- 0:37>,
1488 1488 <addset
1489 1489 <filteredset
1490 1490 <fullreposet+ 0:37>,
1491 1491 <user 'test'>>,
1492 1492 <filteredset
1493 1493 <fullreposet+ 0:37>,
1494 1494 <user 'not-a-user'>>>>
1495 1495 $ testlog -b not-a-branch
1496 1496 abort: unknown revision 'not-a-branch'!
1497 1497 abort: unknown revision 'not-a-branch'!
1498 1498 abort: unknown revision 'not-a-branch'!
1499 1499 $ testlog -b 35 -b 36 --only-branch branch
1500 1500 []
1501 1501 (or
1502 1502 (list
1503 1503 (func
1504 1504 (symbol 'branch')
1505 1505 (string 'default'))
1506 1506 (or
1507 1507 (list
1508 1508 (func
1509 1509 (symbol 'branch')
1510 1510 (string 'branch'))
1511 1511 (func
1512 1512 (symbol 'branch')
1513 1513 (string 'branch'))))))
1514 1514 <filteredset
1515 1515 <spanset- 0:37>,
1516 1516 <addset
1517 1517 <filteredset
1518 1518 <fullreposet+ 0:37>,
1519 1519 <branch 'default'>>,
1520 1520 <addset
1521 1521 <filteredset
1522 1522 <fullreposet+ 0:37>,
1523 1523 <branch 'branch'>>,
1524 1524 <filteredset
1525 1525 <fullreposet+ 0:37>,
1526 1526 <branch 'branch'>>>>>
1527 1527 $ testlog -k expand -k merge
1528 1528 []
1529 1529 (or
1530 1530 (list
1531 1531 (func
1532 1532 (symbol 'keyword')
1533 1533 (string 'expand'))
1534 1534 (func
1535 1535 (symbol 'keyword')
1536 1536 (string 'merge'))))
1537 1537 <filteredset
1538 1538 <spanset- 0:37>,
1539 1539 <addset
1540 1540 <filteredset
1541 1541 <fullreposet+ 0:37>,
1542 1542 <keyword 'expand'>>,
1543 1543 <filteredset
1544 1544 <fullreposet+ 0:37>,
1545 1545 <keyword 'merge'>>>>
1546 1546 $ testlog --only-merges
1547 1547 []
1548 1548 (func
1549 1549 (symbol 'merge')
1550 1550 None)
1551 1551 <filteredset
1552 1552 <spanset- 0:37>,
1553 1553 <merge>>
1554 1554 $ testlog --no-merges
1555 1555 []
1556 1556 (not
1557 1557 (func
1558 1558 (symbol 'merge')
1559 1559 None))
1560 1560 <filteredset
1561 1561 <spanset- 0:37>,
1562 1562 <not
1563 1563 <filteredset
1564 1564 <spanset- 0:37>,
1565 1565 <merge>>>>
1566 1566 $ testlog --date '2 0 to 4 0'
1567 1567 []
1568 1568 (func
1569 1569 (symbol 'date')
1570 1570 (string '2 0 to 4 0'))
1571 1571 <filteredset
1572 1572 <spanset- 0:37>,
1573 1573 <date '2 0 to 4 0'>>
1574 1574 $ hg log -G -d 'brace ) in a date'
1575 1575 hg: parse error: invalid date: 'brace ) in a date'
1576 1576 [255]
1577 1577 $ testlog --prune 31 --prune 32
1578 1578 []
1579 1579 (not
1580 1580 (or
1581 1581 (list
1582 1582 (func
1583 1583 (symbol 'ancestors')
1584 1584 (string '31'))
1585 1585 (func
1586 1586 (symbol 'ancestors')
1587 1587 (string '32')))))
1588 1588 <filteredset
1589 1589 <spanset- 0:37>,
1590 1590 <not
1591 1591 <addset
1592 1592 <filteredset
1593 1593 <spanset- 0:37>,
1594 1594 <generatorsetdesc+>>,
1595 1595 <filteredset
1596 1596 <spanset- 0:37>,
1597 1597 <generatorsetdesc+>>>>>
1598 1598
1599 1599 Dedicated repo for --follow and paths filtering. The g is crafted to
1600 1600 have 2 filelog topological heads in a linear changeset graph.
1601 1601
1602 1602 $ cd ..
1603 1603 $ hg init follow
1604 1604 $ cd follow
1605 1605 $ testlog --follow
1606 1606 []
1607 1607 []
1608 1608 <baseset []>
1609 1609 $ testlog -rnull
1610 1610 ['null']
1611 1611 []
1612 1612 <baseset [-1]>
1613 1613 $ echo a > a
1614 1614 $ echo aa > aa
1615 1615 $ echo f > f
1616 1616 $ hg ci -Am "add a" a aa f
1617 1617 $ hg cp a b
1618 1618 $ hg cp f g
1619 1619 $ hg ci -m "copy a b"
1620 1620 $ mkdir dir
1621 1621 $ hg mv b dir
1622 1622 $ echo g >> g
1623 1623 $ echo f >> f
1624 1624 $ hg ci -m "mv b dir/b"
1625 1625 $ hg mv a b
1626 1626 $ hg cp -f f g
1627 1627 $ echo a > d
1628 1628 $ hg add d
1629 1629 $ hg ci -m "mv a b; add d"
1630 1630 $ hg mv dir/b e
1631 1631 $ hg ci -m "mv dir/b e"
1632 1632 $ hg log -G --template '({rev}) {desc|firstline}\n'
1633 1633 @ (4) mv dir/b e
1634 1634 |
1635 1635 o (3) mv a b; add d
1636 1636 |
1637 1637 o (2) mv b dir/b
1638 1638 |
1639 1639 o (1) copy a b
1640 1640 |
1641 1641 o (0) add a
1642 1642
1643 1643
1644 1644 $ testlog a
1645 1645 []
1646 1646 (func
1647 1647 (symbol 'filelog')
1648 1648 (string 'a'))
1649 1649 <filteredset
1650 1650 <spanset- 0:5>, set([0])>
1651 1651 $ testlog a b
1652 1652 []
1653 1653 (or
1654 1654 (list
1655 1655 (func
1656 1656 (symbol 'filelog')
1657 1657 (string 'a'))
1658 1658 (func
1659 1659 (symbol 'filelog')
1660 1660 (string 'b'))))
1661 1661 <filteredset
1662 1662 <spanset- 0:5>,
1663 1663 <addset
1664 1664 <baseset+ [0]>,
1665 1665 <baseset+ [1]>>>
1666 1666
1667 1667 Test falling back to slow path for non-existing files
1668 1668
1669 1669 $ testlog a c
1670 1670 []
1671 1671 (func
1672 1672 (symbol '_matchfiles')
1673 1673 (list
1674 1674 (string 'r:')
1675 1675 (string 'd:relpath')
1676 1676 (string 'p:a')
1677 1677 (string 'p:c')))
1678 1678 <filteredset
1679 1679 <spanset- 0:5>,
1680 1680 <matchfiles patterns=['a', 'c'], include=[] exclude=[], default='relpath', rev=2147483647>>
1681 1681
1682 1682 Test multiple --include/--exclude/paths
1683 1683
1684 1684 $ testlog --include a --include e --exclude b --exclude e a e
1685 1685 []
1686 1686 (func
1687 1687 (symbol '_matchfiles')
1688 1688 (list
1689 1689 (string 'r:')
1690 1690 (string 'd:relpath')
1691 1691 (string 'p:a')
1692 1692 (string 'p:e')
1693 1693 (string 'i:a')
1694 1694 (string 'i:e')
1695 1695 (string 'x:b')
1696 1696 (string 'x:e')))
1697 1697 <filteredset
1698 1698 <spanset- 0:5>,
1699 1699 <matchfiles patterns=['a', 'e'], include=['a', 'e'] exclude=['b', 'e'], default='relpath', rev=2147483647>>
1700 1700
1701 1701 Test glob expansion of pats
1702 1702
1703 1703 $ expandglobs=`$PYTHON -c "import mercurial.util; \
1704 1704 > print(mercurial.util.expandglobs and 'true' or 'false')"`
1705 1705 $ if [ $expandglobs = "true" ]; then
1706 1706 > testlog 'a*';
1707 1707 > else
1708 1708 > testlog a*;
1709 1709 > fi;
1710 1710 []
1711 1711 (func
1712 1712 (symbol 'filelog')
1713 1713 (string 'aa'))
1714 1714 <filteredset
1715 1715 <spanset- 0:5>, set([0])>
1716 1716
1717 1717 Test --follow on a non-existent directory
1718 1718
1719 1719 $ testlog -f dir
1720 1720 abort: cannot follow file not in parent revision: "dir"
1721 1721 abort: cannot follow file not in parent revision: "dir"
1722 1722 abort: cannot follow file not in parent revision: "dir"
1723 1723
1724 1724 Test --follow on a directory
1725 1725
1726 1726 $ hg up -q '.^'
1727 1727 $ testlog -f dir
1728 1728 []
1729 1729 (func
1730 1730 (symbol '_matchfiles')
1731 1731 (list
1732 1732 (string 'r:')
1733 1733 (string 'd:relpath')
1734 1734 (string 'p:dir')))
1735 1735 <filteredset
1736 1736 <generatorsetdesc->,
1737 1737 <matchfiles patterns=['dir'], include=[] exclude=[], default='relpath', rev=2147483647>>
1738 1738 $ hg up -q tip
1739 1739
1740 1740 Test --follow on file not in parent revision
1741 1741
1742 1742 $ testlog -f a
1743 1743 abort: cannot follow file not in parent revision: "a"
1744 1744 abort: cannot follow file not in parent revision: "a"
1745 1745 abort: cannot follow file not in parent revision: "a"
1746 1746
1747 1747 Test --follow and patterns
1748 1748
1749 1749 $ testlog -f 'glob:*'
1750 1750 []
1751 1751 (func
1752 1752 (symbol '_matchfiles')
1753 1753 (list
1754 1754 (string 'r:')
1755 1755 (string 'd:relpath')
1756 1756 (string 'p:glob:*')))
1757 1757 <filteredset
1758 1758 <generatorsetdesc->,
1759 1759 <matchfiles patterns=['glob:*'], include=[] exclude=[], default='relpath', rev=2147483647>>
1760 1760
1761 1761 Test --follow on a single rename
1762 1762
1763 1763 $ hg up -q 2
1764 1764 $ testlog -f a
1765 1765 []
1766 1766 []
1767 1767 <generatorsetdesc->
1768 1768
1769 1769 Test --follow and multiple renames
1770 1770
1771 1771 $ hg up -q tip
1772 1772 $ testlog -f e
1773 1773 []
1774 1774 []
1775 1775 <generatorsetdesc->
1776 1776
1777 1777 Test --follow and multiple filelog heads
1778 1778
1779 1779 $ hg up -q 2
1780 1780 $ testlog -f g
1781 1781 []
1782 1782 []
1783 1783 <generatorsetdesc->
1784 1784 $ cat log.nodes
1785 1785 nodetag 2
1786 1786 nodetag 1
1787 1787 nodetag 0
1788 1788 $ hg up -q tip
1789 1789 $ testlog -f g
1790 1790 []
1791 1791 []
1792 1792 <generatorsetdesc->
1793 1793 $ cat log.nodes
1794 1794 nodetag 3
1795 1795 nodetag 2
1796 1796 nodetag 0
1797 1797
1798 1798 Test --follow and multiple files
1799 1799
1800 1800 $ testlog -f g e
1801 1801 []
1802 1802 []
1803 1803 <generatorsetdesc->
1804 1804 $ cat log.nodes
1805 1805 nodetag 4
1806 1806 nodetag 3
1807 1807 nodetag 2
1808 1808 nodetag 1
1809 1809 nodetag 0
1810 1810
1811 1811 Test --follow null parent
1812 1812
1813 1813 $ hg up -q null
1814 1814 $ testlog -f
1815 1815 []
1816 1816 []
1817 1817 <baseset []>
1818 1818
1819 1819 Test --follow-first
1820 1820
1821 1821 $ hg up -q 3
1822 1822 $ echo ee > e
1823 1823 $ hg ci -Am "add another e" e
1824 1824 created new head
1825 1825 $ hg merge --tool internal:other 4
1826 1826 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
1827 1827 (branch merge, don't forget to commit)
1828 1828 $ echo merge > e
1829 1829 $ hg ci -m "merge 5 and 4"
1830 1830 $ testlog --follow-first
1831 1831 []
1832 1832 []
1833 1833 <generatorsetdesc->
1834 1834
1835 1835 Cannot compare with log --follow-first FILE as it never worked
1836 1836
1837 1837 $ hg log -G --print-revset --follow-first e
1838 1838 []
1839 1839 []
1840 1840 <generatorsetdesc->
1841 1841 $ hg log -G --follow-first e --template '{rev} {desc|firstline}\n'
1842 1842 @ 6 merge 5 and 4
1843 1843 |\
1844 1844 | ~
1845 1845 o 5 add another e
1846 1846 |
1847 1847 ~
1848 1848
1849 1849 Test --copies
1850 1850
1851 1851 $ hg log -G --copies --template "{rev} {desc|firstline} \
1852 1852 > copies: {file_copies_switch}\n"
1853 1853 @ 6 merge 5 and 4 copies:
1854 1854 |\
1855 1855 | o 5 add another e copies:
1856 1856 | |
1857 1857 o | 4 mv dir/b e copies: e (dir/b)
1858 1858 |/
1859 1859 o 3 mv a b; add d copies: b (a)g (f)
1860 1860 |
1861 1861 o 2 mv b dir/b copies: dir/b (b)
1862 1862 |
1863 1863 o 1 copy a b copies: b (a)g (f)
1864 1864 |
1865 1865 o 0 add a copies:
1866 1866
1867 1867 Test "set:..." and parent revision
1868 1868
1869 1869 $ hg up -q 4
1870 1870 $ testlog "set:copied()"
1871 1871 []
1872 1872 (func
1873 (symbol '_matchfiles')
1874 (list
1875 (string 'r:')
1876 (string 'd:relpath')
1877 (string 'p:set:copied()')))
1873 (symbol 'filelog')
1874 (string 'set:copied()'))
1878 1875 <filteredset
1879 <spanset- 0:7>,
1880 <matchfiles patterns=['set:copied()'], include=[] exclude=[], default='relpath', rev=2147483647>>
1876 <spanset- 0:7>, set([])>
1881 1877 $ testlog --include "set:copied()"
1882 1878 []
1883 (func
1884 (symbol '_matchfiles')
1885 (list
1886 (string 'r:')
1887 (string 'd:relpath')
1888 (string 'i:set:copied()')))
1889 <filteredset
1890 <spanset- 0:7>,
1891 <matchfiles patterns=[], include=['set:copied()'] exclude=[], default='relpath', rev=2147483647>>
1879 []
1880 <spanset- 0:7>
1892 1881 $ testlog -r "sort(file('set:copied()'), -rev)"
1893 1882 ["sort(file('set:copied()'), -rev)"]
1894 1883 []
1895 1884 <filteredset
1896 1885 <fullreposet- 0:7>,
1897 1886 <matchfiles patterns=['set:copied()'], include=[] exclude=[], default='glob', rev=None>>
1898 1887
1899 1888 Test --removed
1900 1889
1901 1890 $ testlog --removed
1902 1891 []
1903 1892 []
1904 1893 <spanset- 0:7>
1905 1894 $ testlog --removed a
1906 1895 []
1907 1896 (func
1908 1897 (symbol '_matchfiles')
1909 1898 (list
1910 1899 (string 'r:')
1911 1900 (string 'd:relpath')
1912 1901 (string 'p:a')))
1913 1902 <filteredset
1914 1903 <spanset- 0:7>,
1915 1904 <matchfiles patterns=['a'], include=[] exclude=[], default='relpath', rev=2147483647>>
1916 1905 $ testlog --removed --follow a
1917 1906 []
1918 1907 (func
1919 1908 (symbol '_matchfiles')
1920 1909 (list
1921 1910 (string 'r:')
1922 1911 (string 'd:relpath')
1923 1912 (string 'p:a')))
1924 1913 <filteredset
1925 1914 <generatorsetdesc->,
1926 1915 <matchfiles patterns=['a'], include=[] exclude=[], default='relpath', rev=2147483647>>
1927 1916
1928 1917 Test --patch and --stat with --follow and --follow-first
1929 1918
1930 1919 $ hg up -q 3
1931 1920 $ hg log -G --git --patch b
1932 1921 o changeset: 1:216d4c92cf98
1933 1922 | user: test
1934 1923 ~ date: Thu Jan 01 00:00:00 1970 +0000
1935 1924 summary: copy a b
1936 1925
1937 1926 diff --git a/a b/b
1938 1927 copy from a
1939 1928 copy to b
1940 1929
1941 1930
1942 1931 $ hg log -G --git --stat b
1943 1932 o changeset: 1:216d4c92cf98
1944 1933 | user: test
1945 1934 ~ date: Thu Jan 01 00:00:00 1970 +0000
1946 1935 summary: copy a b
1947 1936
1948 1937 b | 0
1949 1938 1 files changed, 0 insertions(+), 0 deletions(-)
1950 1939
1951 1940
1952 1941 $ hg log -G --git --patch --follow b
1953 1942 o changeset: 1:216d4c92cf98
1954 1943 | user: test
1955 1944 | date: Thu Jan 01 00:00:00 1970 +0000
1956 1945 | summary: copy a b
1957 1946 |
1958 1947 | diff --git a/a b/b
1959 1948 | copy from a
1960 1949 | copy to b
1961 1950 |
1962 1951 o changeset: 0:f8035bb17114
1963 1952 user: test
1964 1953 date: Thu Jan 01 00:00:00 1970 +0000
1965 1954 summary: add a
1966 1955
1967 1956 diff --git a/a b/a
1968 1957 new file mode 100644
1969 1958 --- /dev/null
1970 1959 +++ b/a
1971 1960 @@ -0,0 +1,1 @@
1972 1961 +a
1973 1962
1974 1963
1975 1964 $ hg log -G --git --stat --follow b
1976 1965 o changeset: 1:216d4c92cf98
1977 1966 | user: test
1978 1967 | date: Thu Jan 01 00:00:00 1970 +0000
1979 1968 | summary: copy a b
1980 1969 |
1981 1970 | b | 0
1982 1971 | 1 files changed, 0 insertions(+), 0 deletions(-)
1983 1972 |
1984 1973 o changeset: 0:f8035bb17114
1985 1974 user: test
1986 1975 date: Thu Jan 01 00:00:00 1970 +0000
1987 1976 summary: add a
1988 1977
1989 1978 a | 1 +
1990 1979 1 files changed, 1 insertions(+), 0 deletions(-)
1991 1980
1992 1981
1993 1982 $ hg up -q 6
1994 1983 $ hg log -G --git --patch --follow-first e
1995 1984 @ changeset: 6:fc281d8ff18d
1996 1985 |\ tag: tip
1997 1986 | ~ parent: 5:99b31f1c2782
1998 1987 | parent: 4:17d952250a9d
1999 1988 | user: test
2000 1989 | date: Thu Jan 01 00:00:00 1970 +0000
2001 1990 | summary: merge 5 and 4
2002 1991 |
2003 1992 | diff --git a/e b/e
2004 1993 | --- a/e
2005 1994 | +++ b/e
2006 1995 | @@ -1,1 +1,1 @@
2007 1996 | -ee
2008 1997 | +merge
2009 1998 |
2010 1999 o changeset: 5:99b31f1c2782
2011 2000 | parent: 3:5918b8d165d1
2012 2001 ~ user: test
2013 2002 date: Thu Jan 01 00:00:00 1970 +0000
2014 2003 summary: add another e
2015 2004
2016 2005 diff --git a/e b/e
2017 2006 new file mode 100644
2018 2007 --- /dev/null
2019 2008 +++ b/e
2020 2009 @@ -0,0 +1,1 @@
2021 2010 +ee
2022 2011
2023 2012
2024 2013 Test old-style --rev
2025 2014
2026 2015 $ hg tag 'foo-bar'
2027 2016 $ testlog -r 'foo-bar'
2028 2017 ['foo-bar']
2029 2018 []
2030 2019 <baseset [6]>
2031 2020
2032 2021 Test --follow and forward --rev
2033 2022
2034 2023 $ hg up -q 6
2035 2024 $ echo g > g
2036 2025 $ hg ci -Am 'add g' g
2037 2026 created new head
2038 2027 $ hg up -q 2
2039 2028 $ hg log -G --template "{rev} {desc|firstline}\n"
2040 2029 o 8 add g
2041 2030 |
2042 2031 | o 7 Added tag foo-bar for changeset fc281d8ff18d
2043 2032 |/
2044 2033 o 6 merge 5 and 4
2045 2034 |\
2046 2035 | o 5 add another e
2047 2036 | |
2048 2037 o | 4 mv dir/b e
2049 2038 |/
2050 2039 o 3 mv a b; add d
2051 2040 |
2052 2041 @ 2 mv b dir/b
2053 2042 |
2054 2043 o 1 copy a b
2055 2044 |
2056 2045 o 0 add a
2057 2046
2058 2047 $ hg archive -r 7 archive
2059 2048 $ grep changessincelatesttag archive/.hg_archival.txt
2060 2049 changessincelatesttag: 1
2061 2050 $ rm -r archive
2062 2051
2063 2052 changessincelatesttag with no prior tag
2064 2053 $ hg archive -r 4 archive
2065 2054 $ grep changessincelatesttag archive/.hg_archival.txt
2066 2055 changessincelatesttag: 5
2067 2056
2068 2057 $ hg export 'all()'
2069 2058 # HG changeset patch
2070 2059 # User test
2071 2060 # Date 0 0
2072 2061 # Thu Jan 01 00:00:00 1970 +0000
2073 2062 # Node ID f8035bb17114da16215af3436ec5222428ace8ee
2074 2063 # Parent 0000000000000000000000000000000000000000
2075 2064 add a
2076 2065
2077 2066 diff -r 000000000000 -r f8035bb17114 a
2078 2067 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2079 2068 +++ b/a Thu Jan 01 00:00:00 1970 +0000
2080 2069 @@ -0,0 +1,1 @@
2081 2070 +a
2082 2071 diff -r 000000000000 -r f8035bb17114 aa
2083 2072 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2084 2073 +++ b/aa Thu Jan 01 00:00:00 1970 +0000
2085 2074 @@ -0,0 +1,1 @@
2086 2075 +aa
2087 2076 diff -r 000000000000 -r f8035bb17114 f
2088 2077 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2089 2078 +++ b/f Thu Jan 01 00:00:00 1970 +0000
2090 2079 @@ -0,0 +1,1 @@
2091 2080 +f
2092 2081 # HG changeset patch
2093 2082 # User test
2094 2083 # Date 0 0
2095 2084 # Thu Jan 01 00:00:00 1970 +0000
2096 2085 # Node ID 216d4c92cf98ff2b4641d508b76b529f3d424c92
2097 2086 # Parent f8035bb17114da16215af3436ec5222428ace8ee
2098 2087 copy a b
2099 2088
2100 2089 diff -r f8035bb17114 -r 216d4c92cf98 b
2101 2090 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2102 2091 +++ b/b Thu Jan 01 00:00:00 1970 +0000
2103 2092 @@ -0,0 +1,1 @@
2104 2093 +a
2105 2094 diff -r f8035bb17114 -r 216d4c92cf98 g
2106 2095 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2107 2096 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2108 2097 @@ -0,0 +1,1 @@
2109 2098 +f
2110 2099 # HG changeset patch
2111 2100 # User test
2112 2101 # Date 0 0
2113 2102 # Thu Jan 01 00:00:00 1970 +0000
2114 2103 # Node ID bb573313a9e8349099b6ea2b2fb1fc7f424446f3
2115 2104 # Parent 216d4c92cf98ff2b4641d508b76b529f3d424c92
2116 2105 mv b dir/b
2117 2106
2118 2107 diff -r 216d4c92cf98 -r bb573313a9e8 b
2119 2108 --- a/b Thu Jan 01 00:00:00 1970 +0000
2120 2109 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2121 2110 @@ -1,1 +0,0 @@
2122 2111 -a
2123 2112 diff -r 216d4c92cf98 -r bb573313a9e8 dir/b
2124 2113 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2125 2114 +++ b/dir/b Thu Jan 01 00:00:00 1970 +0000
2126 2115 @@ -0,0 +1,1 @@
2127 2116 +a
2128 2117 diff -r 216d4c92cf98 -r bb573313a9e8 f
2129 2118 --- a/f Thu Jan 01 00:00:00 1970 +0000
2130 2119 +++ b/f Thu Jan 01 00:00:00 1970 +0000
2131 2120 @@ -1,1 +1,2 @@
2132 2121 f
2133 2122 +f
2134 2123 diff -r 216d4c92cf98 -r bb573313a9e8 g
2135 2124 --- a/g Thu Jan 01 00:00:00 1970 +0000
2136 2125 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2137 2126 @@ -1,1 +1,2 @@
2138 2127 f
2139 2128 +g
2140 2129 # HG changeset patch
2141 2130 # User test
2142 2131 # Date 0 0
2143 2132 # Thu Jan 01 00:00:00 1970 +0000
2144 2133 # Node ID 5918b8d165d1364e78a66d02e66caa0133c5d1ed
2145 2134 # Parent bb573313a9e8349099b6ea2b2fb1fc7f424446f3
2146 2135 mv a b; add d
2147 2136
2148 2137 diff -r bb573313a9e8 -r 5918b8d165d1 a
2149 2138 --- a/a Thu Jan 01 00:00:00 1970 +0000
2150 2139 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2151 2140 @@ -1,1 +0,0 @@
2152 2141 -a
2153 2142 diff -r bb573313a9e8 -r 5918b8d165d1 b
2154 2143 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2155 2144 +++ b/b Thu Jan 01 00:00:00 1970 +0000
2156 2145 @@ -0,0 +1,1 @@
2157 2146 +a
2158 2147 diff -r bb573313a9e8 -r 5918b8d165d1 d
2159 2148 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2160 2149 +++ b/d Thu Jan 01 00:00:00 1970 +0000
2161 2150 @@ -0,0 +1,1 @@
2162 2151 +a
2163 2152 diff -r bb573313a9e8 -r 5918b8d165d1 g
2164 2153 --- a/g Thu Jan 01 00:00:00 1970 +0000
2165 2154 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2166 2155 @@ -1,2 +1,2 @@
2167 2156 f
2168 2157 -g
2169 2158 +f
2170 2159 # HG changeset patch
2171 2160 # User test
2172 2161 # Date 0 0
2173 2162 # Thu Jan 01 00:00:00 1970 +0000
2174 2163 # Node ID 17d952250a9d03cc3dc77b199ab60e959b9b0260
2175 2164 # Parent 5918b8d165d1364e78a66d02e66caa0133c5d1ed
2176 2165 mv dir/b e
2177 2166
2178 2167 diff -r 5918b8d165d1 -r 17d952250a9d dir/b
2179 2168 --- a/dir/b Thu Jan 01 00:00:00 1970 +0000
2180 2169 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2181 2170 @@ -1,1 +0,0 @@
2182 2171 -a
2183 2172 diff -r 5918b8d165d1 -r 17d952250a9d e
2184 2173 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2185 2174 +++ b/e Thu Jan 01 00:00:00 1970 +0000
2186 2175 @@ -0,0 +1,1 @@
2187 2176 +a
2188 2177 # HG changeset patch
2189 2178 # User test
2190 2179 # Date 0 0
2191 2180 # Thu Jan 01 00:00:00 1970 +0000
2192 2181 # Node ID 99b31f1c2782e2deb1723cef08930f70fc84b37b
2193 2182 # Parent 5918b8d165d1364e78a66d02e66caa0133c5d1ed
2194 2183 add another e
2195 2184
2196 2185 diff -r 5918b8d165d1 -r 99b31f1c2782 e
2197 2186 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2198 2187 +++ b/e Thu Jan 01 00:00:00 1970 +0000
2199 2188 @@ -0,0 +1,1 @@
2200 2189 +ee
2201 2190 # HG changeset patch
2202 2191 # User test
2203 2192 # Date 0 0
2204 2193 # Thu Jan 01 00:00:00 1970 +0000
2205 2194 # Node ID fc281d8ff18d999ad6497b3d27390bcd695dcc73
2206 2195 # Parent 99b31f1c2782e2deb1723cef08930f70fc84b37b
2207 2196 # Parent 17d952250a9d03cc3dc77b199ab60e959b9b0260
2208 2197 merge 5 and 4
2209 2198
2210 2199 diff -r 99b31f1c2782 -r fc281d8ff18d dir/b
2211 2200 --- a/dir/b Thu Jan 01 00:00:00 1970 +0000
2212 2201 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2213 2202 @@ -1,1 +0,0 @@
2214 2203 -a
2215 2204 diff -r 99b31f1c2782 -r fc281d8ff18d e
2216 2205 --- a/e Thu Jan 01 00:00:00 1970 +0000
2217 2206 +++ b/e Thu Jan 01 00:00:00 1970 +0000
2218 2207 @@ -1,1 +1,1 @@
2219 2208 -ee
2220 2209 +merge
2221 2210 # HG changeset patch
2222 2211 # User test
2223 2212 # Date 0 0
2224 2213 # Thu Jan 01 00:00:00 1970 +0000
2225 2214 # Node ID 02dbb8e276b8ab7abfd07cab50c901647e75c2dd
2226 2215 # Parent fc281d8ff18d999ad6497b3d27390bcd695dcc73
2227 2216 Added tag foo-bar for changeset fc281d8ff18d
2228 2217
2229 2218 diff -r fc281d8ff18d -r 02dbb8e276b8 .hgtags
2230 2219 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2231 2220 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2232 2221 @@ -0,0 +1,1 @@
2233 2222 +fc281d8ff18d999ad6497b3d27390bcd695dcc73 foo-bar
2234 2223 # HG changeset patch
2235 2224 # User test
2236 2225 # Date 0 0
2237 2226 # Thu Jan 01 00:00:00 1970 +0000
2238 2227 # Node ID 24c2e826ddebf80f9dcd60b856bdb8e6715c5449
2239 2228 # Parent fc281d8ff18d999ad6497b3d27390bcd695dcc73
2240 2229 add g
2241 2230
2242 2231 diff -r fc281d8ff18d -r 24c2e826ddeb g
2243 2232 --- a/g Thu Jan 01 00:00:00 1970 +0000
2244 2233 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2245 2234 @@ -1,2 +1,1 @@
2246 2235 -f
2247 2236 -f
2248 2237 +g
2249 2238 $ testlog --follow -r6 -r8 -r5 -r7 -r4
2250 2239 ['6', '8', '5', '7', '4']
2251 2240 []
2252 2241 <generatorsetdesc->
2253 2242
2254 2243 Test --follow-first and forward --rev
2255 2244
2256 2245 $ testlog --follow-first -r6 -r8 -r5 -r7 -r4
2257 2246 ['6', '8', '5', '7', '4']
2258 2247 []
2259 2248 <generatorsetdesc->
2260 2249
2261 2250 Test --follow and backward --rev
2262 2251
2263 2252 $ testlog --follow -r6 -r5 -r7 -r8 -r4
2264 2253 ['6', '5', '7', '8', '4']
2265 2254 []
2266 2255 <generatorsetdesc->
2267 2256
2268 2257 Test --follow-first and backward --rev
2269 2258
2270 2259 $ testlog --follow-first -r6 -r5 -r7 -r8 -r4
2271 2260 ['6', '5', '7', '8', '4']
2272 2261 []
2273 2262 <generatorsetdesc->
2274 2263
2275 2264 Test --follow with --rev of graphlog extension
2276 2265
2277 2266 $ hg --config extensions.graphlog= glog -qfr1
2278 2267 o 1:216d4c92cf98
2279 2268 |
2280 2269 o 0:f8035bb17114
2281 2270
2282 2271
2283 2272 Test subdir
2284 2273
2285 2274 $ hg up -q 3
2286 2275 $ cd dir
2287 2276 $ testlog .
2288 2277 []
2289 2278 (func
2290 2279 (symbol '_matchfiles')
2291 2280 (list
2292 2281 (string 'r:')
2293 2282 (string 'd:relpath')
2294 2283 (string 'p:.')))
2295 2284 <filteredset
2296 2285 <spanset- 0:9>,
2297 2286 <matchfiles patterns=['.'], include=[] exclude=[], default='relpath', rev=2147483647>>
2298 2287 $ testlog ../b
2299 2288 []
2300 2289 (func
2301 2290 (symbol 'filelog')
2302 2291 (string '../b'))
2303 2292 <filteredset
2304 2293 <spanset- 0:9>, set([1])>
2305 2294 $ testlog -f ../b
2306 2295 []
2307 2296 []
2308 2297 <generatorsetdesc->
2309 2298 $ cd ..
2310 2299
2311 2300 Test --hidden
2312 2301 (enable obsolete)
2313 2302
2314 2303 $ cat >> $HGRCPATH << EOF
2315 2304 > [experimental]
2316 2305 > evolution.createmarkers=True
2317 2306 > EOF
2318 2307
2319 2308 $ hg debugobsolete `hg id --debug -i -r 8`
2320 2309 obsoleted 1 changesets
2321 2310 $ testlog
2322 2311 []
2323 2312 []
2324 2313 <spanset- 0:9>
2325 2314 $ testlog --hidden
2326 2315 []
2327 2316 []
2328 2317 <spanset- 0:9>
2329 2318 $ hg log -G --template '{rev} {desc}\n'
2330 2319 o 7 Added tag foo-bar for changeset fc281d8ff18d
2331 2320 |
2332 2321 o 6 merge 5 and 4
2333 2322 |\
2334 2323 | o 5 add another e
2335 2324 | |
2336 2325 o | 4 mv dir/b e
2337 2326 |/
2338 2327 @ 3 mv a b; add d
2339 2328 |
2340 2329 o 2 mv b dir/b
2341 2330 |
2342 2331 o 1 copy a b
2343 2332 |
2344 2333 o 0 add a
2345 2334
2346 2335
2347 2336 A template without trailing newline should do something sane
2348 2337
2349 2338 $ hg log -G -r ::2 --template '{rev} {desc}'
2350 2339 o 2 mv b dir/b
2351 2340 |
2352 2341 o 1 copy a b
2353 2342 |
2354 2343 o 0 add a
2355 2344
2356 2345
2357 2346 Extra newlines must be preserved
2358 2347
2359 2348 $ hg log -G -r ::2 --template '\n{rev} {desc}\n\n'
2360 2349 o
2361 2350 | 2 mv b dir/b
2362 2351 |
2363 2352 o
2364 2353 | 1 copy a b
2365 2354 |
2366 2355 o
2367 2356 0 add a
2368 2357
2369 2358
2370 2359 The almost-empty template should do something sane too ...
2371 2360
2372 2361 $ hg log -G -r ::2 --template '\n'
2373 2362 o
2374 2363 |
2375 2364 o
2376 2365 |
2377 2366 o
2378 2367
2379 2368
2380 2369 issue3772
2381 2370
2382 2371 $ hg log -G -r :null
2383 2372 o changeset: 0:f8035bb17114
2384 2373 | user: test
2385 2374 | date: Thu Jan 01 00:00:00 1970 +0000
2386 2375 | summary: add a
2387 2376 |
2388 2377 o changeset: -1:000000000000
2389 2378 user:
2390 2379 date: Thu Jan 01 00:00:00 1970 +0000
2391 2380
2392 2381 $ hg log -G -r null:null
2393 2382 o changeset: -1:000000000000
2394 2383 user:
2395 2384 date: Thu Jan 01 00:00:00 1970 +0000
2396 2385
2397 2386
2398 2387 should not draw line down to null due to the magic of fullreposet
2399 2388
2400 2389 $ hg log -G -r 'all()' | tail -6
2401 2390 |
2402 2391 o changeset: 0:f8035bb17114
2403 2392 user: test
2404 2393 date: Thu Jan 01 00:00:00 1970 +0000
2405 2394 summary: add a
2406 2395
2407 2396
2408 2397 $ hg log -G -r 'branch(default)' | tail -6
2409 2398 |
2410 2399 o changeset: 0:f8035bb17114
2411 2400 user: test
2412 2401 date: Thu Jan 01 00:00:00 1970 +0000
2413 2402 summary: add a
2414 2403
2415 2404
2416 2405 working-directory revision
2417 2406
2418 2407 $ hg log -G -qr '. + wdir()'
2419 2408 o 2147483647:ffffffffffff
2420 2409 |
2421 2410 @ 3:5918b8d165d1
2422 2411 |
2423 2412 ~
2424 2413
2425 2414 node template with changesetprinter:
2426 2415
2427 2416 $ hg log -Gqr 5:7 --config ui.graphnodetemplate='"{rev}"'
2428 2417 7 7:02dbb8e276b8
2429 2418 |
2430 2419 6 6:fc281d8ff18d
2431 2420 |\
2432 2421 | ~
2433 2422 5 5:99b31f1c2782
2434 2423 |
2435 2424 ~
2436 2425
2437 2426 node template with changesettemplater (shared cache variable):
2438 2427
2439 2428 $ hg log -Gr 5:7 -T '{latesttag % "{rev} {tag}+{distance}"}\n' \
2440 2429 > --config ui.graphnodetemplate='{ifeq(latesttagdistance, 0, "#", graphnode)}'
2441 2430 o 7 foo-bar+1
2442 2431 |
2443 2432 # 6 foo-bar+0
2444 2433 |\
2445 2434 | ~
2446 2435 o 5 null+5
2447 2436 |
2448 2437 ~
2449 2438
2450 2439 label() should just work in node template:
2451 2440
2452 2441 $ hg log -Gqr 7 --config extensions.color= --color=debug \
2453 2442 > --config ui.graphnodetemplate='{label("branch.{branch}", rev)}'
2454 2443 [branch.default|7] [log.node|7:02dbb8e276b8]
2455 2444 |
2456 2445 ~
2457 2446
2458 2447 $ cd ..
2459 2448
2460 2449 change graph edge styling
2461 2450
2462 2451 $ cd repo
2463 2452 $ cat << EOF >> $HGRCPATH
2464 2453 > [experimental]
2465 2454 > graphstyle.parent = |
2466 2455 > graphstyle.grandparent = :
2467 2456 > graphstyle.missing =
2468 2457 > EOF
2469 2458 $ hg log -G -r 'file("a")' -m
2470 2459 @ changeset: 36:08a19a744424
2471 2460 : branch: branch
2472 2461 : tag: tip
2473 2462 : parent: 35:9159c3644c5e
2474 2463 : parent: 35:9159c3644c5e
2475 2464 : user: test
2476 2465 : date: Thu Jan 01 00:00:36 1970 +0000
2477 2466 : summary: (36) buggy merge: identical parents
2478 2467 :
2479 2468 o changeset: 32:d06dffa21a31
2480 2469 |\ parent: 27:886ed638191b
2481 2470 | : parent: 31:621d83e11f67
2482 2471 | : user: test
2483 2472 | : date: Thu Jan 01 00:00:32 1970 +0000
2484 2473 | : summary: (32) expand
2485 2474 | :
2486 2475 o : changeset: 31:621d83e11f67
2487 2476 |\: parent: 21:d42a756af44d
2488 2477 | : parent: 30:6e11cd4b648f
2489 2478 | : user: test
2490 2479 | : date: Thu Jan 01 00:00:31 1970 +0000
2491 2480 | : summary: (31) expand
2492 2481 | :
2493 2482 o : changeset: 30:6e11cd4b648f
2494 2483 |\ \ parent: 28:44ecd0b9ae99
2495 2484 | ~ : parent: 29:cd9bb2be7593
2496 2485 | : user: test
2497 2486 | : date: Thu Jan 01 00:00:30 1970 +0000
2498 2487 | : summary: (30) expand
2499 2488 | /
2500 2489 o : changeset: 28:44ecd0b9ae99
2501 2490 |\ \ parent: 1:6db2ef61d156
2502 2491 | ~ : parent: 26:7f25b6c2f0b9
2503 2492 | : user: test
2504 2493 | : date: Thu Jan 01 00:00:28 1970 +0000
2505 2494 | : summary: (28) merge zero known
2506 2495 | /
2507 2496 o : changeset: 26:7f25b6c2f0b9
2508 2497 |\ \ parent: 18:1aa84d96232a
2509 2498 | | : parent: 25:91da8ed57247
2510 2499 | | : user: test
2511 2500 | | : date: Thu Jan 01 00:00:26 1970 +0000
2512 2501 | | : summary: (26) merge one known; far right
2513 2502 | | :
2514 2503 | o : changeset: 25:91da8ed57247
2515 2504 | |\: parent: 21:d42a756af44d
2516 2505 | | : parent: 24:a9c19a3d96b7
2517 2506 | | : user: test
2518 2507 | | : date: Thu Jan 01 00:00:25 1970 +0000
2519 2508 | | : summary: (25) merge one known; far left
2520 2509 | | :
2521 2510 | o : changeset: 24:a9c19a3d96b7
2522 2511 | |\ \ parent: 0:e6eb3150255d
2523 2512 | | ~ : parent: 23:a01cddf0766d
2524 2513 | | : user: test
2525 2514 | | : date: Thu Jan 01 00:00:24 1970 +0000
2526 2515 | | : summary: (24) merge one known; immediate right
2527 2516 | | /
2528 2517 | o : changeset: 23:a01cddf0766d
2529 2518 | |\ \ parent: 1:6db2ef61d156
2530 2519 | | ~ : parent: 22:e0d9cccacb5d
2531 2520 | | : user: test
2532 2521 | | : date: Thu Jan 01 00:00:23 1970 +0000
2533 2522 | | : summary: (23) merge one known; immediate left
2534 2523 | | /
2535 2524 | o : changeset: 22:e0d9cccacb5d
2536 2525 |/:/ parent: 18:1aa84d96232a
2537 2526 | : parent: 21:d42a756af44d
2538 2527 | : user: test
2539 2528 | : date: Thu Jan 01 00:00:22 1970 +0000
2540 2529 | : summary: (22) merge two known; one far left, one far right
2541 2530 | :
2542 2531 | o changeset: 21:d42a756af44d
2543 2532 | |\ parent: 19:31ddc2c1573b
2544 2533 | | | parent: 20:d30ed6450e32
2545 2534 | | | user: test
2546 2535 | | | date: Thu Jan 01 00:00:21 1970 +0000
2547 2536 | | | summary: (21) expand
2548 2537 | | |
2549 2538 +---o changeset: 20:d30ed6450e32
2550 2539 | | | parent: 0:e6eb3150255d
2551 2540 | | ~ parent: 18:1aa84d96232a
2552 2541 | | user: test
2553 2542 | | date: Thu Jan 01 00:00:20 1970 +0000
2554 2543 | | summary: (20) merge two known; two far right
2555 2544 | |
2556 2545 | o changeset: 19:31ddc2c1573b
2557 2546 | |\ parent: 15:1dda3f72782d
2558 2547 | | | parent: 17:44765d7c06e0
2559 2548 | | | user: test
2560 2549 | | | date: Thu Jan 01 00:00:19 1970 +0000
2561 2550 | | | summary: (19) expand
2562 2551 | | |
2563 2552 o | | changeset: 18:1aa84d96232a
2564 2553 |\| | parent: 1:6db2ef61d156
2565 2554 ~ | | parent: 15:1dda3f72782d
2566 2555 | | user: test
2567 2556 | | date: Thu Jan 01 00:00:18 1970 +0000
2568 2557 | | summary: (18) merge two known; two far left
2569 2558 / /
2570 2559 | o changeset: 17:44765d7c06e0
2571 2560 | |\ parent: 12:86b91144a6e9
2572 2561 | | | parent: 16:3677d192927d
2573 2562 | | | user: test
2574 2563 | | | date: Thu Jan 01 00:00:17 1970 +0000
2575 2564 | | | summary: (17) expand
2576 2565 | | |
2577 2566 | | o changeset: 16:3677d192927d
2578 2567 | | |\ parent: 0:e6eb3150255d
2579 2568 | | ~ ~ parent: 1:6db2ef61d156
2580 2569 | | user: test
2581 2570 | | date: Thu Jan 01 00:00:16 1970 +0000
2582 2571 | | summary: (16) merge two known; one immediate right, one near right
2583 2572 | |
2584 2573 o | changeset: 15:1dda3f72782d
2585 2574 |\ \ parent: 13:22d8966a97e3
2586 2575 | | | parent: 14:8eac370358ef
2587 2576 | | | user: test
2588 2577 | | | date: Thu Jan 01 00:00:15 1970 +0000
2589 2578 | | | summary: (15) expand
2590 2579 | | |
2591 2580 | o | changeset: 14:8eac370358ef
2592 2581 | |\| parent: 0:e6eb3150255d
2593 2582 | ~ | parent: 12:86b91144a6e9
2594 2583 | | user: test
2595 2584 | | date: Thu Jan 01 00:00:14 1970 +0000
2596 2585 | | summary: (14) merge two known; one immediate right, one far right
2597 2586 | /
2598 2587 o | changeset: 13:22d8966a97e3
2599 2588 |\ \ parent: 9:7010c0af0a35
2600 2589 | | | parent: 11:832d76e6bdf2
2601 2590 | | | user: test
2602 2591 | | | date: Thu Jan 01 00:00:13 1970 +0000
2603 2592 | | | summary: (13) expand
2604 2593 | | |
2605 2594 +---o changeset: 12:86b91144a6e9
2606 2595 | | | parent: 1:6db2ef61d156
2607 2596 | | ~ parent: 9:7010c0af0a35
2608 2597 | | user: test
2609 2598 | | date: Thu Jan 01 00:00:12 1970 +0000
2610 2599 | | summary: (12) merge two known; one immediate right, one far left
2611 2600 | |
2612 2601 | o changeset: 11:832d76e6bdf2
2613 2602 | |\ parent: 6:b105a072e251
2614 2603 | | | parent: 10:74c64d036d72
2615 2604 | | | user: test
2616 2605 | | | date: Thu Jan 01 00:00:11 1970 +0000
2617 2606 | | | summary: (11) expand
2618 2607 | | |
2619 2608 | | o changeset: 10:74c64d036d72
2620 2609 | |/| parent: 0:e6eb3150255d
2621 2610 | | ~ parent: 6:b105a072e251
2622 2611 | | user: test
2623 2612 | | date: Thu Jan 01 00:00:10 1970 +0000
2624 2613 | | summary: (10) merge two known; one immediate left, one near right
2625 2614 | |
2626 2615 o | changeset: 9:7010c0af0a35
2627 2616 |\ \ parent: 7:b632bb1b1224
2628 2617 | | | parent: 8:7a0b11f71937
2629 2618 | | | user: test
2630 2619 | | | date: Thu Jan 01 00:00:09 1970 +0000
2631 2620 | | | summary: (9) expand
2632 2621 | | |
2633 2622 | o | changeset: 8:7a0b11f71937
2634 2623 |/| | parent: 0:e6eb3150255d
2635 2624 | ~ | parent: 7:b632bb1b1224
2636 2625 | | user: test
2637 2626 | | date: Thu Jan 01 00:00:08 1970 +0000
2638 2627 | | summary: (8) merge two known; one immediate left, one far right
2639 2628 | /
2640 2629 o | changeset: 7:b632bb1b1224
2641 2630 |\ \ parent: 2:3d9a33b8d1e1
2642 2631 | ~ | parent: 5:4409d547b708
2643 2632 | | user: test
2644 2633 | | date: Thu Jan 01 00:00:07 1970 +0000
2645 2634 | | summary: (7) expand
2646 2635 | /
2647 2636 | o changeset: 6:b105a072e251
2648 2637 |/| parent: 2:3d9a33b8d1e1
2649 2638 | ~ parent: 5:4409d547b708
2650 2639 | user: test
2651 2640 | date: Thu Jan 01 00:00:06 1970 +0000
2652 2641 | summary: (6) merge two known; one immediate left, one far left
2653 2642 |
2654 2643 o changeset: 5:4409d547b708
2655 2644 |\ parent: 3:27eef8ed80b4
2656 2645 | ~ parent: 4:26a8bac39d9f
2657 2646 | user: test
2658 2647 | date: Thu Jan 01 00:00:05 1970 +0000
2659 2648 | summary: (5) expand
2660 2649 |
2661 2650 o changeset: 4:26a8bac39d9f
2662 2651 |\ parent: 1:6db2ef61d156
2663 2652 ~ ~ parent: 3:27eef8ed80b4
2664 2653 user: test
2665 2654 date: Thu Jan 01 00:00:04 1970 +0000
2666 2655 summary: (4) merge two known; one immediate left, one immediate right
2667 2656
2668 2657
2669 2658 Setting HGPLAIN ignores graphmod styling:
2670 2659
2671 2660 $ HGPLAIN=1 hg log -G -r 'file("a")' -m
2672 2661 @ changeset: 36:08a19a744424
2673 2662 | branch: branch
2674 2663 | tag: tip
2675 2664 | parent: 35:9159c3644c5e
2676 2665 | parent: 35:9159c3644c5e
2677 2666 | user: test
2678 2667 | date: Thu Jan 01 00:00:36 1970 +0000
2679 2668 | summary: (36) buggy merge: identical parents
2680 2669 |
2681 2670 o changeset: 32:d06dffa21a31
2682 2671 |\ parent: 27:886ed638191b
2683 2672 | | parent: 31:621d83e11f67
2684 2673 | | user: test
2685 2674 | | date: Thu Jan 01 00:00:32 1970 +0000
2686 2675 | | summary: (32) expand
2687 2676 | |
2688 2677 o | changeset: 31:621d83e11f67
2689 2678 |\| parent: 21:d42a756af44d
2690 2679 | | parent: 30:6e11cd4b648f
2691 2680 | | user: test
2692 2681 | | date: Thu Jan 01 00:00:31 1970 +0000
2693 2682 | | summary: (31) expand
2694 2683 | |
2695 2684 o | changeset: 30:6e11cd4b648f
2696 2685 |\ \ parent: 28:44ecd0b9ae99
2697 2686 | | | parent: 29:cd9bb2be7593
2698 2687 | | | user: test
2699 2688 | | | date: Thu Jan 01 00:00:30 1970 +0000
2700 2689 | | | summary: (30) expand
2701 2690 | | |
2702 2691 o | | changeset: 28:44ecd0b9ae99
2703 2692 |\ \ \ parent: 1:6db2ef61d156
2704 2693 | | | | parent: 26:7f25b6c2f0b9
2705 2694 | | | | user: test
2706 2695 | | | | date: Thu Jan 01 00:00:28 1970 +0000
2707 2696 | | | | summary: (28) merge zero known
2708 2697 | | | |
2709 2698 o | | | changeset: 26:7f25b6c2f0b9
2710 2699 |\ \ \ \ parent: 18:1aa84d96232a
2711 2700 | | | | | parent: 25:91da8ed57247
2712 2701 | | | | | user: test
2713 2702 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
2714 2703 | | | | | summary: (26) merge one known; far right
2715 2704 | | | | |
2716 2705 | o-----+ changeset: 25:91da8ed57247
2717 2706 | | | | | parent: 21:d42a756af44d
2718 2707 | | | | | parent: 24:a9c19a3d96b7
2719 2708 | | | | | user: test
2720 2709 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
2721 2710 | | | | | summary: (25) merge one known; far left
2722 2711 | | | | |
2723 2712 | o | | | changeset: 24:a9c19a3d96b7
2724 2713 | |\ \ \ \ parent: 0:e6eb3150255d
2725 2714 | | | | | | parent: 23:a01cddf0766d
2726 2715 | | | | | | user: test
2727 2716 | | | | | | date: Thu Jan 01 00:00:24 1970 +0000
2728 2717 | | | | | | summary: (24) merge one known; immediate right
2729 2718 | | | | | |
2730 2719 | o---+ | | changeset: 23:a01cddf0766d
2731 2720 | | | | | | parent: 1:6db2ef61d156
2732 2721 | | | | | | parent: 22:e0d9cccacb5d
2733 2722 | | | | | | user: test
2734 2723 | | | | | | date: Thu Jan 01 00:00:23 1970 +0000
2735 2724 | | | | | | summary: (23) merge one known; immediate left
2736 2725 | | | | | |
2737 2726 | o-------+ changeset: 22:e0d9cccacb5d
2738 2727 | | | | | | parent: 18:1aa84d96232a
2739 2728 |/ / / / / parent: 21:d42a756af44d
2740 2729 | | | | | user: test
2741 2730 | | | | | date: Thu Jan 01 00:00:22 1970 +0000
2742 2731 | | | | | summary: (22) merge two known; one far left, one far right
2743 2732 | | | | |
2744 2733 | | | | o changeset: 21:d42a756af44d
2745 2734 | | | | |\ parent: 19:31ddc2c1573b
2746 2735 | | | | | | parent: 20:d30ed6450e32
2747 2736 | | | | | | user: test
2748 2737 | | | | | | date: Thu Jan 01 00:00:21 1970 +0000
2749 2738 | | | | | | summary: (21) expand
2750 2739 | | | | | |
2751 2740 +-+-------o changeset: 20:d30ed6450e32
2752 2741 | | | | | parent: 0:e6eb3150255d
2753 2742 | | | | | parent: 18:1aa84d96232a
2754 2743 | | | | | user: test
2755 2744 | | | | | date: Thu Jan 01 00:00:20 1970 +0000
2756 2745 | | | | | summary: (20) merge two known; two far right
2757 2746 | | | | |
2758 2747 | | | | o changeset: 19:31ddc2c1573b
2759 2748 | | | | |\ parent: 15:1dda3f72782d
2760 2749 | | | | | | parent: 17:44765d7c06e0
2761 2750 | | | | | | user: test
2762 2751 | | | | | | date: Thu Jan 01 00:00:19 1970 +0000
2763 2752 | | | | | | summary: (19) expand
2764 2753 | | | | | |
2765 2754 o---+---+ | changeset: 18:1aa84d96232a
2766 2755 | | | | | parent: 1:6db2ef61d156
2767 2756 / / / / / parent: 15:1dda3f72782d
2768 2757 | | | | | user: test
2769 2758 | | | | | date: Thu Jan 01 00:00:18 1970 +0000
2770 2759 | | | | | summary: (18) merge two known; two far left
2771 2760 | | | | |
2772 2761 | | | | o changeset: 17:44765d7c06e0
2773 2762 | | | | |\ parent: 12:86b91144a6e9
2774 2763 | | | | | | parent: 16:3677d192927d
2775 2764 | | | | | | user: test
2776 2765 | | | | | | date: Thu Jan 01 00:00:17 1970 +0000
2777 2766 | | | | | | summary: (17) expand
2778 2767 | | | | | |
2779 2768 +-+-------o changeset: 16:3677d192927d
2780 2769 | | | | | parent: 0:e6eb3150255d
2781 2770 | | | | | parent: 1:6db2ef61d156
2782 2771 | | | | | user: test
2783 2772 | | | | | date: Thu Jan 01 00:00:16 1970 +0000
2784 2773 | | | | | summary: (16) merge two known; one immediate right, one near right
2785 2774 | | | | |
2786 2775 | | | o | changeset: 15:1dda3f72782d
2787 2776 | | | |\ \ parent: 13:22d8966a97e3
2788 2777 | | | | | | parent: 14:8eac370358ef
2789 2778 | | | | | | user: test
2790 2779 | | | | | | date: Thu Jan 01 00:00:15 1970 +0000
2791 2780 | | | | | | summary: (15) expand
2792 2781 | | | | | |
2793 2782 +-------o | changeset: 14:8eac370358ef
2794 2783 | | | | |/ parent: 0:e6eb3150255d
2795 2784 | | | | | parent: 12:86b91144a6e9
2796 2785 | | | | | user: test
2797 2786 | | | | | date: Thu Jan 01 00:00:14 1970 +0000
2798 2787 | | | | | summary: (14) merge two known; one immediate right, one far right
2799 2788 | | | | |
2800 2789 | | | o | changeset: 13:22d8966a97e3
2801 2790 | | | |\ \ parent: 9:7010c0af0a35
2802 2791 | | | | | | parent: 11:832d76e6bdf2
2803 2792 | | | | | | user: test
2804 2793 | | | | | | date: Thu Jan 01 00:00:13 1970 +0000
2805 2794 | | | | | | summary: (13) expand
2806 2795 | | | | | |
2807 2796 | +---+---o changeset: 12:86b91144a6e9
2808 2797 | | | | | parent: 1:6db2ef61d156
2809 2798 | | | | | parent: 9:7010c0af0a35
2810 2799 | | | | | user: test
2811 2800 | | | | | date: Thu Jan 01 00:00:12 1970 +0000
2812 2801 | | | | | summary: (12) merge two known; one immediate right, one far left
2813 2802 | | | | |
2814 2803 | | | | o changeset: 11:832d76e6bdf2
2815 2804 | | | | |\ parent: 6:b105a072e251
2816 2805 | | | | | | parent: 10:74c64d036d72
2817 2806 | | | | | | user: test
2818 2807 | | | | | | date: Thu Jan 01 00:00:11 1970 +0000
2819 2808 | | | | | | summary: (11) expand
2820 2809 | | | | | |
2821 2810 +---------o changeset: 10:74c64d036d72
2822 2811 | | | | |/ parent: 0:e6eb3150255d
2823 2812 | | | | | parent: 6:b105a072e251
2824 2813 | | | | | user: test
2825 2814 | | | | | date: Thu Jan 01 00:00:10 1970 +0000
2826 2815 | | | | | summary: (10) merge two known; one immediate left, one near right
2827 2816 | | | | |
2828 2817 | | | o | changeset: 9:7010c0af0a35
2829 2818 | | | |\ \ parent: 7:b632bb1b1224
2830 2819 | | | | | | parent: 8:7a0b11f71937
2831 2820 | | | | | | user: test
2832 2821 | | | | | | date: Thu Jan 01 00:00:09 1970 +0000
2833 2822 | | | | | | summary: (9) expand
2834 2823 | | | | | |
2835 2824 +-------o | changeset: 8:7a0b11f71937
2836 2825 | | | |/ / parent: 0:e6eb3150255d
2837 2826 | | | | | parent: 7:b632bb1b1224
2838 2827 | | | | | user: test
2839 2828 | | | | | date: Thu Jan 01 00:00:08 1970 +0000
2840 2829 | | | | | summary: (8) merge two known; one immediate left, one far right
2841 2830 | | | | |
2842 2831 | | | o | changeset: 7:b632bb1b1224
2843 2832 | | | |\ \ parent: 2:3d9a33b8d1e1
2844 2833 | | | | | | parent: 5:4409d547b708
2845 2834 | | | | | | user: test
2846 2835 | | | | | | date: Thu Jan 01 00:00:07 1970 +0000
2847 2836 | | | | | | summary: (7) expand
2848 2837 | | | | | |
2849 2838 | | | +---o changeset: 6:b105a072e251
2850 2839 | | | | |/ parent: 2:3d9a33b8d1e1
2851 2840 | | | | | parent: 5:4409d547b708
2852 2841 | | | | | user: test
2853 2842 | | | | | date: Thu Jan 01 00:00:06 1970 +0000
2854 2843 | | | | | summary: (6) merge two known; one immediate left, one far left
2855 2844 | | | | |
2856 2845 | | | o | changeset: 5:4409d547b708
2857 2846 | | | |\ \ parent: 3:27eef8ed80b4
2858 2847 | | | | | | parent: 4:26a8bac39d9f
2859 2848 | | | | | | user: test
2860 2849 | | | | | | date: Thu Jan 01 00:00:05 1970 +0000
2861 2850 | | | | | | summary: (5) expand
2862 2851 | | | | | |
2863 2852 | +---o | | changeset: 4:26a8bac39d9f
2864 2853 | | | |/ / parent: 1:6db2ef61d156
2865 2854 | | | | | parent: 3:27eef8ed80b4
2866 2855 | | | | | user: test
2867 2856 | | | | | date: Thu Jan 01 00:00:04 1970 +0000
2868 2857 | | | | | summary: (4) merge two known; one immediate left, one immediate right
2869 2858 | | | | |
2870 2859
2871 2860 .. unless HGPLAINEXCEPT=graph is set:
2872 2861
2873 2862 $ HGPLAIN=1 HGPLAINEXCEPT=graph hg log -G -r 'file("a")' -m
2874 2863 @ changeset: 36:08a19a744424
2875 2864 : branch: branch
2876 2865 : tag: tip
2877 2866 : parent: 35:9159c3644c5e
2878 2867 : parent: 35:9159c3644c5e
2879 2868 : user: test
2880 2869 : date: Thu Jan 01 00:00:36 1970 +0000
2881 2870 : summary: (36) buggy merge: identical parents
2882 2871 :
2883 2872 o changeset: 32:d06dffa21a31
2884 2873 |\ parent: 27:886ed638191b
2885 2874 | : parent: 31:621d83e11f67
2886 2875 | : user: test
2887 2876 | : date: Thu Jan 01 00:00:32 1970 +0000
2888 2877 | : summary: (32) expand
2889 2878 | :
2890 2879 o : changeset: 31:621d83e11f67
2891 2880 |\: parent: 21:d42a756af44d
2892 2881 | : parent: 30:6e11cd4b648f
2893 2882 | : user: test
2894 2883 | : date: Thu Jan 01 00:00:31 1970 +0000
2895 2884 | : summary: (31) expand
2896 2885 | :
2897 2886 o : changeset: 30:6e11cd4b648f
2898 2887 |\ \ parent: 28:44ecd0b9ae99
2899 2888 | ~ : parent: 29:cd9bb2be7593
2900 2889 | : user: test
2901 2890 | : date: Thu Jan 01 00:00:30 1970 +0000
2902 2891 | : summary: (30) expand
2903 2892 | /
2904 2893 o : changeset: 28:44ecd0b9ae99
2905 2894 |\ \ parent: 1:6db2ef61d156
2906 2895 | ~ : parent: 26:7f25b6c2f0b9
2907 2896 | : user: test
2908 2897 | : date: Thu Jan 01 00:00:28 1970 +0000
2909 2898 | : summary: (28) merge zero known
2910 2899 | /
2911 2900 o : changeset: 26:7f25b6c2f0b9
2912 2901 |\ \ parent: 18:1aa84d96232a
2913 2902 | | : parent: 25:91da8ed57247
2914 2903 | | : user: test
2915 2904 | | : date: Thu Jan 01 00:00:26 1970 +0000
2916 2905 | | : summary: (26) merge one known; far right
2917 2906 | | :
2918 2907 | o : changeset: 25:91da8ed57247
2919 2908 | |\: parent: 21:d42a756af44d
2920 2909 | | : parent: 24:a9c19a3d96b7
2921 2910 | | : user: test
2922 2911 | | : date: Thu Jan 01 00:00:25 1970 +0000
2923 2912 | | : summary: (25) merge one known; far left
2924 2913 | | :
2925 2914 | o : changeset: 24:a9c19a3d96b7
2926 2915 | |\ \ parent: 0:e6eb3150255d
2927 2916 | | ~ : parent: 23:a01cddf0766d
2928 2917 | | : user: test
2929 2918 | | : date: Thu Jan 01 00:00:24 1970 +0000
2930 2919 | | : summary: (24) merge one known; immediate right
2931 2920 | | /
2932 2921 | o : changeset: 23:a01cddf0766d
2933 2922 | |\ \ parent: 1:6db2ef61d156
2934 2923 | | ~ : parent: 22:e0d9cccacb5d
2935 2924 | | : user: test
2936 2925 | | : date: Thu Jan 01 00:00:23 1970 +0000
2937 2926 | | : summary: (23) merge one known; immediate left
2938 2927 | | /
2939 2928 | o : changeset: 22:e0d9cccacb5d
2940 2929 |/:/ parent: 18:1aa84d96232a
2941 2930 | : parent: 21:d42a756af44d
2942 2931 | : user: test
2943 2932 | : date: Thu Jan 01 00:00:22 1970 +0000
2944 2933 | : summary: (22) merge two known; one far left, one far right
2945 2934 | :
2946 2935 | o changeset: 21:d42a756af44d
2947 2936 | |\ parent: 19:31ddc2c1573b
2948 2937 | | | parent: 20:d30ed6450e32
2949 2938 | | | user: test
2950 2939 | | | date: Thu Jan 01 00:00:21 1970 +0000
2951 2940 | | | summary: (21) expand
2952 2941 | | |
2953 2942 +---o changeset: 20:d30ed6450e32
2954 2943 | | | parent: 0:e6eb3150255d
2955 2944 | | ~ parent: 18:1aa84d96232a
2956 2945 | | user: test
2957 2946 | | date: Thu Jan 01 00:00:20 1970 +0000
2958 2947 | | summary: (20) merge two known; two far right
2959 2948 | |
2960 2949 | o changeset: 19:31ddc2c1573b
2961 2950 | |\ parent: 15:1dda3f72782d
2962 2951 | | | parent: 17:44765d7c06e0
2963 2952 | | | user: test
2964 2953 | | | date: Thu Jan 01 00:00:19 1970 +0000
2965 2954 | | | summary: (19) expand
2966 2955 | | |
2967 2956 o | | changeset: 18:1aa84d96232a
2968 2957 |\| | parent: 1:6db2ef61d156
2969 2958 ~ | | parent: 15:1dda3f72782d
2970 2959 | | user: test
2971 2960 | | date: Thu Jan 01 00:00:18 1970 +0000
2972 2961 | | summary: (18) merge two known; two far left
2973 2962 / /
2974 2963 | o changeset: 17:44765d7c06e0
2975 2964 | |\ parent: 12:86b91144a6e9
2976 2965 | | | parent: 16:3677d192927d
2977 2966 | | | user: test
2978 2967 | | | date: Thu Jan 01 00:00:17 1970 +0000
2979 2968 | | | summary: (17) expand
2980 2969 | | |
2981 2970 | | o changeset: 16:3677d192927d
2982 2971 | | |\ parent: 0:e6eb3150255d
2983 2972 | | ~ ~ parent: 1:6db2ef61d156
2984 2973 | | user: test
2985 2974 | | date: Thu Jan 01 00:00:16 1970 +0000
2986 2975 | | summary: (16) merge two known; one immediate right, one near right
2987 2976 | |
2988 2977 o | changeset: 15:1dda3f72782d
2989 2978 |\ \ parent: 13:22d8966a97e3
2990 2979 | | | parent: 14:8eac370358ef
2991 2980 | | | user: test
2992 2981 | | | date: Thu Jan 01 00:00:15 1970 +0000
2993 2982 | | | summary: (15) expand
2994 2983 | | |
2995 2984 | o | changeset: 14:8eac370358ef
2996 2985 | |\| parent: 0:e6eb3150255d
2997 2986 | ~ | parent: 12:86b91144a6e9
2998 2987 | | user: test
2999 2988 | | date: Thu Jan 01 00:00:14 1970 +0000
3000 2989 | | summary: (14) merge two known; one immediate right, one far right
3001 2990 | /
3002 2991 o | changeset: 13:22d8966a97e3
3003 2992 |\ \ parent: 9:7010c0af0a35
3004 2993 | | | parent: 11:832d76e6bdf2
3005 2994 | | | user: test
3006 2995 | | | date: Thu Jan 01 00:00:13 1970 +0000
3007 2996 | | | summary: (13) expand
3008 2997 | | |
3009 2998 +---o changeset: 12:86b91144a6e9
3010 2999 | | | parent: 1:6db2ef61d156
3011 3000 | | ~ parent: 9:7010c0af0a35
3012 3001 | | user: test
3013 3002 | | date: Thu Jan 01 00:00:12 1970 +0000
3014 3003 | | summary: (12) merge two known; one immediate right, one far left
3015 3004 | |
3016 3005 | o changeset: 11:832d76e6bdf2
3017 3006 | |\ parent: 6:b105a072e251
3018 3007 | | | parent: 10:74c64d036d72
3019 3008 | | | user: test
3020 3009 | | | date: Thu Jan 01 00:00:11 1970 +0000
3021 3010 | | | summary: (11) expand
3022 3011 | | |
3023 3012 | | o changeset: 10:74c64d036d72
3024 3013 | |/| parent: 0:e6eb3150255d
3025 3014 | | ~ parent: 6:b105a072e251
3026 3015 | | user: test
3027 3016 | | date: Thu Jan 01 00:00:10 1970 +0000
3028 3017 | | summary: (10) merge two known; one immediate left, one near right
3029 3018 | |
3030 3019 o | changeset: 9:7010c0af0a35
3031 3020 |\ \ parent: 7:b632bb1b1224
3032 3021 | | | parent: 8:7a0b11f71937
3033 3022 | | | user: test
3034 3023 | | | date: Thu Jan 01 00:00:09 1970 +0000
3035 3024 | | | summary: (9) expand
3036 3025 | | |
3037 3026 | o | changeset: 8:7a0b11f71937
3038 3027 |/| | parent: 0:e6eb3150255d
3039 3028 | ~ | parent: 7:b632bb1b1224
3040 3029 | | user: test
3041 3030 | | date: Thu Jan 01 00:00:08 1970 +0000
3042 3031 | | summary: (8) merge two known; one immediate left, one far right
3043 3032 | /
3044 3033 o | changeset: 7:b632bb1b1224
3045 3034 |\ \ parent: 2:3d9a33b8d1e1
3046 3035 | ~ | parent: 5:4409d547b708
3047 3036 | | user: test
3048 3037 | | date: Thu Jan 01 00:00:07 1970 +0000
3049 3038 | | summary: (7) expand
3050 3039 | /
3051 3040 | o changeset: 6:b105a072e251
3052 3041 |/| parent: 2:3d9a33b8d1e1
3053 3042 | ~ parent: 5:4409d547b708
3054 3043 | user: test
3055 3044 | date: Thu Jan 01 00:00:06 1970 +0000
3056 3045 | summary: (6) merge two known; one immediate left, one far left
3057 3046 |
3058 3047 o changeset: 5:4409d547b708
3059 3048 |\ parent: 3:27eef8ed80b4
3060 3049 | ~ parent: 4:26a8bac39d9f
3061 3050 | user: test
3062 3051 | date: Thu Jan 01 00:00:05 1970 +0000
3063 3052 | summary: (5) expand
3064 3053 |
3065 3054 o changeset: 4:26a8bac39d9f
3066 3055 |\ parent: 1:6db2ef61d156
3067 3056 ~ ~ parent: 3:27eef8ed80b4
3068 3057 user: test
3069 3058 date: Thu Jan 01 00:00:04 1970 +0000
3070 3059 summary: (4) merge two known; one immediate left, one immediate right
3071 3060
3072 3061 Draw only part of a grandparent line differently with "<N><char>"; only the
3073 3062 last N lines (for positive N) or everything but the first N lines (for
3074 3063 negative N) along the current node use the style, the rest of the edge uses
3075 3064 the parent edge styling.
3076 3065
3077 3066 Last 3 lines:
3078 3067
3079 3068 $ cat << EOF >> $HGRCPATH
3080 3069 > [experimental]
3081 3070 > graphstyle.parent = !
3082 3071 > graphstyle.grandparent = 3.
3083 3072 > graphstyle.missing =
3084 3073 > EOF
3085 3074 $ hg log -G -r '36:18 & file("a")' -m
3086 3075 @ changeset: 36:08a19a744424
3087 3076 ! branch: branch
3088 3077 ! tag: tip
3089 3078 ! parent: 35:9159c3644c5e
3090 3079 ! parent: 35:9159c3644c5e
3091 3080 ! user: test
3092 3081 . date: Thu Jan 01 00:00:36 1970 +0000
3093 3082 . summary: (36) buggy merge: identical parents
3094 3083 .
3095 3084 o changeset: 32:d06dffa21a31
3096 3085 !\ parent: 27:886ed638191b
3097 3086 ! ! parent: 31:621d83e11f67
3098 3087 ! ! user: test
3099 3088 ! . date: Thu Jan 01 00:00:32 1970 +0000
3100 3089 ! . summary: (32) expand
3101 3090 ! .
3102 3091 o ! changeset: 31:621d83e11f67
3103 3092 !\! parent: 21:d42a756af44d
3104 3093 ! ! parent: 30:6e11cd4b648f
3105 3094 ! ! user: test
3106 3095 ! ! date: Thu Jan 01 00:00:31 1970 +0000
3107 3096 ! ! summary: (31) expand
3108 3097 ! !
3109 3098 o ! changeset: 30:6e11cd4b648f
3110 3099 !\ \ parent: 28:44ecd0b9ae99
3111 3100 ! ~ ! parent: 29:cd9bb2be7593
3112 3101 ! ! user: test
3113 3102 ! ! date: Thu Jan 01 00:00:30 1970 +0000
3114 3103 ! ! summary: (30) expand
3115 3104 ! /
3116 3105 o ! changeset: 28:44ecd0b9ae99
3117 3106 !\ \ parent: 1:6db2ef61d156
3118 3107 ! ~ ! parent: 26:7f25b6c2f0b9
3119 3108 ! ! user: test
3120 3109 ! ! date: Thu Jan 01 00:00:28 1970 +0000
3121 3110 ! ! summary: (28) merge zero known
3122 3111 ! /
3123 3112 o ! changeset: 26:7f25b6c2f0b9
3124 3113 !\ \ parent: 18:1aa84d96232a
3125 3114 ! ! ! parent: 25:91da8ed57247
3126 3115 ! ! ! user: test
3127 3116 ! ! ! date: Thu Jan 01 00:00:26 1970 +0000
3128 3117 ! ! ! summary: (26) merge one known; far right
3129 3118 ! ! !
3130 3119 ! o ! changeset: 25:91da8ed57247
3131 3120 ! !\! parent: 21:d42a756af44d
3132 3121 ! ! ! parent: 24:a9c19a3d96b7
3133 3122 ! ! ! user: test
3134 3123 ! ! ! date: Thu Jan 01 00:00:25 1970 +0000
3135 3124 ! ! ! summary: (25) merge one known; far left
3136 3125 ! ! !
3137 3126 ! o ! changeset: 24:a9c19a3d96b7
3138 3127 ! !\ \ parent: 0:e6eb3150255d
3139 3128 ! ! ~ ! parent: 23:a01cddf0766d
3140 3129 ! ! ! user: test
3141 3130 ! ! ! date: Thu Jan 01 00:00:24 1970 +0000
3142 3131 ! ! ! summary: (24) merge one known; immediate right
3143 3132 ! ! /
3144 3133 ! o ! changeset: 23:a01cddf0766d
3145 3134 ! !\ \ parent: 1:6db2ef61d156
3146 3135 ! ! ~ ! parent: 22:e0d9cccacb5d
3147 3136 ! ! ! user: test
3148 3137 ! ! ! date: Thu Jan 01 00:00:23 1970 +0000
3149 3138 ! ! ! summary: (23) merge one known; immediate left
3150 3139 ! ! /
3151 3140 ! o ! changeset: 22:e0d9cccacb5d
3152 3141 !/!/ parent: 18:1aa84d96232a
3153 3142 ! ! parent: 21:d42a756af44d
3154 3143 ! ! user: test
3155 3144 ! ! date: Thu Jan 01 00:00:22 1970 +0000
3156 3145 ! ! summary: (22) merge two known; one far left, one far right
3157 3146 ! !
3158 3147 ! o changeset: 21:d42a756af44d
3159 3148 ! !\ parent: 19:31ddc2c1573b
3160 3149 ! ! ! parent: 20:d30ed6450e32
3161 3150 ! ! ! user: test
3162 3151 ! ! ! date: Thu Jan 01 00:00:21 1970 +0000
3163 3152 ! ! ! summary: (21) expand
3164 3153 ! ! !
3165 3154 +---o changeset: 20:d30ed6450e32
3166 3155 ! ! | parent: 0:e6eb3150255d
3167 3156 ! ! ~ parent: 18:1aa84d96232a
3168 3157 ! ! user: test
3169 3158 ! ! date: Thu Jan 01 00:00:20 1970 +0000
3170 3159 ! ! summary: (20) merge two known; two far right
3171 3160 ! !
3172 3161 ! o changeset: 19:31ddc2c1573b
3173 3162 ! |\ parent: 15:1dda3f72782d
3174 3163 ! ~ ~ parent: 17:44765d7c06e0
3175 3164 ! user: test
3176 3165 ! date: Thu Jan 01 00:00:19 1970 +0000
3177 3166 ! summary: (19) expand
3178 3167 !
3179 3168 o changeset: 18:1aa84d96232a
3180 3169 |\ parent: 1:6db2ef61d156
3181 3170 ~ ~ parent: 15:1dda3f72782d
3182 3171 user: test
3183 3172 date: Thu Jan 01 00:00:18 1970 +0000
3184 3173 summary: (18) merge two known; two far left
3185 3174
3186 3175 All but the first 3 lines:
3187 3176
3188 3177 $ cat << EOF >> $HGRCPATH
3189 3178 > [experimental]
3190 3179 > graphstyle.parent = !
3191 3180 > graphstyle.grandparent = -3.
3192 3181 > graphstyle.missing =
3193 3182 > EOF
3194 3183 $ hg log -G -r '36:18 & file("a")' -m
3195 3184 @ changeset: 36:08a19a744424
3196 3185 ! branch: branch
3197 3186 ! tag: tip
3198 3187 . parent: 35:9159c3644c5e
3199 3188 . parent: 35:9159c3644c5e
3200 3189 . user: test
3201 3190 . date: Thu Jan 01 00:00:36 1970 +0000
3202 3191 . summary: (36) buggy merge: identical parents
3203 3192 .
3204 3193 o changeset: 32:d06dffa21a31
3205 3194 !\ parent: 27:886ed638191b
3206 3195 ! ! parent: 31:621d83e11f67
3207 3196 ! . user: test
3208 3197 ! . date: Thu Jan 01 00:00:32 1970 +0000
3209 3198 ! . summary: (32) expand
3210 3199 ! .
3211 3200 o ! changeset: 31:621d83e11f67
3212 3201 !\! parent: 21:d42a756af44d
3213 3202 ! ! parent: 30:6e11cd4b648f
3214 3203 ! ! user: test
3215 3204 ! ! date: Thu Jan 01 00:00:31 1970 +0000
3216 3205 ! ! summary: (31) expand
3217 3206 ! !
3218 3207 o ! changeset: 30:6e11cd4b648f
3219 3208 !\ \ parent: 28:44ecd0b9ae99
3220 3209 ! ~ ! parent: 29:cd9bb2be7593
3221 3210 ! ! user: test
3222 3211 ! ! date: Thu Jan 01 00:00:30 1970 +0000
3223 3212 ! ! summary: (30) expand
3224 3213 ! /
3225 3214 o ! changeset: 28:44ecd0b9ae99
3226 3215 !\ \ parent: 1:6db2ef61d156
3227 3216 ! ~ ! parent: 26:7f25b6c2f0b9
3228 3217 ! ! user: test
3229 3218 ! ! date: Thu Jan 01 00:00:28 1970 +0000
3230 3219 ! ! summary: (28) merge zero known
3231 3220 ! /
3232 3221 o ! changeset: 26:7f25b6c2f0b9
3233 3222 !\ \ parent: 18:1aa84d96232a
3234 3223 ! ! ! parent: 25:91da8ed57247
3235 3224 ! ! ! user: test
3236 3225 ! ! ! date: Thu Jan 01 00:00:26 1970 +0000
3237 3226 ! ! ! summary: (26) merge one known; far right
3238 3227 ! ! !
3239 3228 ! o ! changeset: 25:91da8ed57247
3240 3229 ! !\! parent: 21:d42a756af44d
3241 3230 ! ! ! parent: 24:a9c19a3d96b7
3242 3231 ! ! ! user: test
3243 3232 ! ! ! date: Thu Jan 01 00:00:25 1970 +0000
3244 3233 ! ! ! summary: (25) merge one known; far left
3245 3234 ! ! !
3246 3235 ! o ! changeset: 24:a9c19a3d96b7
3247 3236 ! !\ \ parent: 0:e6eb3150255d
3248 3237 ! ! ~ ! parent: 23:a01cddf0766d
3249 3238 ! ! ! user: test
3250 3239 ! ! ! date: Thu Jan 01 00:00:24 1970 +0000
3251 3240 ! ! ! summary: (24) merge one known; immediate right
3252 3241 ! ! /
3253 3242 ! o ! changeset: 23:a01cddf0766d
3254 3243 ! !\ \ parent: 1:6db2ef61d156
3255 3244 ! ! ~ ! parent: 22:e0d9cccacb5d
3256 3245 ! ! ! user: test
3257 3246 ! ! ! date: Thu Jan 01 00:00:23 1970 +0000
3258 3247 ! ! ! summary: (23) merge one known; immediate left
3259 3248 ! ! /
3260 3249 ! o ! changeset: 22:e0d9cccacb5d
3261 3250 !/!/ parent: 18:1aa84d96232a
3262 3251 ! ! parent: 21:d42a756af44d
3263 3252 ! ! user: test
3264 3253 ! ! date: Thu Jan 01 00:00:22 1970 +0000
3265 3254 ! ! summary: (22) merge two known; one far left, one far right
3266 3255 ! !
3267 3256 ! o changeset: 21:d42a756af44d
3268 3257 ! !\ parent: 19:31ddc2c1573b
3269 3258 ! ! ! parent: 20:d30ed6450e32
3270 3259 ! ! ! user: test
3271 3260 ! ! ! date: Thu Jan 01 00:00:21 1970 +0000
3272 3261 ! ! ! summary: (21) expand
3273 3262 ! ! !
3274 3263 +---o changeset: 20:d30ed6450e32
3275 3264 ! ! | parent: 0:e6eb3150255d
3276 3265 ! ! ~ parent: 18:1aa84d96232a
3277 3266 ! ! user: test
3278 3267 ! ! date: Thu Jan 01 00:00:20 1970 +0000
3279 3268 ! ! summary: (20) merge two known; two far right
3280 3269 ! !
3281 3270 ! o changeset: 19:31ddc2c1573b
3282 3271 ! |\ parent: 15:1dda3f72782d
3283 3272 ! ~ ~ parent: 17:44765d7c06e0
3284 3273 ! user: test
3285 3274 ! date: Thu Jan 01 00:00:19 1970 +0000
3286 3275 ! summary: (19) expand
3287 3276 !
3288 3277 o changeset: 18:1aa84d96232a
3289 3278 |\ parent: 1:6db2ef61d156
3290 3279 ~ ~ parent: 15:1dda3f72782d
3291 3280 user: test
3292 3281 date: Thu Jan 01 00:00:18 1970 +0000
3293 3282 summary: (18) merge two known; two far left
3294 3283
3295 3284 $ cd ..
3296 3285
3297 3286 Change graph shorten, test better with graphstyle.missing not none
3298 3287
3299 3288 $ cd repo
3300 3289 $ cat << EOF >> $HGRCPATH
3301 3290 > [experimental]
3302 3291 > graphstyle.parent = |
3303 3292 > graphstyle.grandparent = :
3304 3293 > graphstyle.missing = '
3305 3294 > graphshorten = true
3306 3295 > EOF
3307 3296 $ hg log -G -r 'file("a")' -m -T '{rev} {desc}'
3308 3297 @ 36 (36) buggy merge: identical parents
3309 3298 o 32 (32) expand
3310 3299 |\
3311 3300 o : 31 (31) expand
3312 3301 |\:
3313 3302 o : 30 (30) expand
3314 3303 |\ \
3315 3304 o \ \ 28 (28) merge zero known
3316 3305 |\ \ \
3317 3306 o \ \ \ 26 (26) merge one known; far right
3318 3307 |\ \ \ \
3319 3308 | o-----+ 25 (25) merge one known; far left
3320 3309 | o ' ' : 24 (24) merge one known; immediate right
3321 3310 | |\ \ \ \
3322 3311 | o---+ ' : 23 (23) merge one known; immediate left
3323 3312 | o-------+ 22 (22) merge two known; one far left, one far right
3324 3313 |/ / / / /
3325 3314 | ' ' ' o 21 (21) expand
3326 3315 | ' ' ' |\
3327 3316 +-+-------o 20 (20) merge two known; two far right
3328 3317 | ' ' ' o 19 (19) expand
3329 3318 | ' ' ' |\
3330 3319 o---+---+ | 18 (18) merge two known; two far left
3331 3320 / / / / /
3332 3321 ' ' ' | o 17 (17) expand
3333 3322 ' ' ' | |\
3334 3323 +-+-------o 16 (16) merge two known; one immediate right, one near right
3335 3324 ' ' ' o | 15 (15) expand
3336 3325 ' ' ' |\ \
3337 3326 +-------o | 14 (14) merge two known; one immediate right, one far right
3338 3327 ' ' ' | |/
3339 3328 ' ' ' o | 13 (13) expand
3340 3329 ' ' ' |\ \
3341 3330 ' +---+---o 12 (12) merge two known; one immediate right, one far left
3342 3331 ' ' ' | o 11 (11) expand
3343 3332 ' ' ' | |\
3344 3333 +---------o 10 (10) merge two known; one immediate left, one near right
3345 3334 ' ' ' | |/
3346 3335 ' ' ' o | 9 (9) expand
3347 3336 ' ' ' |\ \
3348 3337 +-------o | 8 (8) merge two known; one immediate left, one far right
3349 3338 ' ' ' |/ /
3350 3339 ' ' ' o | 7 (7) expand
3351 3340 ' ' ' |\ \
3352 3341 ' ' ' +---o 6 (6) merge two known; one immediate left, one far left
3353 3342 ' ' ' | '/
3354 3343 ' ' ' o ' 5 (5) expand
3355 3344 ' ' ' |\ \
3356 3345 ' +---o ' ' 4 (4) merge two known; one immediate left, one immediate right
3357 3346 ' ' ' '/ /
3358 3347
3359 3348 behavior with newlines
3360 3349
3361 3350 $ hg log -G -r ::2 -T '{rev} {desc}'
3362 3351 o 2 (2) collapse
3363 3352 o 1 (1) collapse
3364 3353 o 0 (0) root
3365 3354
3366 3355 $ hg log -G -r ::2 -T '{rev} {desc}\n'
3367 3356 o 2 (2) collapse
3368 3357 o 1 (1) collapse
3369 3358 o 0 (0) root
3370 3359
3371 3360 $ hg log -G -r ::2 -T '{rev} {desc}\n\n'
3372 3361 o 2 (2) collapse
3373 3362 |
3374 3363 o 1 (1) collapse
3375 3364 |
3376 3365 o 0 (0) root
3377 3366
3378 3367
3379 3368 $ hg log -G -r ::2 -T '\n{rev} {desc}'
3380 3369 o
3381 3370 | 2 (2) collapse
3382 3371 o
3383 3372 | 1 (1) collapse
3384 3373 o
3385 3374 0 (0) root
3386 3375
3387 3376 $ hg log -G -r ::2 -T '{rev} {desc}\n\n\n'
3388 3377 o 2 (2) collapse
3389 3378 |
3390 3379 |
3391 3380 o 1 (1) collapse
3392 3381 |
3393 3382 |
3394 3383 o 0 (0) root
3395 3384
3396 3385
3397 3386 $ cd ..
3398 3387
3399 3388 When inserting extra line nodes to handle more than 2 parents, ensure that
3400 3389 the right node styles are used (issue5174):
3401 3390
3402 3391 $ hg init repo-issue5174
3403 3392 $ cd repo-issue5174
3404 3393 $ echo a > f0
3405 3394 $ hg ci -Aqm 0
3406 3395 $ echo a > f1
3407 3396 $ hg ci -Aqm 1
3408 3397 $ echo a > f2
3409 3398 $ hg ci -Aqm 2
3410 3399 $ hg co ".^"
3411 3400 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
3412 3401 $ echo a > f3
3413 3402 $ hg ci -Aqm 3
3414 3403 $ hg co ".^^"
3415 3404 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
3416 3405 $ echo a > f4
3417 3406 $ hg ci -Aqm 4
3418 3407 $ hg merge -r 2
3419 3408 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
3420 3409 (branch merge, don't forget to commit)
3421 3410 $ hg ci -qm 5
3422 3411 $ hg merge -r 3
3423 3412 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3424 3413 (branch merge, don't forget to commit)
3425 3414 $ hg ci -qm 6
3426 3415 $ hg log -G -r '0 | 1 | 2 | 6'
3427 3416 @ changeset: 6:851fe89689ad
3428 3417 :\ tag: tip
3429 3418 : : parent: 5:4f1e3cf15f5d
3430 3419 : : parent: 3:b74ba7084d2d
3431 3420 : : user: test
3432 3421 : : date: Thu Jan 01 00:00:00 1970 +0000
3433 3422 : : summary: 6
3434 3423 : :
3435 3424 : \
3436 3425 : :\
3437 3426 : o : changeset: 2:3e6599df4cce
3438 3427 : :/ user: test
3439 3428 : : date: Thu Jan 01 00:00:00 1970 +0000
3440 3429 : : summary: 2
3441 3430 : :
3442 3431 : o changeset: 1:bd9a55143933
3443 3432 :/ user: test
3444 3433 : date: Thu Jan 01 00:00:00 1970 +0000
3445 3434 : summary: 1
3446 3435 :
3447 3436 o changeset: 0:870a5edc339c
3448 3437 user: test
3449 3438 date: Thu Jan 01 00:00:00 1970 +0000
3450 3439 summary: 0
3451 3440
3452 3441
3453 3442 $ cd ..
3454 3443
3455 3444 Multiple roots (issue5440):
3456 3445
3457 3446 $ hg init multiroots
3458 3447 $ cd multiroots
3459 3448 $ cat <<EOF > .hg/hgrc
3460 3449 > [ui]
3461 3450 > logtemplate = '{rev} {desc}\n\n'
3462 3451 > EOF
3463 3452
3464 3453 $ touch foo
3465 3454 $ hg ci -Aqm foo
3466 3455 $ hg co -q null
3467 3456 $ touch bar
3468 3457 $ hg ci -Aqm bar
3469 3458
3470 3459 $ hg log -Gr null:
3471 3460 @ 1 bar
3472 3461 |
3473 3462 | o 0 foo
3474 3463 |/
3475 3464 o -1
3476 3465
3477 3466 $ hg log -Gr null+0
3478 3467 o 0 foo
3479 3468 |
3480 3469 o -1
3481 3470
3482 3471 $ hg log -Gr null+1
3483 3472 @ 1 bar
3484 3473 |
3485 3474 o -1
3486 3475
3487 3476
3488 3477 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now