# HG changeset patch # User Pierre-Yves David # Date 1534853373 -7200 # Node ID 21eab0a9984199a071e8bbb48f50900334f219ed # Parent 537fd9a86c065a0823c37445712397021a4eaf62# Parent 637be9d53ce081d42fc20add9b2ac2c7e098ba1f test-compat: merge mercurial-4.4 into mercurial-4.3 diff -r 537fd9a86c06 -r 21eab0a99841 .hgtags --- a/.hgtags Fri Aug 03 00:22:50 2018 +0200 +++ b/.hgtags Tue Aug 21 14:09:33 2018 +0200 @@ -67,3 +67,4 @@ e4ac2e2c2086f977afa35e23a62f849e9305a225 7.3.0 116cdd8c102ab0ae6295fb4886b0882e75e4d8f7 8.0.0 0887c30255a1a1808d74a63b16e896d457f8ef32 8.0.1 +2c5d79c6459c6fabe0eb8723fc5041ac0dac7a9a 8.1.0 diff -r 537fd9a86c06 -r 21eab0a99841 CHANGELOG --- a/CHANGELOG Fri Aug 03 00:22:50 2018 +0200 +++ b/CHANGELOG Tue Aug 21 14:09:33 2018 +0200 @@ -1,23 +1,49 @@ Changelog ========= -8.1.0 - in progress +8.1.1 - in progress +------------------- + + * clone: fix possible crash when using clone bundle and forcing cache warming + * evolve: properly set second parent during conflict (issue5927) + * next: delete the evolvestate after aborting interrupted `next --evolve` + * next: fix topic restriction when passing --evolve + * obshashrange: fix speed and consistency issues during cache invalidation + * obshashrange: properly persist all caches involved in obshashrange discovery + * prune: improve documentation + +8.1.0 -- 2018-08-03 ------------------- - * compatibility with mercurial 4.7rc0 - * evolve: handle branch changes when solving content divergence, - * evolve: improve multiple aspect of divergence resolution + * compatibility with mercurial 4.7 + * evolve: improve multiple aspect of content-divergence resolution * branch changes handling, * parent changes handling, + * description changes handling, * divergent stack handling, - * evolve: merge commit messages when resolving content divergence (issue5877) + * improved resume, stop and abort of divergent resolution + * evolve: improved automatic resolution of phase-divergence + + * evolve: add a --update and --no-update flag to evolve to control final + working copy parent + * evolve: show `hg help evolve.interrupted-evolve` in error when conflicts * evolve: show unfinished state information in `hg status -v` (issue5886) * evolve: move bookmarks also when updating to successors (issue5923) + * evolve: improve orphan resolution when combined with divergence (issue5946) * amend: abort `--patch` by saving an empty file (issue5925) + * * evolve: add a new `--no-update` flag to keep working copy on the initial revision. * evolve: new help section dedicated to resuming operation interrupted by merge conflit, `hg help evolve.interrupted`. + * obslog: --filternonlocal + + * rewind: first limited version of `rewind` command to restore stack of commit to a + precusors state (check command help for detail and limitation) + +topic (0.10.0) + + * display a hint when a topic becomes empty 8.0.1 -- 2018-06-11 ------------------- diff -r 537fd9a86c06 -r 21eab0a99841 hgext3rd/evolve/__init__.py --- a/hgext3rd/evolve/__init__.py Fri Aug 03 00:22:50 2018 +0200 +++ b/hgext3rd/evolve/__init__.py Tue Aug 21 14:09:33 2018 +0200 @@ -1142,10 +1142,9 @@ children = [ctx for ctx in wparents[0].children() if not ctx.obsolete()] topic = _getcurrenttopic(repo) - filtered = [] + filtered = set() if topic and not opts.get("no_topic", False): - filtered = [ctx for ctx in children if ctx.topic() != topic] - # XXX N-square membership on children + filtered = set(ctx for ctx in children if ctx.topic() != topic) children = [ctx for ctx in children if ctx not in filtered] displayer = compat.changesetdisplayer(ui, repo, {'template': shorttemplate}) @@ -1167,9 +1166,8 @@ else: aspchildren = evolvecmd._aspiringchildren(repo, [repo['.'].rev()]) if topic: - filtered.extend(repo[c] for c in children + filtered.update(repo[c] for c in aspchildren if repo[c].topic() != topic) - # XXX N-square membership on children aspchildren = [ctx for ctx in aspchildren if ctx not in filtered] if not opts['evolve'] or not aspchildren: if filtered: diff -r 537fd9a86c06 -r 21eab0a99841 hgext3rd/evolve/cmdrewrite.py --- a/hgext3rd/evolve/cmdrewrite.py Fri Aug 03 00:22:50 2018 +0200 +++ b/hgext3rd/evolve/cmdrewrite.py Tue Aug 21 14:09:33 2018 +0200 @@ -952,28 +952,29 @@ _('[OPTION] [-r] REV...')) # XXX -U --noupdate option to prevent wc update and or bookmarks update ? def cmdprune(ui, repo, *revs, **opts): - """hide changesets by marking them obsolete + """mark changesets as obsolete or succeeded by another changeset - Pruned changesets are obsolete with no successors. If they also have no - descendants, they are hidden (invisible to all commands). - - Non-obsolete descendants of pruned changesets become "unstable". Use :hg:`evolve` - to handle this situation. + Pruning changesets marks them obsolete, hiding them from the + history log, provided they have no descendants. Otherwise, all + such descendants that aren't themselves obsolete become + "unstable". Use :hg:`evolve` to handle this situation. When you prune the parent of your working copy, Mercurial updates the working copy to a non-obsolete parent. - You can use ``--succ`` to tell Mercurial that a newer version (successor) of the + You can use ``-s/--succ`` to tell Mercurial that a newer version (successor) of the pruned changeset exists. Mercurial records successor revisions in obsolescence markers. - You can use the ``--biject`` option to specify a 1-1 mapping (bijection) between - revisions to pruned (precursor) and successor changesets. This option may be - removed in a future release (with the functionality provided automatically). + If you prune a single revision and specify multiple revisions in + ``-s/--succ``, you are recording a "split" and must acknowledge it by + passing ``--split``. Similarly, when you prune multiple changesets with a + single successor, you must pass the ``--fold`` option. - If you specify multiple revisions in ``--succ``, you are recording a "split" and - must acknowledge it by passing ``--split``. Similarly, when you prune multiple - changesets with a single successor, you must pass the ``--fold`` option. + If you want to supersede multiple revisions at the same time, use + ``--biject`` option to pair the pruned precursor and successor changesets. + This is commonly useful for resolving history divergence, or when someone + else does edits history without obsolescence enabled. """ _checknotesize(ui, opts) revs = scmutil.revrange(repo, list(revs) + opts.get('rev')) diff -r 537fd9a86c06 -r 21eab0a99841 hgext3rd/evolve/evolvecmd.py --- a/hgext3rd/evolve/evolvecmd.py Fri Aug 03 00:22:50 2018 +0200 +++ b/hgext3rd/evolve/evolvecmd.py Tue Aug 21 14:09:33 2018 +0200 @@ -21,7 +21,7 @@ hg, lock as lockmod, merge, - node, + node as nodemod, obsolete, obsutil, phases, @@ -299,7 +299,7 @@ text += bumped.description() new = context.memctx(repo, - parents=[prec.node(), node.nullid], + parents=[prec.node(), nodemod.nullid], text=text, files=files, filectxfn=filectxfn, @@ -320,10 +320,10 @@ # if rebased happened, update bookmarks from there too if rebasedbmupdate: rebasedbmupdate(newid) - repo.ui.status(_('committed as %s\n') % node.short(newid)) + repo.ui.status(_('committed as %s\n') % nodemod.short(newid)) # reroute the working copy parent to the new changeset with repo.dirstate.parentchange(): - repo.dirstate.setparents(newid, node.nullid) + repo.dirstate.setparents(newid, nodemod.nullid) return (True, replacementnode) def _solvedivergent(ui, repo, divergent, evolvestate, dryrun=False, @@ -535,7 +535,7 @@ resparent = evolvestate['resolutionparent'] try: with repo.dirstate.parentchange(): - repo.dirstate.setparents(resparent, node.nullid) + repo.dirstate.setparents(resparent, nodemod.nullid) dirstatedance(repo, divergent, resparent, None) @@ -798,7 +798,7 @@ # We can't make any assumptions about how to update the hash if the # cset in question was split or diverged. if len(successors) == 1 and len(successors[0]) == 1: - newsha1 = node.hex(successors[0][0]) + newsha1 = nodemod.hex(successors[0][0]) commitmsg = commitmsg.replace(sha1, newsha1[:len(sha1)]) else: repo.ui.note(_('The stale commit message reference to %s could ' @@ -814,7 +814,7 @@ nodenew = _relocatecommit(repo, orig, commitmsg) except error.Abort as exc: with repo.dirstate.parentchange(): - repo.setparents(repo['.'].node(), node.nullid) + repo.setparents(dest.node(), orig.node()) repo.dirstate.write(tr) # fix up dirstate for copies and renames copies.duplicatecopies(repo, repo[None], dest.rev(), orig.p1().rev()) @@ -1187,8 +1187,8 @@ for n in dset['divergentnodes']: t = "%s (%s)" if first else " %s (%s)" first = False - fm.plain(t % (node.hex(n)[:hashlen], repo[n].phasestr())) - comprec = node.hex(dset['commonprecursor'])[:hashlen] + fm.plain(t % (nodemod.hex(n)[:hashlen], repo[n].phasestr())) + comprec = nodemod.hex(dset['commonprecursor'])[:hashlen] fm.plain(" (precursor %s)\n" % comprec) fm.plain("\n") @@ -1207,11 +1207,11 @@ 'sourcenode': imprec, 'sourcetype': 'immutableprecursor'}) for dset in dsets: - divnodes = [{'node': node.hex(n), + divnodes = [{'node': nodemod.hex(n), 'phase': repo[n].phasestr(), } for n in dset['divergentnodes']] troubles.append({'troubletype': TROUBLES['CONTENTDIVERGENT'], - 'commonprecursor': node.hex(dset['commonprecursor']), + 'commonprecursor': nodemod.hex(dset['commonprecursor']), 'divergentnodes': divnodes}) fm.data(troubles=troubles) @@ -1543,6 +1543,7 @@ ui.status(_('evolve aborted\n')) ui.status(_('working directory is now at %s\n') % pctx.hex()[:12]) + evolvestate.delete() return 0 return abortevolve(ui, repo, evolvestate) else: @@ -1691,7 +1692,7 @@ evolvestate.delete() ui.status(_('evolve aborted\n')) ui.status(_('working directory is now at %s\n') - % node.hex(startnode)[:12]) + % nodemod.hex(startnode)[:12]) else: raise error.Abort(_("unable to abort interrupted evolve, use 'hg " "evolve --stop' to stop evolve")) @@ -1866,6 +1867,9 @@ repo.dirstate.setparents(ctxparents[0].node(), currentp1) pass + else: + with repo.dirstate.parentchange(): + repo.dirstate.setparents(repo.dirstate.parents()[0], nodemod.nullid) with repo.ui.configoverride(overrides, 'evolve-continue'): node = repo.commit(text=message, user=user, diff -r 537fd9a86c06 -r 21eab0a99841 hgext3rd/evolve/metadata.py --- a/hgext3rd/evolve/metadata.py Fri Aug 03 00:22:50 2018 +0200 +++ b/hgext3rd/evolve/metadata.py Tue Aug 21 14:09:33 2018 +0200 @@ -5,7 +5,7 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. -__version__ = '8.1.0.dev' -testedwith = '4.3.2 4.4.2 4.5.2 4.6.1' +__version__ = '8.1.1.dev' +testedwith = '4.3.2 4.4.2 4.5.2 4.6.2 4.7' minimumhgversion = '4.3' buglink = 'https://bz.mercurial-scm.org/' diff -r 537fd9a86c06 -r 21eab0a99841 hgext3rd/evolve/obsdiscovery.py --- a/hgext3rd/evolve/obsdiscovery.py Fri Aug 03 00:22:50 2018 +0200 +++ b/hgext3rd/evolve/obsdiscovery.py Tue Aug 21 14:09:33 2018 +0200 @@ -65,7 +65,6 @@ _calcsize = struct.calcsize eh = exthelper.exthelper() -eh.merge(stablerangecache.eh) obsexcmsg = utility.obsexcmsg # Config @@ -349,10 +348,50 @@ _updateobshash = "INSERT INTO obshashrange(rev, idx, obshash) VALUES (?,?,?);" _querymeta = "SELECT schemaversion, tiprev, tipnode, nbobsmarker, obssize, obskey FROM meta;" _queryobshash = "SELECT obshash FROM obshashrange WHERE (rev = ? AND idx = ?);" +_query_max_stored = "SELECT MAX(rev) FROM obshashrange" _reset = "DELETE FROM obshashrange;" _delete = "DELETE FROM obshashrange WHERE (rev = ? AND idx = ?);" +def _affectedby(repo, markers): + """return all nodes whose relevant set is affected by this changeset + + This is a reversed version of obsstore.relevantmarkers + """ + affected_nodes = set() + known_markers = set(markers) + node_to_proceed = set() + marker_to_proceed = set(known_markers) + + obsstore = repo.obsstore + + while node_to_proceed or marker_to_proceed: + while marker_to_proceed: + m = marker_to_proceed.pop() + # check successors and parent + if m[1]: + relevant = (m[1], ) + else: # prune case + relevant = ((m[0], ), m[5]) + for l in relevant: + if l is None: + continue + for n in l: + if n not in affected_nodes: + node_to_proceed.add(n) + affected_nodes.add(n) + # marker_to_proceed is now empty: + if node_to_proceed: + n = node_to_proceed.pop() + markers = set() + markers.update(obsstore.successors.get(n, ())) + markers.update(obsstore.predecessors.get(n, ())) + markers -= known_markers + marker_to_proceed.update(markers) + known_markers.update(markers) + + return affected_nodes + class _obshashcache(obscache.dualsourcecache): _schemaversion = 2 @@ -417,46 +456,43 @@ self._updating = True - setrevs = set(revs) - rev = repo.changelog.nodemap.get - # if we have a new markers affecting a node already covered by the - # cache, we must abort. - affected = set() - for m in obsmarkers: - # check successors and parent - for l in (m[1], m[5]): - if l is None: - continue - for p in l: - r = rev(p) - if r is not None and r not in setrevs: - # XXX should check < min(setrevs) or tiprevs - affected.add(r) + con = self._con + if con is not None: + max_stored = con.execute(_query_max_stored).fetchall()[0][0] + affected_nodes = _affectedby(repo, obsmarkers) + + rev = repo.changelog.nodemap.get + affected = [rev(n) for n in affected_nodes] + affected = [r for r in affected + if r is not None and r <= max_stored] - if affected: - repo.ui.log('evoext-cache', 'obshashcache clean - ' - 'new markers affect %d changeset and cached ranges\n' - % len(affected)) - # XXX the current reset is too strong we could just drop the affected range - con = self._con - if con is not None: - con.execute(_reset) - - ranges = repo.stablerange.contains(repo, affected) + if affected: + repo.ui.log('evoext-cache', 'obshashcache clean - ' + 'new markers affect %d changeset and cached ranges\n' + % len(affected)) + if con is not None: + # always reset for now, the code detecting affect is buggy + # so we need to reset more broadly than we would like. + if repo.stablerange._con is None: + con.execute(_reset) + self._data.clear() + else: + ranges = repo.stablerange.contains(repo, affected) + con.executemany(_delete, ranges) + for r in ranges: + self._data.pop(r, None) - con.executemany(_delete, ranges) - - # rewarm key revisions - # - # (The current invalidation is too wide, but rewarming every single - # revision is quite costly) - newrevs = [] - stop = self._cachekey[0] # tiprev - for h in repo.filtered('immutable').changelog.headrevs(): - if h <= stop and h in affected: - newrevs.append(h) - newrevs.extend(revs) - revs = newrevs + # rewarm key revisions + # + # (The current invalidation is too wide, but rewarming every + # single revision is quite costly) + newrevs = [] + stop = self._cachekey[0] # tiprev + for h in repo.filtered('immutable').changelog.headrevs(): + if h <= stop and h in affected: + newrevs.append(h) + newrevs.extend(revs) + revs = newrevs repo.depthcache.update(repo) total = len(revs) @@ -521,6 +557,8 @@ repo = repo.unfiltered() try: with repo.lock(): + if 'stablerange' in vars(repo): + repo.stablerange.save(repo) self._save(repo) except error.LockError: # Exceptionnally we are noisy about it since performance impact @@ -1003,3 +1041,6 @@ else: boundaries['common'] = [node.nullid] return boundaries + +# merge later for outer layer wrapping +eh.merge(stablerangecache.eh) diff -r 537fd9a86c06 -r 21eab0a99841 hgext3rd/evolve/stablerange.py --- a/hgext3rd/evolve/stablerange.py Fri Aug 03 00:22:50 2018 +0200 +++ b/hgext3rd/evolve/stablerange.py Tue Aug 21 14:09:33 2018 +0200 @@ -32,8 +32,6 @@ filterparents = utility.filterparents eh = exthelper.exthelper() -eh.merge(stablesort.eh) -eh.merge(firstmergecache.eh) ################################# @@ -864,3 +862,7 @@ top = (rangeid[0], globalindex) result.append(top) return result + +# merge later for outer layer wrapping +eh.merge(stablesort.eh) +eh.merge(firstmergecache.eh) diff -r 537fd9a86c06 -r 21eab0a99841 hgext3rd/evolve/stablerangecache.py --- a/hgext3rd/evolve/stablerangecache.py Fri Aug 03 00:22:50 2018 +0200 +++ b/hgext3rd/evolve/stablerangecache.py Tue Aug 21 14:09:33 2018 +0200 @@ -9,6 +9,7 @@ import abc import heapq +import random import sqlite3 import time import weakref @@ -29,7 +30,6 @@ from mercurial.i18n import _ eh = exthelper.exthelper() -eh.merge(stablerange.eh) class stablerangeondiskbase(stablerange.stablerangecached, genericcaches.changelogsourcebase): @@ -120,10 +120,17 @@ FROM subranges WHERE (suprev = ? AND supidx = ?) ORDER BY listidx;""" -_querysuperranges = """SELECT suprev, supidx - FROM subranges - WHERE (subrev = ? AND subidx = ?) - ORDER BY listidx;""" + +_querysuperrangesmain = """SELECT DISTINCT suprev, supidx + FROM subranges + WHERE %s;""" + +_querysuperrangesbody = '(subrev = %d and subidx = %d)' + +def _make_querysuperranges(ranges): + # building a tree of OR would allow for more ranges + body = ' OR '.join(_querysuperrangesbody % r for r in ranges) + return _querysuperrangesmain % body class stablerangesqlbase(stablerange.stablerangecached): """class that can handle all the bits needed to store range into sql @@ -144,18 +151,22 @@ self._unsavedsubranges = {} def contains(self, repo, revs): + con = self._con + assert con is not None new = set() known = set() depth = repo.depthcache.get for r in revs: new.add((r, depth(r) - 1)) new.add((r, 0)) - con = self._con - while new and con is not None: - # many execute is not efficient - next = new.pop() - known.add(next) - ranges = set(con.execute(_querysuperranges, next).fetchall()) + while new: + if len(new) < 300: + sample = new + else: + sample = random.sample(new, 300) + known.update(sample) + query = _make_querysuperranges(sample) + ranges = set(con.execute(query).fetchall()) new.update(ranges) new -= known return sorted(known) @@ -214,6 +225,8 @@ def _save(self, repo): repo = repo.unfiltered() repo.depthcache.save(repo) + repo.stablesort.save(repo) + repo.firstmergecache.save(repo) if not self._unsavedsubranges: return # no new data @@ -391,3 +404,5 @@ return tr repo.__class__ = stablerangerepo + +eh.merge(stablerange.eh) diff -r 537fd9a86c06 -r 21eab0a99841 hgext3rd/evolve/stablesort.py --- a/hgext3rd/evolve/stablesort.py Fri Aug 03 00:22:50 2018 +0200 +++ b/hgext3rd/evolve/stablesort.py Tue Aug 21 14:09:33 2018 +0200 @@ -34,7 +34,6 @@ filterparents = utility.filterparents eh = exthelper.exthelper() -eh.merge(depthcache.eh) def _mergepoint_tie_breaker(repo): """the key use to tie break merge parent @@ -705,3 +704,6 @@ 'headcached': stablesort_mergepoint_head_cached, 'headondisk': stablesort_mergepoint_head_ondisk, } + +# merge last so that repo setup wrap after that one. +eh.merge(depthcache.eh) diff -r 537fd9a86c06 -r 21eab0a99841 hgext3rd/evolve/templatekw.py --- a/hgext3rd/evolve/templatekw.py Fri Aug 03 00:22:50 2018 +0200 +++ b/hgext3rd/evolve/templatekw.py Tue Aug 21 14:09:33 2018 +0200 @@ -26,13 +26,15 @@ ### template keywords # XXX it does not handle troubles well :-/ -@eh.templatekw('obsolete') -def obsoletekw(repo, ctx, templ, **args): - """String. Whether the changeset is ``obsolete``. - """ - if ctx.obsolete(): - return 'obsolete' - return '' +if not util.safehasattr(templatekw, 'showobsolete'): + # hg < 4.2 + @eh.templatekw('obsolete') + def obsoletekw(repo, ctx, templ, **args): + """String. Whether the changeset is ``obsolete``. + """ + if ctx.obsolete(): + return 'obsolete' + return '' if util.safehasattr(templatekw, 'compatlist'): @eh.templatekw('troubles', requires=set(['ctx', 'templ'])) diff -r 537fd9a86c06 -r 21eab0a99841 hgext3rd/topic/__init__.py --- a/hgext3rd/topic/__init__.py Fri Aug 03 00:22:50 2018 +0200 +++ b/hgext3rd/topic/__init__.py Tue Aug 21 14:09:33 2018 +0200 @@ -181,9 +181,9 @@ 'topic.active': 'green', } -__version__ = '0.10.0.dev' +__version__ = '0.10.1.dev' -testedwith = '4.3.3 4.4.2 4.5.2 4.6.1' +testedwith = '4.3.3 4.4.2 4.5.2 4.6.2 4.7' minimumhgversion = '4.3' buglink = 'https://bz.mercurial-scm.org/' diff -r 537fd9a86c06 -r 21eab0a99841 tests/test-discovery-obshashrange-cache.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-discovery-obshashrange-cache.t Tue Aug 21 14:09:33 2018 +0200 @@ -0,0 +1,168 @@ +============================== +Test cache warming strategy +test for range based discovery +============================== + + $ . $TESTDIR/testlib/pythonpath.sh + + $ cat << EOF >> $HGRCPATH + > [extensions] + > hgext3rd.evolve = + > blackbox = + > [defaults] + > blackbox = -l 100 + > [experimental] + > obshashrange=1 + > verbose-obsolescence-exchange=1 + > [ui] + > logtemplate = "{rev} {node|short} {desc} {tags}\n" + > ssh=python "$RUNTESTDIR/dummyssh" + > [alias] + > debugobsolete=debugobsolete -d '0 0' + > [ui] + > ssh=$PYTHON "$RUNTESTDIR/dummyssh" + > EOF + + $ hg init main + + $ hg -R main debugbuilddag '.+7' + + $ for node in `hg -R main log -T '{node}\n'`; do + > echo -n $node | grep -o . | sort |tr -d "\n" > ancfile + > anc=`cat ancfile` + > rm ancfile + > echo "marking $anc as predecessors of $node" + > hg -R main debugobsolete $anc $node + > done + marking 000011223334456677789aaaaabbbbcccddddeef as predecessors of 4de32a90b66cd083ebf3c00b41277aa7abca51dd + marking 012234455555666699aaaaabbbccccccefffffff as predecessors of f69452c5b1af6cbaaa56ef50cf94fff5bcc6ca23 + marking 00001122233445555777778889999abbcccddeef as predecessors of c8d03c1b5e94af74b772900c58259d2e08917735 + marking 0011222445667777889999aabbbbcddddeeeeeee as predecessors of bebd167eb94d257ace0e814aeb98e6972ed2970d + marking 000011222223344555566778899aaaabccddefff as predecessors of 2dc09a01254db841290af0538aa52f6f52c776e3 + marking 01111222223333444455555566999abbbbcceeef as predecessors of 01241442b3c2bf3211e593b549c655ea65b295e3 + marking 01122444445555566677888aabbcccddddefffff as predecessors of 66f7d451a68b85ed82ff5fcc254daf50c74144bd + marking 000111111234444467777889999aaaabcdeeeeff as predecessors of 1ea73414a91b0920940797d8fc6a11e447f8ea1e + + $ hg debugobsolete -R main + 000011223334456677789aaaaabbbbcccddddeef 4de32a90b66cd083ebf3c00b41277aa7abca51dd 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 012234455555666699aaaaabbbccccccefffffff f69452c5b1af6cbaaa56ef50cf94fff5bcc6ca23 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 00001122233445555777778889999abbcccddeef c8d03c1b5e94af74b772900c58259d2e08917735 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 0011222445667777889999aabbbbcddddeeeeeee bebd167eb94d257ace0e814aeb98e6972ed2970d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 000011222223344555566778899aaaabccddefff 2dc09a01254db841290af0538aa52f6f52c776e3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 01111222223333444455555566999abbbbcceeef 01241442b3c2bf3211e593b549c655ea65b295e3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 01122444445555566677888aabbcccddddefffff 66f7d451a68b85ed82ff5fcc254daf50c74144bd 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 000111111234444467777889999aaaabcdeeeeff 1ea73414a91b0920940797d8fc6a11e447f8ea1e 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +Cache mode is "auto" so local commit did not warm the cache yet + + $ f -s main/.hg/cache/evoext* + main/.hg/cache/evoext-obscache-00: size=72 + +Initial push +------------ + + $ hg init server + $ hg -R main push ssh://user@dummy/server + pushing to ssh://user@dummy/server + searching for changes + OBSEXC: computing relevant nodes + OBSEXC: looking for common markers in 8 nodes + OBSEXC: computing markers relevant to 8 nodes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 8 changesets with 0 changes to 0 files + remote: 8 new obsolescence markers + +sever cash is warm + + $ f -s server/.hg/cache/evoext* + server/.hg/cache/evoext-depthcache-00: size=88 + server/.hg/cache/evoext-firstmerge-00: size=88 + server/.hg/cache/evoext-obscache-00: size=72 + server/.hg/cache/evoext-stablesortcache-00: size=92 + server/.hg/cache/evoext_obshashrange_v2.sqlite: size=?* (glob) + server/.hg/cache/evoext_stablerange_v2.sqlite: size=?* (glob) + +client cash is warm + + $ f -s main/.hg/cache/evoext* + main/.hg/cache/evoext-depthcache-00: size=88 + main/.hg/cache/evoext-firstmerge-00: size=88 + main/.hg/cache/evoext-obscache-00: size=72 + main/.hg/cache/evoext-stablesortcache-00: size=92 + main/.hg/cache/evoext_obshashrange_v2.sqlite: size=?* (glob) + main/.hg/cache/evoext_stablerange_v2.sqlite: size=?* (glob) + +initial pull +------------ + + $ rm -rf main + $ hg init main + $ hg -R main pull ssh://user@dummy/server + pulling from ssh://user@dummy/server + requesting all changes + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + 8 new obsolescence markers + (run 'hg update' to get a working copy) + +client cache is empty because the discovery was empty + + $ f -s main/.hg/cache/evoext* + main/.hg/cache/evoext-obscache-00: size=72 + +no op pull +------------ + +clear cache + + $ rm -rf main/.hg/cache/evoext + +pull nothing + + $ hg -R main pull ssh://user@dummy/server + pulling from ssh://user@dummy/server + searching for changes + no changes found + OBSEXC: looking for common markers in 8 nodes + +client cash is warm + + $ f -s main/.hg/cache/evoext* + main/.hg/cache/evoext-depthcache-00: size=88 + main/.hg/cache/evoext-firstmerge-00: size=88 + main/.hg/cache/evoext-obscache-00: size=72 + main/.hg/cache/evoext-stablesortcache-00: size=92 + main/.hg/cache/evoext_obshashrange_v2.sqlite: size=?* (glob) + main/.hg/cache/evoext_stablerange_v2.sqlite: size=?* (glob) + +no op push +------------ + +clear cache + + $ rm -rf main/.hg/cache/evoext + +push nothing + + $ hg -R main push ssh://user@dummy/server + pushing to ssh://user@dummy/server + searching for changes + OBSEXC: computing relevant nodes + OBSEXC: looking for common markers in 8 nodes + OBSEXC: markers already in sync + no changes found + [1] + +client cash is warm + + $ f -s main/.hg/cache/evoext* + main/.hg/cache/evoext-depthcache-00: size=88 + main/.hg/cache/evoext-firstmerge-00: size=88 + main/.hg/cache/evoext-obscache-00: size=72 + main/.hg/cache/evoext-stablesortcache-00: size=92 + main/.hg/cache/evoext_obshashrange_v2.sqlite: size=?* (glob) + main/.hg/cache/evoext_stablerange_v2.sqlite: size=?* (glob) diff -r 537fd9a86c06 -r 21eab0a99841 tests/test-discovery-obshashrange.t --- a/tests/test-discovery-obshashrange.t Fri Aug 03 00:22:50 2018 +0200 +++ b/tests/test-discovery-obshashrange.t Tue Aug 21 14:09:33 2018 +0200 @@ -138,7 +138,11 @@ * @0000000000000000000000000000000000000000 (*)> strip detected, evo-ext-depthcache cache reset (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-depthcache in *.???? seconds (8r) (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (8r) (glob) - * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (8r, 5o) (glob) + 1970/01/01 00:00:00 * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (8r, 5o) (glob) + 1970/01/01 00:00:00 * @0000000000000000000000000000000000000000 (*)> strip detected, evo-ext-stablesort cache reset (glob) + 1970/01/01 00:00:00 * @0000000000000000000000000000000000000000 (*)> updated evo-ext-stablesort in *.???? seconds (8r) (glob) + 1970/01/01 00:00:00 * @0000000000000000000000000000000000000000 (*)> strip detected, evo-ext-firstmerge cache reset (glob) + 1970/01/01 00:00:00 * @0000000000000000000000000000000000000000 (*)> updated evo-ext-firstmerge in *.???? seconds (8r) (glob) * @0000000000000000000000000000000000000000 (*)> debugobshashrange --subranges --rev tip exited 0 after *.?? seconds (glob) * @0000000000000000000000000000000000000000 (*)> serve --stdio (glob) * @0000000000000000000000000000000000000000 (*)> -R server serve --stdio exited 0 after *.?? seconds (glob) @@ -233,17 +237,11 @@ received listkey for "phases": 58 bytes $ hg -R ../server blackbox * @0000000000000000000000000000000000000000 (*)> serve --stdio (glob) - * @0000000000000000000000000000000000000000 (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob) - * @0000000000000000000000000000000000000000 (*)> strip detected, evo-ext-depthcache cache reset (glob) - * @0000000000000000000000000000000000000000 (*)> updated evo-ext-depthcache in *.???? seconds (8r) (glob) - * @0000000000000000000000000000000000000000 (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (8r) (glob) + 1970/01/01 00:00:00 * @0000000000000000000000000000000000000000 (*)> updated evo-ext-firstmerge in *.???? seconds (1r) (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-depthcache in *.???? seconds (1r) (glob) - * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (1r, 1o) (glob) + 1970/01/01 00:00:00 * @0000000000000000000000000000000000000000 (*)> updated evo-ext-stablesort in *.???? seconds (1r) (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (1r) (glob) - * @0000000000000000000000000000000000000000 (*)> strip detected, evo-ext-firstmerge cache reset (glob) - * @0000000000000000000000000000000000000000 (*)> updated evo-ext-firstmerge in *.???? seconds (9r) (glob) - * @0000000000000000000000000000000000000000 (*)> strip detected, evo-ext-stablesort cache reset (glob) - * @0000000000000000000000000000000000000000 (*)> updated evo-ext-stablesort in *.???? seconds (9r) (glob) + 1970/01/01 00:00:00 * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (1r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> obscache is out of date, falling back to slower obsstore version (glob) * @0000000000000000000000000000000000000000 (*)> updated served branch cache in *.???? seconds (glob) * @0000000000000000000000000000000000000000 (*)> wrote served branch cache with 1 labels and 2 nodes (glob) @@ -320,6 +318,10 @@ * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (6r) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (6r) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (6r, 4o) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-stablesort cache reset (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablesort in *.???? seconds (6r) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-firstmerge cache reset (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-firstmerge in *.???? seconds (6r) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 0/5 mismatch - 1 obshashrange queries in *.???? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> push -f --debug exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> log -G (glob) @@ -334,10 +336,6 @@ * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobsolete 22222222222222222bbbbbbbbbbbbb2222222222 2dc09a01254db841290af0538aa52f6f52c776e3 exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> push (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-depthcache cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (6r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (6r) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obshashcache clean - new markers affect 2 changeset and cached ranges (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 2o) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 2/6 mismatch - 1 obshashrange queries in *.???? seconds (glob) @@ -417,10 +415,6 @@ * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> log -G (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> log -G exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull -r 6 (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-depthcache cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (6r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (6r) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 2/6 mismatch - 1 obshashrange queries in *.???? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated served branch cache in *.???? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> wrote served branch cache with 1 labels and 2 nodes (glob) @@ -498,39 +492,73 @@ * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobsolete --rev ::6 exited 0 after *.?? seconds (glob) (windows !) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' (glob) (no-windows !) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "heads(all())" (glob) (windows !) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-depthcache cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (8r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (8r) (glob) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "heads(all())" exited 0 after *.?? seconds (glob) (windows !) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "desc(\"r3\")" (glob) (windows !) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "desc(\"r3\")" exited 0 after *.?? seconds (glob) (windows !) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (2r) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (2r) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obshashcache clean - new markers affect 2 changeset and cached ranges (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (2r, 3o) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablesort in *.???? seconds (2r) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-firstmerge in *.???? seconds (2r) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' exited 0 after *.?? seconds (glob) (no-windows !) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "heads(all())" exited 0 after *.?? seconds (glob) (windows !) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull -r f69452c5b1af6cbaaa56ef50cf94fff5bcc6ca23 (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-depthcache cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (8r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (8r) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 2/7 mismatch - 1 obshashrange queries in *.???? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (0r, 2o) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull -r f69452c5b1af6cbaaa56ef50cf94fff5bcc6ca23 exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'desc("r3")' (glob) (no-windows !) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "desc(\"r3\")" (glob) (windows !) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-depthcache cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (8r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (8r) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obshashcache clean - new markers affect 2 changeset and cached ranges (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 2o) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'desc("r3")' exited 0 after *.?? seconds (glob) (no-windows !) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "desc(\"r3\")" exited 0 after *.?? seconds (glob) (windows !) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> blackbox (glob) $ rm .hg/blackbox.log -Adding prune markers on existing changeset ------------------------------------------- +Adding markers affecting existing changeset +------------------------------------------- + +Simple prune marker + $ hg debugobshashrange -R ../server --subranges --rev 'heads(all())' + rev node index size depth obshash + 7 4de32a90b66c 0 8 8 3e1f959425c6 + 8 45f8b879de92 0 6 6 b405cb0bdc2b + 3 2dc09a01254d 0 4 4 8932bf980bb4 + 7 4de32a90b66c 4 4 8 5a7179ca8e73 + 3 2dc09a01254d 2 2 4 ce1937ca1278 + 8 45f8b879de92 4 2 6 9c26c72819c0 + 7 4de32a90b66c 6 2 8 033544c939f0 + 1 66f7d451a68b 0 2 2 327c7dd73d29 + 5 c8d03c1b5e94 4 2 6 ec8a3e92c525 + 2 01241442b3c2 2 1 3 1ed3c61fb39a + 0 1ea73414a91b 0 1 1 000000000000 + 3 2dc09a01254d 3 1 4 26f996446ecb + 8 45f8b879de92 5 1 6 1a0c08180b65 + 7 4de32a90b66c 7 1 8 033544c939f0 + 1 66f7d451a68b 1 1 2 327c7dd73d29 + 4 bebd167eb94d 4 1 5 20a2cc572e4b + 5 c8d03c1b5e94 5 1 6 446c2dc3bce5 + 6 f69452c5b1af 6 1 7 000000000000 $ hg -R ../server debugobsolete --record-parents `getid 'desc(foo)'` + $ hg debugobshashrange -R ../server --subranges --rev 'heads(all())' + rev node index size depth obshash + 7 4de32a90b66c 0 8 8 c7f1f7e9925b + 8 45f8b879de92 0 6 6 7c49a958a9ac + 3 2dc09a01254d 0 4 4 8932bf980bb4 + 7 4de32a90b66c 4 4 8 c681c3e58c27 + 3 2dc09a01254d 2 2 4 ce1937ca1278 + 8 45f8b879de92 4 2 6 c6795525c540 + 7 4de32a90b66c 6 2 8 033544c939f0 + 1 66f7d451a68b 0 2 2 327c7dd73d29 + 5 c8d03c1b5e94 4 2 6 89755fd39e6d + 2 01241442b3c2 2 1 3 1ed3c61fb39a + 0 1ea73414a91b 0 1 1 000000000000 + 3 2dc09a01254d 3 1 4 26f996446ecb + 8 45f8b879de92 5 1 6 796507769034 + 7 4de32a90b66c 7 1 8 033544c939f0 + 1 66f7d451a68b 1 1 2 327c7dd73d29 + 4 bebd167eb94d 4 1 5 b21465ecb790 + 5 c8d03c1b5e94 5 1 6 446c2dc3bce5 + 6 f69452c5b1af 6 1 7 000000000000 $ hg pull -r `getid 'desc(r4)'` pulling from ssh://user@dummy/server no changes found @@ -539,10 +567,6 @@ 1 new obsolescence markers $ hg blackbox * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull -r bebd167eb94d257ace0e814aeb98e6972ed2970d (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-depthcache cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (8r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (8r) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 1/5 mismatch - 1 obshashrange queries in *.???? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull -r bebd167eb94d257ace0e814aeb98e6972ed2970d exited 0 after *.?? seconds (glob) @@ -567,7 +591,239 @@ 6 c8d03c1b5e94 5 1 6 446c2dc3bce5 7 f69452c5b1af 6 1 7 000000000000 +Stacked prune markers + + $ hg -R ../server --hidden up 'desc(foo)' + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ echo a > ../server/xhf + $ hg -R ../server commit -Am "chain_prune" + adding xhf + $ hg -R ../server update null + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ hg debugobshashrange -R ../server --subranges --rev 'heads(all())' + rev node index size depth obshash + 7 4de32a90b66c 0 8 8 c7f1f7e9925b + 9 09b2e73c5f20 0 7 7 000000000000 + 3 2dc09a01254d 0 4 4 8932bf980bb4 + 7 4de32a90b66c 4 4 8 c681c3e58c27 + 9 09b2e73c5f20 4 3 7 000000000000 + 3 2dc09a01254d 2 2 4 ce1937ca1278 + 8 45f8b879de92 4 2 6 c6795525c540 + 7 4de32a90b66c 6 2 8 033544c939f0 + 1 66f7d451a68b 0 2 2 327c7dd73d29 + 5 c8d03c1b5e94 4 2 6 89755fd39e6d + 2 01241442b3c2 2 1 3 1ed3c61fb39a + 9 09b2e73c5f20 6 1 7 000000000000 + 0 1ea73414a91b 0 1 1 000000000000 + 3 2dc09a01254d 3 1 4 26f996446ecb + 8 45f8b879de92 5 1 6 796507769034 + 7 4de32a90b66c 7 1 8 033544c939f0 + 1 66f7d451a68b 1 1 2 327c7dd73d29 + 4 bebd167eb94d 4 1 5 b21465ecb790 + 5 c8d03c1b5e94 5 1 6 446c2dc3bce5 + 6 f69452c5b1af 6 1 7 000000000000 + $ hg -R ../server debugobsolete --record-parents `(cd ../server/; getid 'desc("chain_prune")')` + obsoleted 1 changesets + $ hg debugobshashrange -R ../server --subranges --rev 'heads(all())' + rev node index size depth obshash + 7 4de32a90b66c 0 8 8 f966d46c2069 + 8 45f8b879de92 0 6 6 c9ee11811914 + 3 2dc09a01254d 0 4 4 8932bf980bb4 + 7 4de32a90b66c 4 4 8 542cc6dd4c67 + 3 2dc09a01254d 2 2 4 ce1937ca1278 + 8 45f8b879de92 4 2 6 b5d53b723b2e + 7 4de32a90b66c 6 2 8 033544c939f0 + 1 66f7d451a68b 0 2 2 327c7dd73d29 + 5 c8d03c1b5e94 4 2 6 b0302c7614fb + 2 01241442b3c2 2 1 3 1ed3c61fb39a + 0 1ea73414a91b 0 1 1 000000000000 + 3 2dc09a01254d 3 1 4 26f996446ecb + 8 45f8b879de92 5 1 6 78e8071e893a + 7 4de32a90b66c 7 1 8 033544c939f0 + 1 66f7d451a68b 1 1 2 327c7dd73d29 + 4 bebd167eb94d 4 1 5 9b4a136d1137 + 5 c8d03c1b5e94 5 1 6 446c2dc3bce5 + 6 f69452c5b1af 6 1 7 000000000000 + $ hg debugobshashrange -R ../server --subranges --rev 'heads(all())' --hidden + rev node index size depth obshash + 7 4de32a90b66c 0 8 8 f966d46c2069 + 9 09b2e73c5f20 0 7 7 be139f5b4d01 + 3 2dc09a01254d 0 4 4 8932bf980bb4 + 7 4de32a90b66c 4 4 8 542cc6dd4c67 + 9 09b2e73c5f20 4 3 7 7a88eb008295 + 3 2dc09a01254d 2 2 4 ce1937ca1278 + 8 45f8b879de92 4 2 6 b5d53b723b2e + 7 4de32a90b66c 6 2 8 033544c939f0 + 1 66f7d451a68b 0 2 2 327c7dd73d29 + 5 c8d03c1b5e94 4 2 6 b0302c7614fb + 2 01241442b3c2 2 1 3 1ed3c61fb39a + 9 09b2e73c5f20 6 1 7 3339d42d829e + 0 1ea73414a91b 0 1 1 000000000000 + 3 2dc09a01254d 3 1 4 26f996446ecb + 8 45f8b879de92 5 1 6 78e8071e893a + 7 4de32a90b66c 7 1 8 033544c939f0 + 1 66f7d451a68b 1 1 2 327c7dd73d29 + 4 bebd167eb94d 4 1 5 9b4a136d1137 + 5 c8d03c1b5e94 5 1 6 446c2dc3bce5 + 6 f69452c5b1af 6 1 7 000000000000 + $ hg pull -r `getid 'desc(r4)'` + pulling from ssh://user@dummy/server + no changes found + OBSEXC: looking for common markers in 5 nodes + OBSEXC: request obsmarkers for 1 common nodes + 1 new obsolescence markers + $ hg blackbox + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obshashcache clean - new markers affect 2 changeset and cached ranges (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' exited 0 after *.?? seconds (glob) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull -r bebd167eb94d257ace0e814aeb98e6972ed2970d (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 1/5 mismatch - 1 obshashrange queries in *.???? seconds (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull -r bebd167eb94d257ace0e814aeb98e6972ed2970d exited 0 after *.?? seconds (glob) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> blackbox (glob) + $ rm .hg/blackbox.log + $ hg debugobshashrange --subranges --rev 'heads(all())' + rev node index size depth obshash + 7 f69452c5b1af 0 7 7 000000000000 + 5 45f8b879de92 0 6 6 c9ee11811914 + 3 2dc09a01254d 0 4 4 8932bf980bb4 + 7 f69452c5b1af 4 3 7 000000000000 + 3 2dc09a01254d 2 2 4 ce1937ca1278 + 5 45f8b879de92 4 2 6 b5d53b723b2e + 1 66f7d451a68b 0 2 2 327c7dd73d29 + 6 c8d03c1b5e94 4 2 6 b0302c7614fb + 2 01241442b3c2 2 1 3 1ed3c61fb39a + 0 1ea73414a91b 0 1 1 000000000000 + 3 2dc09a01254d 3 1 4 26f996446ecb + 5 45f8b879de92 5 1 6 78e8071e893a + 1 66f7d451a68b 1 1 2 327c7dd73d29 + 4 bebd167eb94d 4 1 5 9b4a136d1137 + 6 c8d03c1b5e94 5 1 6 446c2dc3bce5 + 7 f69452c5b1af 6 1 7 000000000000 + +New marker prefixed to another one + + $ hg -R ../server debugobsolete aaaa4444444444444444aaaaaaaaaaaaaaaaaaaa `(cd ../server/; getid 'desc("chain_prune")')` + $ hg debugobshashrange -R ../server --subranges --rev 'heads(all())' + rev node index size depth obshash + 7 4de32a90b66c 0 8 8 0ffc0013bda0 + 8 45f8b879de92 0 6 6 0ffa86a0054f + 3 2dc09a01254d 0 4 4 8932bf980bb4 + 7 4de32a90b66c 4 4 8 207792ae6aeb + 3 2dc09a01254d 2 2 4 ce1937ca1278 + 8 45f8b879de92 4 2 6 a3de812028fa + 7 4de32a90b66c 6 2 8 033544c939f0 + 1 66f7d451a68b 0 2 2 327c7dd73d29 + 5 c8d03c1b5e94 4 2 6 e94b0f268773 + 2 01241442b3c2 2 1 3 1ed3c61fb39a + 0 1ea73414a91b 0 1 1 000000000000 + 3 2dc09a01254d 3 1 4 26f996446ecb + 8 45f8b879de92 5 1 6 e765ea1567b3 + 7 4de32a90b66c 7 1 8 033544c939f0 + 1 66f7d451a68b 1 1 2 327c7dd73d29 + 4 bebd167eb94d 4 1 5 8e945c34a0fd + 5 c8d03c1b5e94 5 1 6 446c2dc3bce5 + 6 f69452c5b1af 6 1 7 000000000000 + + $ hg pull -r `getid 'desc(r4)'` + pulling from ssh://user@dummy/server + no changes found + OBSEXC: looking for common markers in 5 nodes + OBSEXC: request obsmarkers for 1 common nodes + 1 new obsolescence markers + $ hg blackbox + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obshashcache clean - new markers affect 2 changeset and cached ranges (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' exited 0 after *.?? seconds (glob) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull -r bebd167eb94d257ace0e814aeb98e6972ed2970d (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 1/5 mismatch - 1 obshashrange queries in *.???? seconds (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull -r bebd167eb94d257ace0e814aeb98e6972ed2970d exited 0 after *.?? seconds (glob) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> blackbox (glob) + $ rm .hg/blackbox.log + $ hg debugobshashrange --subranges --rev 'heads(all())' + rev node index size depth obshash + 7 f69452c5b1af 0 7 7 000000000000 + 5 45f8b879de92 0 6 6 0ffa86a0054f + 3 2dc09a01254d 0 4 4 8932bf980bb4 + 7 f69452c5b1af 4 3 7 000000000000 + 3 2dc09a01254d 2 2 4 ce1937ca1278 + 5 45f8b879de92 4 2 6 a3de812028fa + 1 66f7d451a68b 0 2 2 327c7dd73d29 + 6 c8d03c1b5e94 4 2 6 e94b0f268773 + 2 01241442b3c2 2 1 3 1ed3c61fb39a + 0 1ea73414a91b 0 1 1 000000000000 + 3 2dc09a01254d 3 1 4 26f996446ecb + 5 45f8b879de92 5 1 6 e765ea1567b3 + 1 66f7d451a68b 1 1 2 327c7dd73d29 + 4 bebd167eb94d 4 1 5 8e945c34a0fd + 6 c8d03c1b5e94 5 1 6 446c2dc3bce5 + 7 f69452c5b1af 6 1 7 000000000000 + +New prune marker prefixed to another one + + $ hg -R ../server debugobsolete aaaa4444444444444444aaaaaaaaaaaaaaaaaaaa + $ hg debugobshashrange -R ../server --subranges --rev 'heads(all())' + rev node index size depth obshash + 7 4de32a90b66c 0 8 8 87b2a11bd884 + 8 45f8b879de92 0 6 6 fdbbaec33b20 + 3 2dc09a01254d 0 4 4 8932bf980bb4 + 7 4de32a90b66c 4 4 8 20745010e1d8 + 3 2dc09a01254d 2 2 4 ce1937ca1278 + 8 45f8b879de92 4 2 6 f45551c1cf4f + 7 4de32a90b66c 6 2 8 033544c939f0 + 1 66f7d451a68b 0 2 2 327c7dd73d29 + 5 c8d03c1b5e94 4 2 6 149be75f95c0 + 2 01241442b3c2 2 1 3 1ed3c61fb39a + 0 1ea73414a91b 0 1 1 000000000000 + 3 2dc09a01254d 3 1 4 26f996446ecb + 8 45f8b879de92 5 1 6 51df11ea9843 + 7 4de32a90b66c 7 1 8 033544c939f0 + 1 66f7d451a68b 1 1 2 327c7dd73d29 + 4 bebd167eb94d 4 1 5 42574a82229f + 5 c8d03c1b5e94 5 1 6 446c2dc3bce5 + 6 f69452c5b1af 6 1 7 000000000000 + + $ hg pull -r `getid 'desc(r4)'` + pulling from ssh://user@dummy/server + no changes found + OBSEXC: looking for common markers in 5 nodes + OBSEXC: request obsmarkers for 1 common nodes + 1 new obsolescence markers + $ hg blackbox + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obshashcache clean - new markers affect 2 changeset and cached ranges (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' exited 0 after *.?? seconds (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull -r bebd167eb94d257ace0e814aeb98e6972ed2970d (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 1/5 mismatch - 1 obshashrange queries in *.???? seconds (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull -r bebd167eb94d257ace0e814aeb98e6972ed2970d exited 0 after *.?? seconds (glob) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> blackbox (glob) + $ rm .hg/blackbox.log + $ hg debugobshashrange --subranges --rev 'heads(all())' + rev node index size depth obshash + 7 f69452c5b1af 0 7 7 000000000000 + 5 45f8b879de92 0 6 6 fdbbaec33b20 + 3 2dc09a01254d 0 4 4 8932bf980bb4 + 7 f69452c5b1af 4 3 7 000000000000 + 3 2dc09a01254d 2 2 4 ce1937ca1278 + 5 45f8b879de92 4 2 6 f45551c1cf4f + 1 66f7d451a68b 0 2 2 327c7dd73d29 + 6 c8d03c1b5e94 4 2 6 149be75f95c0 + 2 01241442b3c2 2 1 3 1ed3c61fb39a + 0 1ea73414a91b 0 1 1 000000000000 + 3 2dc09a01254d 3 1 4 26f996446ecb + 5 45f8b879de92 5 1 6 51df11ea9843 + 1 66f7d451a68b 1 1 2 327c7dd73d29 + 4 bebd167eb94d 4 1 5 42574a82229f + 6 c8d03c1b5e94 5 1 6 446c2dc3bce5 + 7 f69452c5b1af 6 1 7 000000000000 + Recover after rollback +---------------------- $ hg pull pulling from ssh://user@dummy/server @@ -584,57 +840,41 @@ $ hg blackbox * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' (glob) (no-windows !) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "heads(all())" (glob) (windows !) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-depthcache cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (8r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (8r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obshashcache clean - new markers affect 1 changeset and cached ranges (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' exited 0 after *.?? seconds (glob) (no-windows !) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "heads(all())" exited 0 after *.?? seconds (glob) (windows !) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obshashcache clean - new markers affect 2 changeset and cached ranges (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-depthcache cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (8r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (8r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 0/8 mismatch - 1 obshashrange queries in *.???? seconds (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 0/8 mismatch - 1 obshashrange queries in *.???? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated served branch cache in *.???? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> wrote served branch cache with 1 labels and 2 nodes (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (1r, 1o) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> 1 incoming changes - new heads: 4de32a90b66c (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (1r, 1o) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> 1 incoming changes - new heads: 4de32a90b66c (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> rollback (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-depthcache cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (8r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (8r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-firstmerge cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-firstmerge in *.???? seconds (8r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-stablesort cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablesort in *.???? seconds (8r) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated base branch cache in *.???? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> wrote base branch cache with 1 labels and 2 nodes (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip detected, evo-ext-obscache cache reset (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (8r, 12o) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (8r, 15o) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> rollback exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> blackbox (glob) $ rm .hg/blackbox.log $ hg debugobshashrange --subranges --rev 'heads(all())' rev node index size depth obshash 7 f69452c5b1af 0 7 7 000000000000 - 5 45f8b879de92 0 6 6 7c49a958a9ac + 5 45f8b879de92 0 6 6 fdbbaec33b20 3 2dc09a01254d 0 4 4 8932bf980bb4 7 f69452c5b1af 4 3 7 000000000000 3 2dc09a01254d 2 2 4 ce1937ca1278 - 5 45f8b879de92 4 2 6 c6795525c540 + 5 45f8b879de92 4 2 6 f45551c1cf4f 1 66f7d451a68b 0 2 2 327c7dd73d29 - 6 c8d03c1b5e94 4 2 6 89755fd39e6d + 6 c8d03c1b5e94 4 2 6 149be75f95c0 2 01241442b3c2 2 1 3 1ed3c61fb39a 0 1ea73414a91b 0 1 1 000000000000 3 2dc09a01254d 3 1 4 26f996446ecb - 5 45f8b879de92 5 1 6 796507769034 + 5 45f8b879de92 5 1 6 51df11ea9843 1 66f7d451a68b 1 1 2 327c7dd73d29 - 4 bebd167eb94d 4 1 5 b21465ecb790 + 4 bebd167eb94d 4 1 5 42574a82229f 6 c8d03c1b5e94 5 1 6 446c2dc3bce5 7 f69452c5b1af 6 1 7 000000000000 $ hg pull @@ -653,30 +893,30 @@ * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' exited 0 after *.?? seconds (glob) (no-windows !) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "heads(all())" exited 0 after *.?? seconds (glob) (windows !) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 0/8 mismatch - 1 obshashrange queries in *.???? seconds (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (1r, 1o) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> 1 incoming changes - new heads: 4de32a90b66c (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obsdiscovery, 0/8 mismatch - 1 obshashrange queries in *.???? seconds (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (1r, 1o) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> 1 incoming changes - new heads: 4de32a90b66c (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> pull exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> blackbox (glob) $ rm .hg/blackbox.log $ hg debugobshashrange --subranges --rev 'heads(all())' rev node index size depth obshash - 8 4de32a90b66c 0 8 8 c7f1f7e9925b - 5 45f8b879de92 0 6 6 7c49a958a9ac + 8 4de32a90b66c 0 8 8 87b2a11bd884 + 5 45f8b879de92 0 6 6 fdbbaec33b20 3 2dc09a01254d 0 4 4 8932bf980bb4 - 8 4de32a90b66c 4 4 8 c681c3e58c27 + 8 4de32a90b66c 4 4 8 20745010e1d8 3 2dc09a01254d 2 2 4 ce1937ca1278 - 5 45f8b879de92 4 2 6 c6795525c540 + 5 45f8b879de92 4 2 6 f45551c1cf4f 8 4de32a90b66c 6 2 8 033544c939f0 1 66f7d451a68b 0 2 2 327c7dd73d29 - 6 c8d03c1b5e94 4 2 6 89755fd39e6d + 6 c8d03c1b5e94 4 2 6 149be75f95c0 2 01241442b3c2 2 1 3 1ed3c61fb39a 0 1ea73414a91b 0 1 1 000000000000 3 2dc09a01254d 3 1 4 26f996446ecb - 5 45f8b879de92 5 1 6 796507769034 + 5 45f8b879de92 5 1 6 51df11ea9843 8 4de32a90b66c 7 1 8 033544c939f0 1 66f7d451a68b 1 1 2 327c7dd73d29 - 4 bebd167eb94d 4 1 5 b21465ecb790 + 4 bebd167eb94d 4 1 5 42574a82229f 6 c8d03c1b5e94 5 1 6 446c2dc3bce5 7 f69452c5b1af 6 1 7 000000000000 @@ -733,7 +973,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) - 2 new obsolescence markers + 5 new obsolescence markers (run 'hg heads' to see heads, 'hg merge' to merge) $ hg log -G o 8 45f8b879de92 foo tip @@ -758,11 +998,15 @@ * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' (glob) (no-windows !) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "heads(all())" (glob) (windows !) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> writing .hg/cache/tags2-visible with 0 tags (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (1r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (1r) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (1r, 1o) (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' exited 0 after *.?? seconds (glob) (no-windows !) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev "heads(all())" exited 0 after *.?? seconds (glob) (windows !) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> --config "extensions.strip=" strip -r "desc(\"foo\")" (glob) (windows !) + * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> --config "extensions.strip=" strip -r "desc(\"foo\")" exited 0 after *.?? seconds (glob) (windows !) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-depthcache in *.???? seconds (1r) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (1r) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (1r, 1o) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-stablesort in *.???? seconds (1r) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-firstmerge in *.???? seconds (1r) (glob) + 1970/01/01 00:00:00 * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev 'heads(all())' exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> log -G (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> log -G exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> strip -r 'desc("foo")' (glob) @@ -770,30 +1014,29 @@ * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> strip detected, evo-ext-obscache cache reset (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-obscache in *.???? seconds (5r, 11o) (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-obscache in *.???? seconds (3r, 0o) (glob) - * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> strip detected, evo-ext-obshashrange cache reset (glob) + * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> strip detected, evo-ext-firstmerge cache reset (glob) + * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-firstmerge in *.???? seconds (8r) (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> strip detected, evo-ext-depthcache cache reset (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-depthcache in *.???? seconds (8r) (glob) + * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> strip detected, evo-ext-stablesort cache reset (glob) + * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-stablesort in *.???? seconds (8r) (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-stablerange-mergepoint in *.???? seconds (8r) (glob) - * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-obshashrange in *.???? seconds (8r, 11o) (glob) - * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> strip detected, evo-ext-firstmerge cache reset (glob) - * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-firstmerge in *.???? seconds (8r) (glob) - * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> strip detected, evo-ext-stablesort cache reset (glob) - * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-stablesort in *.???? seconds (8r) (glob) + * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> strip detected, evo-ext-obshashrange cache reset (glob) + 1970/01/01 00:00:00 * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-obshashrange in *.???? seconds (8r, 11o) (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated base branch cache in *.???? seconds (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> wrote base branch cache with 1 labels and 1 nodes (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> 3 incoming changes - new heads: 4de32a90b66c (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> --config 'extensions.strip=' strip -r 'desc("foo")' exited 0 after *.?? seconds (glob) (no-windows !) - * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> --config "extensions.strip=" strip -r "desc(\"foo\")" exited 0 after *.?? seconds (glob) (windows !) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> log -G (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> writing .hg/cache/tags2-visible with 0 tags (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> log -G exited 0 after *.?? seconds (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> pull (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> obsdiscovery, 1/8 mismatch - 1 obshashrange queries in *.???? seconds (glob) - * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated base branch cache in *.???? seconds (glob) - * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> wrote base branch cache with 1 labels and 2 nodes (glob) - * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-obscache in *.???? seconds (1r, 2o) (glob) - * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> 1 incoming changes - new heads: 45f8b879de92 (glob) + 1970/01/01 00:00:00 * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated base branch cache in *.???? seconds (glob) + 1970/01/01 00:00:00 * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> wrote base branch cache with 1 labels and 2 nodes (glob) + 1970/01/01 00:00:00 * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> updated evo-ext-obscache in *.???? seconds (1r, 5o) (glob) + 1970/01/01 00:00:00 * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> 1 incoming changes - new heads: 45f8b879de92 (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> pull exited 0 after *.?? seconds (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> log -G (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> writing .hg/cache/tags2-visible with 0 tags (glob) @@ -802,22 +1045,22 @@ $ rm .hg/blackbox.log $ hg debugobshashrange --subranges --rev 'heads(all())' rev node index size depth obshash - 7 4de32a90b66c 0 8 8 c7f1f7e9925b - 8 45f8b879de92 0 6 6 7c49a958a9ac + 7 4de32a90b66c 0 8 8 87b2a11bd884 + 8 45f8b879de92 0 6 6 fdbbaec33b20 3 2dc09a01254d 0 4 4 8932bf980bb4 - 7 4de32a90b66c 4 4 8 c681c3e58c27 + 7 4de32a90b66c 4 4 8 20745010e1d8 3 2dc09a01254d 2 2 4 ce1937ca1278 - 8 45f8b879de92 4 2 6 c6795525c540 + 8 45f8b879de92 4 2 6 f45551c1cf4f 7 4de32a90b66c 6 2 8 033544c939f0 1 66f7d451a68b 0 2 2 327c7dd73d29 - 5 c8d03c1b5e94 4 2 6 89755fd39e6d + 5 c8d03c1b5e94 4 2 6 149be75f95c0 2 01241442b3c2 2 1 3 1ed3c61fb39a 0 1ea73414a91b 0 1 1 000000000000 3 2dc09a01254d 3 1 4 26f996446ecb - 8 45f8b879de92 5 1 6 796507769034 + 8 45f8b879de92 5 1 6 51df11ea9843 7 4de32a90b66c 7 1 8 033544c939f0 1 66f7d451a68b 1 1 2 327c7dd73d29 - 4 bebd167eb94d 4 1 5 b21465ecb790 + 4 bebd167eb94d 4 1 5 42574a82229f 5 c8d03c1b5e94 5 1 6 446c2dc3bce5 6 f69452c5b1af 6 1 7 000000000000 diff -r 537fd9a86c06 -r 21eab0a99841 tests/test-evolve-abort-orphan.t --- a/tests/test-evolve-abort-orphan.t Fri Aug 03 00:22:50 2018 +0200 +++ b/tests/test-evolve-abort-orphan.t Tue Aug 21 14:09:33 2018 +0200 @@ -88,6 +88,21 @@ fix conflicts and see `hg help evolve.interrupted` [1] + $ hg parents + changeset: 6:e93a9161a274 + tag: tip + parent: 2:b1661037fa25 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: added c + + changeset: 4:c41c793e0ef1 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + trouble: unstable + summary: added d + + $ hg evolve --abort evolve aborted working directory is now at e93a9161a274 @@ -160,7 +175,7 @@ | () draft | o 7:e83de241f751 added d | | () draft - | o 6:e93a9161a274 added c + | @ 6:e93a9161a274 added c | | () draft | x 2:b1661037fa25 added b | | () draft @@ -252,7 +267,7 @@ |/ () draft @ 8:807e8e2ca559 added a | () draft - | o 6:8f20d4390c21 foo to a + | @ 6:8f20d4390c21 foo to a | | () draft | | o 5:bcb1c47f8520 added d | | | () draft @@ -314,7 +329,7 @@ |/ () draft @ 8:807e8e2ca559 added a | () draft - | o 6:8f20d4390c21 foo to a + | @ 6:8f20d4390c21 foo to a | | () draft | | o 5:bcb1c47f8520 added d | | | () draft @@ -397,7 +412,7 @@ |/ () draft @ 8:807e8e2ca559 added a | () draft - | o 6:8f20d4390c21 foo to a + | @ 6:8f20d4390c21 foo to a | | () draft | x 1:2f913b0c9220 added a |/ () draft @@ -465,7 +480,7 @@ | (bm1) draft o 5:a0086c17bfc7 added a | () draft - | o 3:17509928e5bf added c + | @ 3:17509928e5bf added c | | () draft | x 2:9f0c80a55ddc added b | | () draft @@ -508,3 +523,19 @@ $ hg evolve --abort evolve aborted working directory is now at c1f4718020e3 + + $ ls .hg/ + 00changelog.i + bookmarks + branch + cache + dirstate + last-message.txt + requires + store + undo.backup.bookmarks + undo.backup.dirstate + undo.bookmarks + undo.branch + undo.desc + undo.dirstate diff -r 537fd9a86c06 -r 21eab0a99841 tests/test-evolve-abort-phasediv.t --- a/tests/test-evolve-abort-phasediv.t Fri Aug 03 00:22:50 2018 +0200 +++ b/tests/test-evolve-abort-phasediv.t Tue Aug 21 14:09:33 2018 +0200 @@ -97,6 +97,21 @@ M c A d + $ hg parents + changeset: 3:ca1b80f7960a + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: added c + + changeset: 7:ddba58020bc0 + tag: tip + parent: 1:c7586e2a9264 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + trouble: bumped + summary: added d + + $ hg evolve --abort evolve aborted working directory is now at ddba58020bc0 diff -r 537fd9a86c06 -r 21eab0a99841 tests/test-evolve-phase.t --- a/tests/test-evolve-phase.t Fri Aug 03 00:22:50 2018 +0200 +++ b/tests/test-evolve-phase.t Tue Aug 21 14:09:33 2018 +0200 @@ -103,7 +103,7 @@ $ hg glog @ 4 - 87495ea7c9ec b (draft) | - | o 2 - 13833940840c c (secret) + | @ 2 - 13833940840c c (secret) | | | x 1 - 1e6c11564562 b (draft) |/ diff -r 537fd9a86c06 -r 21eab0a99841 tests/test-evolve-stop-orphan.t --- a/tests/test-evolve-stop-orphan.t Fri Aug 03 00:22:50 2018 +0200 +++ b/tests/test-evolve-stop-orphan.t Tue Aug 21 14:09:33 2018 +0200 @@ -169,6 +169,19 @@ () draft $ hg status + $ ls .hg/ + 00changelog.i + branch + cache + dirstate + last-message.txt + requires + store + undo.backup.dirstate + undo.bookmarks + undo.branch + undo.desc + undo.dirstate Checking when multiple revs need to be evolved, some revs evolve without conflicts diff -r 537fd9a86c06 -r 21eab0a99841 tests/test-evolve.t --- a/tests/test-evolve.t Fri Aug 03 00:22:50 2018 +0200 +++ b/tests/test-evolve.t Tue Aug 21 14:09:33 2018 +0200 @@ -1509,7 +1509,7 @@ | | x 40:e88bee38ffc2@default(draft) temporary amend commit for 36030b147271 | | - | | o 39:02e943732647@default(draft) will cause conflict at evolve + | | @ 39:02e943732647@default(draft) will cause conflict at evolve | | | | | x 38:f8e30e9317aa@default(draft) will be evolved safely | |/ diff -r 537fd9a86c06 -r 21eab0a99841 tests/test-stabilize-conflict.t --- a/tests/test-stabilize-conflict.t Fri Aug 03 00:22:50 2018 +0200 +++ b/tests/test-stabilize-conflict.t Tue Aug 21 14:09:33 2018 +0200 @@ -140,7 +140,7 @@ | date: Thu Jan 01 00:00:00 1970 +0000 | summary: babar count up to ten | - | o changeset: 5:71c18f70c34f + | @ changeset: 5:71c18f70c34f | | user: test | | date: Thu Jan 01 00:00:00 1970 +0000 | | trouble: unstable @@ -232,7 +232,7 @@ | date: Thu Jan 01 00:00:00 1970 +0000 | summary: babar count up to ten | - | o changeset: 8:1836b91c6c1d + | @ changeset: 8:1836b91c6c1d | | user: test | | date: Thu Jan 01 00:00:00 1970 +0000 | | trouble: unstable