Mercurial > evolve
changeset 4159:328450f2de56
branching: merge stable into default
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 12 Oct 2018 11:33:30 +0200 |
parents | 5dd45784a8e0 (diff) f996596d8ccc (current diff) |
children | 44133463372f |
files | hgext3rd/evolve/utility.py tests/test-discovery-obshashrange.t |
diffstat | 66 files changed, 2118 insertions(+), 223 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGELOG Thu Oct 11 13:38:38 2018 +0200 +++ b/CHANGELOG Fri Oct 12 11:33:30 2018 +0200 @@ -1,6 +1,13 @@ Changelog ========= +8.3.0 - in progress +------------------- + + * evolve: avoid redundant output when handling linear orphans + * evolve: use stack alias s# in `hg evolve` messages + * rewind: add an undo alias + 8.2.1 -- 2018-09-14 -------------------
--- a/hgext3rd/evolve/cmdrewrite.py Thu Oct 11 13:38:38 2018 +0200 +++ b/hgext3rd/evolve/cmdrewrite.py Fri Oct 12 11:33:30 2018 +0200 @@ -187,7 +187,6 @@ lockmod.release(lock, wlock) def _editandapply(ui, repo, pats, old, p1, fp, diffopts): - RETRYCHOICE = _('try to fix the patch (yn)?$$ &Yes $$ &No') newnode = None while newnode is None: fp.seek(0) @@ -221,7 +220,8 @@ defaultchoice = 0 # yes if not ui.interactive: defaultchoice = 1 # no - if ui.promptchoice(RETRYCHOICE, default=defaultchoice): + retrychoice = _('try to fix the patch (yn)?$$ &Yes $$ &No') + if ui.promptchoice(retrychoice, default=defaultchoice): raise error.Abort(_("Could not apply amended path")) else: # consider a third choice where we restore the original patch
--- a/hgext3rd/evolve/evolvecmd.py Thu Oct 11 13:38:38 2018 +0200 +++ b/hgext3rd/evolve/evolvecmd.py Fri Oct 12 11:33:30 2018 +0200 @@ -44,6 +44,7 @@ TROUBLES = compat.TROUBLES shorttemplate = utility.shorttemplate +stacktemplate = utility.stacktemplate _bookmarksupdater = rewriteutil.bookmarksupdater sha1re = re.compile(r'\b[0-9a-f]{6,40}\b') @@ -53,7 +54,7 @@ abortmessage = _("see `hg help evolve.interrupted`\n") def _solveone(ui, repo, ctx, evolvestate, dryrun, confirm, - progresscb, category): + progresscb, category, lastsolved=None, stacktmplt=False): """Resolve the troubles affecting one revision returns a tuple (bool, newnode) where, @@ -62,19 +63,28 @@ formed. newnode can be node, when resolution led to no new commit. If bool is False, this is ''. """ + displayer = None + if stacktmplt: + displayer = compat.changesetdisplayer(ui, repo, + {'template': stacktemplate}) + else: + displayer = compat.changesetdisplayer(ui, repo, + {'template': shorttemplate}) wlock = lock = tr = None try: wlock = repo.wlock() lock = repo.lock() tr = repo.transaction("evolve") if 'orphan' == category: - result = _solveunstable(ui, repo, ctx, evolvestate, - dryrun, confirm, progresscb) + result = _solveunstable(ui, repo, ctx, evolvestate, displayer, + dryrun, confirm, progresscb, + lastsolved=lastsolved) elif 'phasedivergent' == category: result = _solvephasedivergence(ui, repo, ctx, evolvestate, - dryrun, confirm, progresscb) + displayer, dryrun, confirm, + progresscb) elif 'contentdivergent' == category: - result = _solvedivergent(ui, repo, ctx, evolvestate, + result = _solvedivergent(ui, repo, ctx, evolvestate, displayer, dryrun, confirm, progresscb) else: assert False, "unknown trouble category: %s" % (category) @@ -83,8 +93,8 @@ finally: lockmod.release(tr, lock, wlock) -def _solveunstable(ui, repo, orig, evolvestate, dryrun=False, confirm=False, - progresscb=None): +def _solveunstable(ui, repo, orig, evolvestate, displayer, dryrun=False, + confirm=False, progresscb=None, lastsolved=None): """ Tries to stabilize the changeset orig which is orphan. returns a tuple (bool, newnode) where, @@ -153,13 +163,13 @@ target = repo[heads.first()] else: target = targets[0] - displayer = compat.changesetdisplayer(ui, repo, {'template': shorttemplate}) target = repo[target] if not ui.quiet or confirm: repo.ui.write(_('move:'), label='evolve.operation') displayer.show(orig) - repo.ui.write(_('atop:')) - displayer.show(target) + if lastsolved is None or target != repo[lastsolved]: + repo.ui.write(_('atop:')) + displayer.show(target) if confirm and ui.prompt('perform evolve? [Ny]', 'n') != 'y': raise error.Abort(_('evolve aborted by user')) if progresscb: @@ -183,8 +193,8 @@ raise error.InterventionRequired(_("fix conflicts and see `hg help " "evolve.interrupted`")) -def _solvephasedivergence(ui, repo, bumped, evolvestate, dryrun=False, - confirm=False, progresscb=None): +def _solvephasedivergence(ui, repo, bumped, evolvestate, displayer, + dryrun=False, confirm=False, progresscb=None): """Stabilize a phase divergent changeset returns a tuple (bool, newnode) where, @@ -208,7 +218,6 @@ ui.write_err(msg) return (False, '') - displayer = compat.changesetdisplayer(ui, repo, {'template': shorttemplate}) if not ui.quiet or confirm: repo.ui.write(_('recreate:'), label='evolve.operation') displayer.show(bumped) @@ -326,7 +335,7 @@ repo.dirstate.setparents(newid, nodemod.nullid) return (True, replacementnode) -def _solvedivergent(ui, repo, divergent, evolvestate, dryrun=False, +def _solvedivergent(ui, repo, divergent, evolvestate, displayer, dryrun=False, confirm=False, progresscb=None): """tries to solve content-divergence of a changeset @@ -443,7 +452,6 @@ ui.write_err(hint) return (False, '') - displayer = compat.changesetdisplayer(ui, repo, {'template': shorttemplate}) if not ui.quiet or confirm: ui.write(_('merge:'), label='evolve.operation') displayer.show(divergent) @@ -1566,14 +1574,30 @@ 'command': 'evolve', 'orphanmerge': False, 'bookmarkchanges': [], 'temprevs': [], 'obsmarkers': []} evolvestate.addopts(stateopts) + # lastsolved: keep track of successor of last troubled cset we evolved + # to confirm that if atop msg should be suppressed to remove redundancy + lastsolved = None + + # check if revs to be evolved are in active topic to make sure that we + # can use stack aliases s# in evolve msgs. + activetopic = getattr(repo, 'currenttopic', '') + rev = revs[0] + revtopic = getattr(repo[rev], 'topic', '') + if revtopic: + revtopic = revtopic() + stacktmplt = False + if activetopic and revtopic and (activetopic == revtopic): + stacktmplt = True for rev in revs: curctx = repo[rev] progresscb() - ret = _solveone(ui, repo, curctx, evolvestate, dryrunopt, confirmopt, - progresscb, targetcat) + ret = _solveone(ui, repo, curctx, evolvestate, dryrunopt, + confirmopt, progresscb, targetcat, + lastsolved=lastsolved, stacktmplt=stacktmplt) seen += 1 if ret[0]: evolvestate['replacements'][curctx.node()] = ret[1] + lastsolved = ret[1] else: evolvestate['skippedrevs'].append(curctx.node()) @@ -1581,7 +1605,8 @@ # we were processing an orphan merge with both parents obsolete, # stabilized for second parent, re-stabilize for the first parent ret = _solveone(ui, repo, repo[ret[1]], evolvestate, dryrunopt, - confirmopt, progresscb, targetcat) + confirmopt, progresscb, targetcat, + stacktmplt=stacktmplt) if ret[0]: evolvestate['replacements'][curctx.node()] = ret[1] else: @@ -1718,15 +1743,21 @@ category = evolvestate['category'] confirm = evolvestate['confirm'] unfi = repo.unfiltered() + # lastsolved: keep track of successor of last troubled cset we + # evolved to confirm that if atop msg should be suppressed to remove + # redundancy + lastsolved = None for rev in evolvestate['revs']: # XXX: prevent this lookup by storing nodes instead of revnums curctx = unfi[rev] if (curctx.node() not in evolvestate['replacements'] and curctx.node() not in evolvestate['skippedrevs']): newnode = _solveone(ui, repo, curctx, evolvestate, False, - confirm, progresscb, category) + confirm, progresscb, category, + lastsolved=lastsolved) if newnode[0]: evolvestate['replacements'][curctx.node()] = newnode[1] + lastsolved = newnode[1] else: evolvestate['skippedrevs'].append(curctx.node()) return
--- a/hgext3rd/evolve/metadata.py Thu Oct 11 13:38:38 2018 +0200 +++ b/hgext3rd/evolve/metadata.py Fri Oct 12 11:33:30 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.2.2.dev' +__version__ = '8.3.0.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/'
--- a/hgext3rd/evolve/rewind.py Thu Oct 11 13:38:38 2018 +0200 +++ b/hgext3rd/evolve/rewind.py Fri Oct 12 11:33:30 2018 +0200 @@ -26,7 +26,7 @@ identicalflag = 4 @eh.command( - '^rewind', + '^rewind|undo', [('', 'to', [], _("rewind to these revisions")), ('', 'as-divergence', None, _("preserve current latest successors")), ('', 'exact', None, _("only rewind explicitly selected revisions")),
--- a/hgext3rd/evolve/stablerange.py Thu Oct 11 13:38:38 2018 +0200 +++ b/hgext3rd/evolve/stablerange.py Fri Oct 12 11:33:30 2018 +0200 @@ -195,7 +195,6 @@ assert standard_start < rangedepth slicepoint = standard_start return slicepoint - class stablerangebasic(abstractstablerange): """a very dummy implementation of stablerange @@ -391,6 +390,12 @@ # find were we need to slice slicepoint = self._slicepoint(repo, rangeid) + ret = self._slicesrangeat(repo, rangeid, slicepoint) + + return ret + + def _slicesrangeat(self, repo, rangeid, slicepoint): + headrev, initial_index = rangeid self._warmcachefor(repo, rangeid, slicepoint) stable_parent_data = self._parentrange(repo, rangeid) @@ -412,7 +417,20 @@ # The parent is above the slice point, # it's lower subrange will be the same so we just get them, # (and the top range is always the same) - subranges = self.subranges(repo, stable_parent_range)[:-1] + subranges = self.subranges(repo, stable_parent_range)[:] + parenttop = subranges.pop() + lenparenttop = self.rangelength(repo, parenttop) + skimfromparent = stable_parent_depth - slicepoint + if lenparenttop < skimfromparent: + # dropping the first subrange of the stable parent range is not + # enough to skip what we need to skip, change in approach is needed + subranges = self._slicesrangeat(repo, stable_parent_range, slicepoint) + subranges.pop() + elif lenparenttop > skimfromparent: + # The first subrange of the parent is longer that what we want + # to drop, we need to keep some of it. + midranges = self._slicesrangeat(repo, parenttop, slicepoint) + subranges.extend(midranges[:-1]) subranges.append(top_range) elif initial_index < stable_parent_depth < slicepoint: # the parent is below the range we are considering, we need to @@ -429,6 +447,13 @@ slicepoint)) subranges.append(top_range) + ### slow code block to validated the slicing works as expected + # toprevs = self.revsfromrange(repo, rangeid) + # subrevs = [] + # for s in subranges: + # subrevs.extend(self.revsfromrange(repo, s)) + # assert toprevs == subrevs, (rangeid, slicepoint, stable_parent_range, stable_parent_depth, toprevs, subrevs) + return subranges def _unique_subranges(self, repo, headrev, initial_index, slicepoint):
--- a/hgext3rd/evolve/stablerangecache.py Thu Oct 11 13:38:38 2018 +0200 +++ b/hgext3rd/evolve/stablerangecache.py Fri Oct 12 11:33:30 2018 +0200 @@ -388,7 +388,7 @@ class mergepointsql(stablerangesql, stablerange.stablerange_mergepoint): - _schemaversion = 2 + _schemaversion = 3 _cachefile = 'cache/evoext_stablerange_v2.sqlite' _cachename = 'evo-ext-stablerange-mergepoint'
--- a/hgext3rd/evolve/utility.py Thu Oct 11 13:38:38 2018 +0200 +++ b/hgext3rd/evolve/utility.py Fri Oct 12 11:33:30 2018 +0200 @@ -14,6 +14,7 @@ from mercurial.node import nullrev shorttemplate = "[{label('evolve.rev', rev)}] {desc|firstline}\n" +stacktemplate = "[s{label('evolve.rev', topicidx)}] {desc|firstline}\n" def obsexcmsg(ui, message, important=False): verbose = ui.configbool('experimental', 'verbose-obsolescence-exchange',
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hgext3rd/pullbundle.py Fri Oct 12 11:33:30 2018 +0200 @@ -0,0 +1,625 @@ +# Extension to provide automatic caching of bundle server for pull +# +# Copyright 2018 Pierre-Yves David <pierre-yves.david@ens-lyon.org> +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. +"""pullbundle: automatic server side bundle caching + +General principle +================= + +This extension provides a means for server to use pre-computed bundle for +serving arbitrary pulls. If missing, the necessary pre-computed bundle will be +generated on demand. + +To maximize usage of existing cached bundle, each pull will be served through +multiple bundles. The bundle will be created using "standard range" from the +"stablerange" principle. The "stablerange" concept if already used for +obsmarkers discovery in the evolve extensions. + +Using pull Bundle +================= + +All configuration is only required server side. + +The "stablerange" code currently still live in the evolve extensions, so for +now enabling that extensions is required: + +You need at minimum the following configuration: + + [extensions] + evolve=yes + pullbundle=yes + [experimental] + obshashrange.warm-cache = yes + +If you do not want to use evolution server side, you should disable obsmarkers exchange: + + [experimental] + evolution.exchange=no + +Extra Configuration +=================== + + [pullbundle] + # By default bundles are stored `.hg/cache/pullbundles/. + # This can be changed with the following config: + cache-directory=/absolute/path + +Implementation status +===================== + +Both for stablerange and pullbundle use "simple" initial implementations. +Theses implemenations focus on testing the algorithms and proving the features +works. Yet they are already useful and used in production. + +Performances are expected to greatly improved in the final implementation, +especially if some of it end up being compiled code. + +This first implementation lacks the ability to server the cached bundle from a +CDN. We'll want this limitation to be lifted quickly. + +The way mercurial core report progress is designed for the receival of a single +changegroup. So currently using pullbundle means flooding the user with output. +This will have to be fixed. + +Why is does this live in the same repository as evolve +====================================================== + +There is no fundamental reasons for live in the same repository. However, the +stablerange data-structure lives in evolve, so it was simpler to put this new +extensions next to it. As soon as stable range have been upstreamed, we won't +need the dependency to the evolve extension anymore. +""" + +import collections +import errno +import random +import os + +from mercurial import ( + changegroup, + discovery, + error, + exchange, + narrowspec, + node as nodemod, + registrar, + scmutil, + util, +) + +from mercurial.i18n import _ + +__version__ = '0.1.0.dev' +testedwith = '4.7.1' +# minimumhgversion = '' +buglink = 'https://bz.mercurial-scm.org/' + +cmdtable = {} +command = registrar.command(cmdtable) + +configtable = {} +configitem = registrar.configitem(configtable) + +configitem('pullbundle', 'cache-directory', + default=None, +) + +# generic wrapping + +def uisetup(ui): + exchange.getbundle2partsmapping['changegroup'] = _getbundlechangegrouppart + +def _getbundlechangegrouppart(bundler, repo, source, bundlecaps=None, + b2caps=None, heads=None, common=None, **kwargs): + """add a changegroup part to the requested bundle""" + if not kwargs.get(r'cg', True): + return + + version = '01' + cgversions = b2caps.get('changegroup') + if cgversions: # 3.1 and 3.2 ship with an empty value + cgversions = [v for v in cgversions + if v in changegroup.supportedoutgoingversions(repo)] + if not cgversions: + raise ValueError(_('no common changegroup version')) + version = max(cgversions) + + outgoing = exchange._computeoutgoing(repo, heads, common) + if not outgoing.missing: + return + + if kwargs.get(r'narrow', False): + include = sorted(filter(bool, kwargs.get(r'includepats', []))) + exclude = sorted(filter(bool, kwargs.get(r'excludepats', []))) + filematcher = narrowspec.match(repo.root, include=include, + exclude=exclude) + else: + filematcher = None + + # START OF ALTERED PART + makeallcgpart(bundler.newpart, repo, outgoing, version, source, bundlecaps, + filematcher, cgversions) + # END OF ALTERED PART + + if kwargs.get(r'narrow', False) and (include or exclude): + narrowspecpart = bundler.newpart('narrow:spec') + if include: + narrowspecpart.addparam( + 'include', '\n'.join(include), mandatory=True) + if exclude: + narrowspecpart.addparam( + 'exclude', '\n'.join(exclude), mandatory=True) + +def makeallcgpart(newpart, repo, outgoing, version, source, + bundlecaps, filematcher, cgversions): + + pullbundle = not filematcher + if pullbundle and not util.safehasattr(repo, 'stablerange'): + repo.ui.warn('pullbundle: required extension "evolve" are missing, skipping pullbundle\n') + pullbundle = False + if filematcher: + makeonecgpart(newpart, repo, None, outgoing, version, source, bundlecaps, + filematcher, cgversions) + else: + start = util.timer() + slices = sliceoutgoing(repo, outgoing) + end = util.timer() + msg = _('pullbundle-cache: "missing" set sliced into %d subranges ' + 'in %s seconds\n') + repo.ui.write(msg % (len(slices), end - start)) + for sliceid, sliceout in slices: + makeonecgpart(newpart, repo, sliceid, sliceout, version, source, bundlecaps, + filematcher, cgversions) + +# stable range slicing + +DEBUG = False + +def sliceoutgoing(repo, outgoing): + cl = repo.changelog + rev = cl.nodemap.get + node = cl.node + revsort = repo.stablesort + + missingrevs = set(rev(n) for n in outgoing.missing) + if DEBUG: + ms = missingrevs.copy() + ss = [] + allslices = [] + missingheads = [rev(n) for n in sorted(outgoing.missingheads, reverse=True)] + for head in missingheads: + localslices = [] + localmissing = set(repo.revs('%ld and ::%d', missingrevs, head)) + thisrunmissing = localmissing.copy() + while localmissing: + slicerevs = [] + for r in revsort.walkfrom(repo, head): + if r not in thisrunmissing: + break + slicerevs.append(r) + slicenodes = [node(r) for r in slicerevs] + localslices.append(canonicalslices(repo, slicenodes)) + if DEBUG: + ss.append(slicerevs) + missingrevs.difference_update(slicerevs) + localmissing.difference_update(slicerevs) + if localmissing: + heads = list(repo.revs('heads(%ld)', localmissing)) + heads.sort(key=node) + head = heads.pop() + if heads: + thisrunmissing = repo.revs('%ld and only(%d, %ld)', + localmissing, + head, + heads) + else: + thisrunmissing = localmissing.copy() + if DEBUG: + for s in reversed(ss): + ms -= set(s) + missingbase = repo.revs('parents(%ld) and %ld', s, ms) + if missingbase: + repo.ui.write_err('!!! rev bundled while parents missing\n') + repo.ui.write_err(' parent: %s\n' % list(missingbase)) + pb = repo.revs('%ld and children(%ld)', s, missingbase) + repo.ui.write_err(' children: %s\n' % list(pb)) + h = repo.revs('heads(%ld)', s) + repo.ui.write_err(' heads: %s\n' % list(h)) + raise error.ProgrammingError('issuing a range before its parents') + + for s in reversed(localslices): + allslices.extend(s) + # unknown subrange might had to be computed + repo.stablerange.save(repo) + return [(rangeid, outgoingfromnodes(repo, nodes)) + for rangeid, nodes in allslices] + +def canonicalslices(repo, nodes): + depth = repo.depthcache.get + stablerange = repo.stablerange + rangelength = lambda x: stablerange.rangelength(repo, x) + headrev = repo.changelog.rev(nodes[0]) + nbrevs = len(nodes) + headdepth = depth(headrev) + skipped = headdepth - nbrevs + rangeid = (headrev, skipped) + + subranges = canonicalsubranges(repo, stablerange, rangeid) + idx = 0 + slices = [] + nodes.reverse() + for rangeid in subranges: + size = rangelength(rangeid) + slices.append((rangeid, nodes[idx:idx + size])) + idx += size + ### slow code block to validate ranges content + # rev = repo.changelog.nodemap.get + # for ri, ns in slices: + # a = set(rev(n) for n in ns) + # b = set(repo.stablerange.revsfromrange(repo, ri)) + # l = repo.stablerange.rangelength(repo, ri) + # repo.ui.write('range-length: %d-%d %s %s\n' % (ri[0], ri[1], l, len(a))) + # if a != b: + # d = (ri[0], ri[1], b - a, a - b) + # repo.ui.write("mismatching content: %d-%d -%s +%s\n" % d) + return slices + +def canonicalsubranges(repo, stablerange, rangeid): + """slice a size of nodes into most reusable subranges + + We try to slice a range into a set of "largest" and "canonical" stable + range. + + It might make sense to move this function as a 'stablerange' method. + """ + headrev, skip = rangeid + rangedepth = stablerange.depthrev(repo, rangeid[0]) + canonicals = [] + + # 0. find the first power of 2 higher than this range depth + cursor = 1 + while cursor <= rangedepth: + cursor *= 2 + + # 1. find first cupt + precut = cut = 0 + while True: + if skip <= cut: + break + if cut + cursor < rangedepth: + precut = cut + cut += cursor + if cursor == 1: + break + cursor //= 2 + + # 2. optimise, bottom part + if skip != cut: + currentsize = tailsize = cut - skip + assert 0 < tailsize, tailsize + + # we need to take several "standard cut" in the bottom part + # + # This is similar to what we will do for the top part, we reusing the + # existing structure is a bit more complex. + allcuts = list(reversed(standardcut(tailsize))) + prerange = (headrev, precut) + ### slow code block to check we operate on the right data + # rev = repo.changelog.nodemap.get + # allrevs = [rev(n) for n in nodes] + # allrevs.reverse() + # prerevs = repo.stablerange.revsfromrange(repo, prerange) + # assert allrevs == prerevs[(len(prerevs) - len(allrevs)):] + # end of check + sub = list(stablerange.subranges(repo, prerange)[:-1]) + + bottomranges = [] + # XXX we might be able to reuse core stable-range logic instead of + # redoing this manually + currentrange = sub.pop() + currentsize = stablerange.rangelength(repo, currentrange) + currentcut = None + while allcuts or currentcut is not None: + # get the next cut if needed + if currentcut is None: + currentcut = allcuts.pop() + # deal attemp a cut + if currentsize == currentcut: + bottomranges.append(currentrange) + currentcut = None + elif currentsize < currentcut: + bottomranges.append(currentrange) + currentcut -= currentsize + else: # currentsize > currentcut + newskip = currentrange[1] + (currentsize - currentcut) + currentsub = stablerange._slicesrangeat(repo, currentrange, newskip) + bottomranges.append(currentsub.pop()) + sub.extend(currentsub) + currentcut = None + currentrange = sub.pop() + currentsize = stablerange.rangelength(repo, currentrange) + bottomranges.reverse() + canonicals.extend(bottomranges) + + # 3. take recursive subrange until we get to a power of two size? + current = (headrev, cut) + while not poweroftwo(stablerange.rangelength(repo, current)): + sub = stablerange.subranges(repo, current) + canonicals.extend(sub[:-1]) + current = sub[-1] + canonicals.append(current) + + return canonicals + +def standardcut(size): + assert 0 < size + # 0. find the first power of 2 higher than this range depth + cut = 1 + while cut <= size: + cut *= 2 + + allcuts = [] + # 1. find all standard expected cut + while 1 < cut and size: + cut //= 2 + if cut <= size: + allcuts.append(cut) + size -= cut + return allcuts + +def poweroftwo(num): + return num and not num & (num - 1) + +def outgoingfromnodes(repo, nodes): + return discovery.outgoing(repo, + missingroots=nodes, + missingheads=nodes) + +# changegroup part construction + +def _changegroupinfo(repo, nodes, source): + if repo.ui.verbose or source == 'bundle': + repo.ui.status(_("%d changesets found\n") % len(nodes)) + +def _makenewstream(newpart, repo, outgoing, version, source, + bundlecaps, filematcher, cgversions): + old = changegroup._changegroupinfo + try: + changegroup._changegroupinfo = _changegroupinfo + if filematcher is not None: + cgstream = changegroup.makestream(repo, outgoing, version, source, + bundlecaps=bundlecaps, + filematcher=filematcher) + else: + cgstream = changegroup.makestream(repo, outgoing, version, source, + bundlecaps=bundlecaps) + finally: + changegroup._changegroupinfo = old + + nbchanges = len(outgoing.missing) + pversion = None + if cgversions: + pversion = version + return (cgstream, nbchanges, pversion) + +def _makepartfromstream(newpart, repo, cgstream, nbchanges, version): + # same as upstream code + + part = newpart('changegroup', data=cgstream) + if version: + part.addparam('version', version) + + part.addparam('nbchanges', '%d' % nbchanges, + mandatory=False) + + if 'treemanifest' in repo.requirements: + part.addparam('treemanifest', '1') + +# cache management + +def cachedir(repo): + cachedir = repo.ui.config('pullbundle', 'cache-directory') + if cachedir is not None: + return cachedir + return repo.cachevfs.join('pullbundles') + +def getcache(repo, bundlename): + cdir = cachedir(repo) + bundlepath = os.path.join(cdir, bundlename) + if not os.path.exists(bundlepath): + return None + # delay file opening as much as possible this introduce a small race + # condition if someone remove the file before we actually use it. However + # opening too many file will not work. + + def data(): + with open(bundlepath, 'rb') as fd: + for chunk in util.filechunkiter(fd): + yield chunk + return data() + +def cachewriter(repo, bundlename, stream): + cdir = cachedir(repo) + bundlepath = os.path.join(cdir, bundlename) + try: + os.makedirs(cdir) + except OSError as exc: + if exc.errno == errno.EEXIST: + pass + with util.atomictempfile(bundlepath) as cachefile: + for chunk in stream: + cachefile.write(chunk) + yield chunk + +BUNDLEMASK = "%s-%s-%010iskip-%010isize.hg" + +def makeonecgpart(newpart, repo, rangeid, outgoing, version, source, + bundlecaps, filematcher, cgversions): + bundlename = cachedata = None + if rangeid is not None: + nbchanges = repo.stablerange.rangelength(repo, rangeid) + headnode = nodemod.hex(repo.changelog.node(rangeid[0])) + # XXX do we need to use cgversion in there? + bundlename = BUNDLEMASK % (version, headnode, rangeid[1], nbchanges) + cachedata = getcache(repo, bundlename) + if cachedata is None: + partdata = _makenewstream(newpart, repo, outgoing, version, source, + bundlecaps, filematcher, cgversions) + if bundlename is not None: + cgstream = cachewriter(repo, bundlename, partdata[0]) + partdata = (cgstream,) + partdata[1:] + else: + if repo.ui.verbose or source == 'bundle': + repo.ui.status(_("%d changesets found in caches\n") % nbchanges) + pversion = None + if cgversions: + pversion = version + partdata = (cachedata, nbchanges, pversion) + return _makepartfromstream(newpart, repo, *partdata) + +@command('^debugpullbundlecacheoverlap', + [('', 'count', 100, _('of "client" pulling')), + ('', 'min-cache', 1, _('minimum size of cached bundle')), + ], + _('hg debugpullbundlecacheoverlap [--client 100] REVSET')) +def debugpullbundlecacheoverlap(ui, repo, *revs, **opts): + '''Display statistic on bundle cache hit + + This command "simulate pulls from multiple clients. Each using a random + subset of revisions defined by REVSET. And display statistic about the + overlap in bundle necessary to serve them. + ''' + actionrevs = scmutil.revrange(repo, revs) + if not revs: + raise error.Abort('No revision selected') + count = opts['count'] + min_cache = opts['min_cache'] + + bundlehits = collections.defaultdict(lambda: 0) + pullstats = [] + + rlen = lambda rangeid: repo.stablerange.rangelength(repo, rangeid) + + repo.ui.write("gathering %d sample pulls within %d revisions\n" + % (count, len(actionrevs))) + if 1 < min_cache: + repo.ui.write(" not caching ranges smaller than %d changesets\n" % min_cache) + for i in xrange(count): + repo.ui.progress('gathering data', i, total=count) + outgoing = takeonesample(repo, actionrevs) + ranges = sliceoutgoing(repo, outgoing) + hitranges = 0 + hitchanges = 0 + totalchanges = 0 + largeranges = [] + for rangeid, __ in ranges: + length = rlen(rangeid) + totalchanges += length + if bundlehits[rangeid]: + hitranges += 1 + hitchanges += rlen(rangeid) + if min_cache <= length: + bundlehits[rangeid] += 1 + largeranges.append(rangeid) + + stats = (len(outgoing.missing), + totalchanges, + hitchanges, + len(largeranges), + hitranges, + ) + pullstats.append(stats) + repo.ui.progress('gathering data', None) + + sizes = [] + changesmissing = [] + totalchanges = 0 + totalcached = 0 + changesratio = [] + rangesratio = [] + bundlecount = [] + for entry in pullstats: + sizes.append(entry[0]) + changesmissing.append(entry[1] - entry[2]) + changesratio.append(entry[2] / float(entry[1])) + if entry[3]: + rangesratio.append(entry[4] / float(entry[3])) + else: + rangesratio.append(1) + bundlecount.append(entry[3]) + totalchanges += entry[1] + totalcached += entry[2] + + cachedsizes = [] + cachedhits = [] + for rangeid, hits in bundlehits.items(): + if hits <= 0: + continue + length = rlen(rangeid) + cachedsizes.append(length) + cachedhits.append(hits) + + sizesdist = distribution(sizes) + repo.ui.write(fmtdist('pull size', sizesdist)) + + changesmissingdist = distribution(changesmissing) + repo.ui.write(fmtdist('non-cached changesets', changesmissingdist)) + + changesratiodist = distribution(changesratio) + repo.ui.write(fmtdist('ratio of cached changesets', changesratiodist)) + + bundlecountdist = distribution(bundlecount) + repo.ui.write(fmtdist('bundle count', bundlecountdist)) + + rangesratiodist = distribution(rangesratio) + repo.ui.write(fmtdist('ratio of cached bundles', rangesratiodist)) + + repo.ui.write('changesets served:\n') + repo.ui.write(' total: %7d\n' % totalchanges) + repo.ui.write(' from cache: %7d (%2d%%)\n' + % (totalcached, (totalcached * 100 // totalchanges))) + repo.ui.write(' bundle: %7d\n' % sum(bundlecount)) + + cachedsizesdist = distribution(cachedsizes) + repo.ui.write(fmtdist('size of cached bundles', cachedsizesdist)) + + cachedhitsdist = distribution(cachedhits) + repo.ui.write(fmtdist('hit on cached bundles', cachedhitsdist)) + +def takeonesample(repo, revs): + node = repo.changelog.node + pulled = random.sample(revs, max(4, len(revs) // 1000)) + pulled = repo.revs('%ld::%ld', pulled, pulled) + nodes = [node(r) for r in pulled] + return outgoingfromnodes(repo, nodes) + +def distribution(data): + data.sort() + length = len(data) + return { + 'min': data[0], + '10%': data[length // 10], + '25%': data[length // 4], + '50%': data[length // 2], + '75%': data[(length // 4) * 3], + '90%': data[(length // 10) * 9], + '95%': data[(length // 20) * 19], + 'max': data[-1], + } + +STATSFORMAT = """{name}: + min: {min} + 10%: {10%} + 25%: {25%} + 50%: {50%} + 75%: {75%} + 90%: {90%} + 95%: {95%} + max: {max} +""" + +def fmtdist(name, data): + return STATSFORMAT.format(name=name, **data)
--- a/hgext3rd/topic/__init__.py Thu Oct 11 13:38:38 2018 +0200 +++ b/hgext3rd/topic/__init__.py Fri Oct 12 11:33:30 2018 +0200 @@ -178,7 +178,7 @@ 'topic.active': 'green', } -__version__ = '0.11.2.dev' +__version__ = '0.12.0.dev' testedwith = '4.3.3 4.4.2 4.5.2 4.6.2 4.7' minimumhgversion = '4.3' @@ -546,11 +546,21 @@ """:topic: String. The topic of the changeset""" ctx = context.resource(mapping, 'ctx') return ctx.topic() + + @templatekeyword('topicidx', requires={'ctx'}) + def topicidxkw(context, mapping): + """:topicidx: Integer. Index of the changeset as a stack alias""" + ctx = context.resource(mapping, 'ctx') + return ctx.topicidx() else: def topickw(**args): """:topic: String. The topic of the changeset""" return args['ctx'].topic() + def topicidxkw(**args): + """:topicidx: Integer. Index of the changeset as a stack alias""" + return args['ctx'].topicidx() + def wrapinit(orig, self, repo, *args, **kwargs): orig(self, repo, *args, **kwargs) if constants.extrakey not in self._extra:
--- a/hgext3rd/topic/revset.py Thu Oct 11 13:38:38 2018 +0200 +++ b/hgext3rd/topic/revset.py Fri Oct 12 11:33:30 2018 +0200 @@ -24,7 +24,7 @@ revsetpredicate = registrar.revsetpredicate() def getstringstrict(x, err): - if x and (x[0] == 'string'): + if x and x[0] == 'string': return x[1] raise error.ParseError(err) @@ -51,25 +51,19 @@ else: kind, pattern, matcher = mkmatcher(topic) + if topic.startswith('literal:') and pattern not in repo.topics: + raise error.RepoLookupError("topic '%s' does not exist" % pattern) + def matches(r): topic = repo[r].topic() if not topic: return False return matcher(topic) - if kind == 'literal': - # note: falls through to the revset case if no topic with this name - # exists and pattern kind is not specified explicitly - - if pattern not in repo.topics and topic.startswith('literal:'): - raise error.RepoLookupError("topic '%s' does not exist" - % pattern) - return (subset & mutable).filter(matches) - else: - return (subset & mutable).filter(matches) + return (subset & mutable).filter(matches) s = revset.getset(repo, revset.fullreposet(repo), x) - topics = set(repo[r].topic() for r in s) + topics = {repo[r].topic() for r in s} topics.discard('') def matches(r):
--- a/tests/test-corrupt.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-corrupt.t Fri Oct 12 11:33:30 2018 +0200 @@ -60,7 +60,7 @@ checking manifests crosschecking files in changesets and manifests checking files - 13 files, 3 changesets, 13 total revisions + checked 3 changesets with 13 changes to 13 files $ mkcommit D $ mkcommit E $ hg up -q .^^ @@ -115,7 +115,7 @@ checking manifests crosschecking files in changesets and manifests checking files - 15 files, 4 changesets, 15 total revisions + checked 4 changesets with 15 changes to 15 files
--- a/tests/test-discovery-obshashrange.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-discovery-obshashrange.t Fri Oct 12 11:33:30 2018 +0200 @@ -319,7 +319,7 @@ * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> sending hello command (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> sending between command (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> remote: * (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> remote: capabilities: _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v1 batch branchmap bundle2=HG20%0Abookmarks%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Aobsmarkers%3DV0%2CV1%0Aphases%3Dheads%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps%0Arev-branch-cache changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) + * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> remote: capabilities: _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v1 batch branchmap bundle2=HG20%0Abookmarks%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Aobsmarkers%3DV0%2CV1%0Aphases%3Dheads%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps%0Arev-branch-cache%0Astream%3Dv2 changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> remote: 1 (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> sending protocaps command (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> preparing listkeys for "phases" (glob)
--- a/tests/test-evolve-abort-orphan.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-abort-orphan.t Fri Oct 12 11:33:30 2018 +0200 @@ -157,7 +157,6 @@ move:[2] added b atop:[7] added a move:[5] added c - atop:[8] added b merging c warning: conflicts while merging c! (edit, then use 'hg resolve --mark') fix conflicts and see `hg help evolve.interrupted` @@ -485,7 +484,6 @@ move:[2] added b atop:[4] added a move:[3] added c - atop:[5] added b merging c warning: conflicts while merging c! (edit, then use 'hg resolve --mark') fix conflicts and see `hg help evolve.interrupted`
--- a/tests/test-evolve-content-divergence.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-content-divergence.t Fri Oct 12 11:33:30 2018 +0200 @@ -378,7 +378,6 @@ move:[3] added c atop:[8] added b move:[4] added d - atop:[9] added c working directory is now at 4ae4427ee9f8 $ hg glog @ 10:4ae4427ee9f8 added d @@ -794,7 +793,7 @@ adding manifests adding file changes added 5 changesets with 5 changes to 5 files - new changesets 8fa14d15e168:c41c793e0ef1 + new changesets 8fa14d15e168:c41c793e0ef1 (5 drafts) (run 'hg update' to get a working copy) $ hg glog o 4:c41c793e0ef1 added d @@ -819,9 +818,7 @@ move:[2] added b atop:[6] watbar to a move:[3] added c - atop:[7] added b move:[4] added d - atop:[8] added c working directory is now at 15c781f93cac $ hg glog @ 9:15c781f93cac added d @@ -845,9 +842,7 @@ move:[2] added b atop:[5] watbar to a move:[3] added c - atop:[6] added b move:[4] added d - atop:[7] added c working directory is now at c72d2885eb51 $ hg glog @ 8:c72d2885eb51 added d @@ -870,7 +865,7 @@ added 4 changesets with 0 changes to 4 files (+1 heads) 5 new obsolescence markers 8 new content-divergent changesets - new changesets 82b74d5dc678:15c781f93cac + new changesets 82b74d5dc678:15c781f93cac (4 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) $ hg glog
--- a/tests/test-evolve-continue.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-continue.t Fri Oct 12 11:33:30 2018 +0200 @@ -166,7 +166,6 @@ move:[5] added c atop:[10] added b move:[8] added d - atop:[11] added c working directory is now at 6642d2c9176e $ hg glog @@ -237,7 +236,6 @@ move:[12] added d atop:[16] added c move:[13] added f - atop:[17] added d merging f warning: conflicts while merging f! (edit, then use 'hg resolve --mark') fix conflicts and see `hg help evolve.interrupted` @@ -252,7 +250,6 @@ move:[14] added g atop:[18] added f move:[15] added h - atop:[19] added g merging h warning: conflicts while merging h! (edit, then use 'hg resolve --mark') fix conflicts and see `hg help evolve.interrupted`
--- a/tests/test-evolve-issue5832.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-issue5832.t Fri Oct 12 11:33:30 2018 +0200 @@ -117,7 +117,6 @@ move:[2] added b atop:[5] added a move:[4] merge commit - atop:[8] added b ancestor '7235ef625ea3' split over multiple topological branches. choose an evolve destination: 0: [62fb70414f99] added c @@ -259,7 +258,6 @@ move:[2] added b atop:[6] added a move:[4] merge commit - atop:[9] added b ancestor 'cdf2ea1b9312' split over multiple topological branches. choose an evolve destination: 0: [62fb70414f99] added c
--- a/tests/test-evolve-noupdate.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-noupdate.t Fri Oct 12 11:33:30 2018 +0200 @@ -64,7 +64,6 @@ move:[3] added c atop:[5] added b move:[4] added d - atop:[6] added c $ hg glog o 7:b6b20b8eefdc added d @@ -108,9 +107,7 @@ move:[5] added b atop:[8] added a move:[6] added c - atop:[9] added b move:[7] added d - atop:[10] added c working directory is now at 12c720cb3782 $ hg glog
--- a/tests/test-evolve-obshistory.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-obshistory.t Fri Oct 12 11:33:30 2018 +0200 @@ -126,7 +126,7 @@ added 1 changesets with 0 changes to 1 files (+1 heads) 2 new obsolescence markers obsoleted 1 changesets - new changesets 7a230b46bf61 + new changesets 7a230b46bf61 (1 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) working directory parent is obsolete! (471f378eab4c) (use 'hg evolve' to update to its successor: 7a230b46bf61)
--- a/tests/test-evolve-order.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-order.t Fri Oct 12 11:33:30 2018 +0200 @@ -62,7 +62,6 @@ move:[2] add _b atop:[4] add _a move:[3] add _c - atop:[5] add _b working directory is now at 52b8f9b04f83 evolve --rev reorders the rev to solve instability. Harder case, obsolescence @@ -106,9 +105,7 @@ move:[10] bprime atop:[11] asecond move:[6] add _c - atop:[12] bprime move:[7] add _d - atop:[13] add _c working directory is now at 739f18ac1d03 $ hg log -G @ 14:739f18ac1d03@default(draft) add _d @@ -214,7 +211,6 @@ move:[17] add c3_ atop:[28] add c2prime move:[18] add c4_ - atop:[30] add c3_ working directory is now at 35e7b797ace5 $ hg log -G -r "desc(_d)::" @ 31:35e7b797ace5@default(draft) add c4_
--- a/tests/test-evolve-orphan-merge.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-orphan-merge.t Fri Oct 12 11:33:30 2018 +0200 @@ -350,7 +350,6 @@ move:[16] added m atop:[20] added l move:[19] merge commit - atop:[21] added m working directory is now at a446ad3e6700 $ hg glog
--- a/tests/test-evolve-phase-divergence.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-phase-divergence.t Fri Oct 12 11:33:30 2018 +0200 @@ -80,7 +80,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets 4d1169d82e47 + new changesets 4d1169d82e47 (1 drafts) (run 'hg update' to get a working copy) $ hg glog @@ -260,7 +260,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets aa071e5554e3 + new changesets aa071e5554e3 (1 drafts) (run 'hg update' to get a working copy) $ hg push ../public @@ -414,7 +414,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets b756eb10ea73 + new changesets b756eb10ea73 (1 drafts) 1 local changesets published (run 'hg update' to get a working copy) @@ -545,7 +545,7 @@ adding file changes added 2 changesets with 2 changes to 2 files 2 new obsolescence markers - new changesets 502e73736632:2352021b3785 + new changesets 502e73736632:2352021b3785 (1 drafts) (run 'hg update' to get a working copy) $ hg push ../public pushing to ../public
--- a/tests/test-evolve-serveronly-bundle2.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-serveronly-bundle2.t Fri Oct 12 11:33:30 2018 +0200 @@ -72,7 +72,7 @@ adding manifests adding file changes added 2 changesets with 2 changes to 2 files - new changesets 8685c6d34325:4957bfdac07e + new changesets 8685c6d34325:4957bfdac07e (2 drafts) (run 'hg update' to get a working copy) $ cat ../errors.log $ hg push -R ../other @@ -130,7 +130,7 @@ added 1 changesets with 1 changes to [12] files \(\+1 heads\) (re) 1 new obsolescence markers obsoleted 1 changesets - new changesets 9d1c114e7797 + new changesets 9d1c114e7797 (1 drafts) (run 'hg heads' to see heads) $ cat ../errors.log $ hg -R ../other pull
--- a/tests/test-evolve-stop-orphan.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-stop-orphan.t Fri Oct 12 11:33:30 2018 +0200 @@ -242,9 +242,7 @@ move:[1] added a atop:[7] added hgignore move:[2] added b - atop:[8] added a move:[5] added c - atop:[9] added b merging c warning: conflicts while merging c! (edit, then use 'hg resolve --mark') fix conflicts and see `hg help evolve.interrupted` @@ -357,7 +355,6 @@ move:[9] added b atop:[12] added a move:[10] added c - atop:[13] added b merging c warning: conflicts while merging c! (edit, then use 'hg resolve --mark') fix conflicts and see `hg help evolve.interrupted`
--- a/tests/test-evolve-templates.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-templates.t Fri Oct 12 11:33:30 2018 +0200 @@ -1004,7 +1004,7 @@ added 1 changesets with 0 changes to 1 files (+1 heads) 2 new obsolescence markers obsoleted 1 changesets - new changesets 7a230b46bf61 + new changesets 7a230b46bf61 (1 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) working directory parent is obsolete! (471f378eab4c) (use 'hg evolve' to update to its successor: 7a230b46bf61)
--- a/tests/test-evolve-topic.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve-topic.t Fri Oct 12 11:33:30 2018 +0200 @@ -123,11 +123,19 @@ Run evolve --all + $ hg stack + ### topic: foo + ### target: default (branch) + s4$ add fff (current unstable) + s3$ add eee (unstable) + s2: add ddd + s1: add ccc + s0^ add bbb (base) + $ hg evolve --all - move:[4] add eee - atop:[10] add ddd - move:[11] add fff - atop:[12] add eee + move:[s3] add eee + atop:[s2] add ddd + move:[s4] add fff working directory is now at 070c5573d8f9 $ hg log -G @ 13 - {foo} 070c5573d8f9 add fff (draft) @@ -164,11 +172,8 @@ move:[6] add ggg atop:[13] add fff move:[7] add hhh - atop:[14] add ggg move:[8] add iii - atop:[15] add hhh move:[9] add jjj - atop:[16] add iii working directory is now at 9bf430c106b7 $ hg log -G @ 17 - {bar} 9bf430c106b7 add jjj (draft)
--- a/tests/test-evolve.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-evolve.t Fri Oct 12 11:33:30 2018 +0200 @@ -380,8 +380,8 @@ $ hg up -r "desc('a nifty feature')" 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg revert -r "desc('another feature')" --all + reverting main-file-1 adding file-from-B - reverting main-file-1 $ sed -i'' -e s/Zwei/deux/ main-file-1 $ hg commit -m 'another feature that rox' -o 5 created new head @@ -468,7 +468,6 @@ atop:[10] dansk! merging main-file-1 move:[9] dansk 3! - atop:[11] dansk 2! merging main-file-1 working directory is now at 96abb1319a47 $ hg log -G @@ -508,7 +507,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets 702e4d0a6d86 + new changesets 702e4d0a6d86 (1 drafts) $ cd alpha $ cat << EOF > A @@ -541,7 +540,7 @@ checking manifests crosschecking files in changesets and manifests checking files - 3 files, 3 changesets, 3 total revisions + checked 3 changesets with 3 changes to 3 files $ hg --config extensions.hgext.mq= strip 'extinct()' abort: empty revision set [255] @@ -553,7 +552,7 @@ checking manifests crosschecking files in changesets and manifests checking files - 2 files, 2 changesets, 2 total revisions + checked 2 changesets with 2 changes to 2 files $ cd .. Clone just this branch @@ -567,7 +566,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 1 new obsolescence markers - new changesets c6dda801837c + new changesets c6dda801837c (1 drafts) (run 'hg update' to get a working copy) $ hg up 2 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -1164,55 +1163,11 @@ > EOF $ hg next hg: unknown command 'next' - Mercurial Distributed SCM - - basic commands: - - add add the specified files on the next commit - annotate show changeset information by line for each file - clone make a copy of an existing repository - commit commit the specified files or all outstanding changes - diff diff repository (or selected files) - export dump the header and diffs for one or more changesets - forget forget the specified files on the next commit - init create a new repository in the given directory - log show revision history of entire repository or files - merge merge another revision into working directory - pull pull changes from the specified source - push push changes to the specified destination - remove remove the specified files on the next commit - serve start stand-alone webserver - status show changed files in the working directory - summary summarize working directory state - update update working directory (or switch revisions) - - (use 'hg help' for the full list of commands or 'hg -v' for details) + (use 'hg help' for a list of commands) [255] $ hg fold hg: unknown command 'fold' - Mercurial Distributed SCM - - basic commands: - - add add the specified files on the next commit - annotate show changeset information by line for each file - clone make a copy of an existing repository - commit commit the specified files or all outstanding changes - diff diff repository (or selected files) - export dump the header and diffs for one or more changesets - forget forget the specified files on the next commit - init create a new repository in the given directory - log show revision history of entire repository or files - merge merge another revision into working directory - pull pull changes from the specified source - push push changes to the specified destination - remove remove the specified files on the next commit - serve start stand-alone webserver - status show changed files in the working directory - summary summarize working directory state - update update working directory (or switch revisions) - - (use 'hg help' for the full list of commands or 'hg -v' for details) + (use 'hg help' for a list of commands) [255] Enabling commands selectively, only fold enabled, next is still unknown $ cat >> $HGRCPATH <<EOF @@ -1225,30 +1180,7 @@ [255] $ hg next hg: unknown command 'next' - Mercurial Distributed SCM - - basic commands: - - add add the specified files on the next commit - annotate show changeset information by line for each file - clone make a copy of an existing repository - commit commit the specified files or all outstanding changes - diff diff repository (or selected files) - export dump the header and diffs for one or more changesets - fold fold multiple revisions into a single one - forget forget the specified files on the next commit - init create a new repository in the given directory - log show revision history of entire repository or files - merge merge another revision into working directory - pull pull changes from the specified source - push push changes to the specified destination - remove remove the specified files on the next commit - serve start stand-alone webserver - status show changed files in the working directory - summary summarize working directory state - update update working directory (or switch revisions) - - (use 'hg help' for the full list of commands or 'hg -v' for details) + (use 'hg help' for a list of commands) [255] Shows "use 'hg evolve' to..." hints iff the evolve command is enabled @@ -1358,7 +1290,6 @@ move:[20] add j2 atop:[23] add j1 move:[21] add j3 - atop:[24] add j2 working directory is now at 0d9203b74542 $ glog -r "0cf3707e8971::" @ 25:0d9203b74542@default(draft) add j3 @@ -1532,7 +1463,6 @@ move:[35] will be evolved safely atop:[37] amended move:[36] will cause conflict at evolve - atop:[38] will be evolved safely merging newfile warning: conflicts while merging newfile! (edit, then use 'hg resolve --mark') fix conflicts and see `hg help evolve.interrupted`
--- a/tests/test-exchange-obsmarkers-case-A1.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-exchange-obsmarkers-case-A1.t Fri Oct 12 11:33:30 2018 +0200 @@ -113,7 +113,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 1 new obsolescence markers - new changesets f5bc6836db60 + new changesets f5bc6836db60 (1 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main @@ -155,7 +155,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 1 new obsolescence markers - new changesets f5bc6836db60 + new changesets f5bc6836db60 (1 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main @@ -269,7 +269,7 @@ adding file changes added 2 changesets with 2 changes to 2 files 1 new obsolescence markers - new changesets f5bc6836db60:f6fbb35d8ac9 + new changesets f5bc6836db60:f6fbb35d8ac9 (2 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main @@ -311,7 +311,7 @@ adding file changes added 2 changesets with 2 changes to 2 files 1 new obsolescence markers - new changesets f5bc6836db60:f6fbb35d8ac9 + new changesets f5bc6836db60:f6fbb35d8ac9 (2 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main
--- a/tests/test-exchange-obsmarkers-case-A2.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-exchange-obsmarkers-case-A2.t Fri Oct 12 11:33:30 2018 +0200 @@ -124,7 +124,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 1 new obsolescence markers - new changesets f5bc6836db60 + new changesets f5bc6836db60 (1 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main
--- a/tests/test-exchange-obsmarkers-case-A3.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-exchange-obsmarkers-case-A3.t Fri Oct 12 11:33:30 2018 +0200 @@ -146,7 +146,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 1 new obsolescence markers - new changesets e5ea8f9c7314 + new changesets e5ea8f9c7314 (1 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main @@ -268,7 +268,7 @@ 1 new obsolescence markers obsoleted 1 changesets 1 new orphan changesets - new changesets e5ea8f9c7314 + new changesets e5ea8f9c7314 (1 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) ## post pull state # obstore: main
--- a/tests/test-exchange-obsmarkers-case-A4.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-exchange-obsmarkers-case-A4.t Fri Oct 12 11:33:30 2018 +0200 @@ -134,7 +134,7 @@ adding file changes added 2 changesets with 2 changes to 2 files 1 new obsolescence markers - new changesets 28b51eb45704:06055a7959d4 + new changesets 28b51eb45704:06055a7959d4 (2 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main
--- a/tests/test-exchange-obsmarkers-case-A5.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-exchange-obsmarkers-case-A5.t Fri Oct 12 11:33:30 2018 +0200 @@ -141,7 +141,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 1 new obsolescence markers - new changesets f6298a8ac3a4 + new changesets f6298a8ac3a4 (1 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main
--- a/tests/test-exchange-obsmarkers-case-B3.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-exchange-obsmarkers-case-B3.t Fri Oct 12 11:33:30 2018 +0200 @@ -120,7 +120,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets f5bc6836db60 + new changesets f5bc6836db60 (1 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main
--- a/tests/test-exchange-obsmarkers-case-B5.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-exchange-obsmarkers-case-B5.t Fri Oct 12 11:33:30 2018 +0200 @@ -158,7 +158,7 @@ adding file changes added 3 changesets with 3 changes to 3 files 1 new obsolescence markers - new changesets 28b51eb45704:1d0f3cd25300 + new changesets 28b51eb45704:1d0f3cd25300 (3 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main
--- a/tests/test-exchange-obsmarkers-case-C2.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-exchange-obsmarkers-case-C2.t Fri Oct 12 11:33:30 2018 +0200 @@ -131,7 +131,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 2 new obsolescence markers - new changesets e5ea8f9c7314 + new changesets e5ea8f9c7314 (1 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main @@ -179,7 +179,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 2 new obsolescence markers - new changesets e5ea8f9c7314 + new changesets e5ea8f9c7314 (1 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main
--- a/tests/test-exchange-obsmarkers-case-D1.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-exchange-obsmarkers-case-D1.t Fri Oct 12 11:33:30 2018 +0200 @@ -128,7 +128,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 2 new obsolescence markers - new changesets e5ea8f9c7314 + new changesets e5ea8f9c7314 (1 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main @@ -176,7 +176,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 2 new obsolescence markers - new changesets e5ea8f9c7314 + new changesets e5ea8f9c7314 (1 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main
--- a/tests/test-exchange-obsmarkers-case-D4.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-exchange-obsmarkers-case-D4.t Fri Oct 12 11:33:30 2018 +0200 @@ -141,7 +141,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 2 new obsolescence markers - new changesets e5ea8f9c7314 + new changesets e5ea8f9c7314 (1 drafts) (run 'hg update' to get a working copy) ## post pull state # obstore: main
--- a/tests/test-obsolete.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-obsolete.t Fri Oct 12 11:33:30 2018 +0200 @@ -194,7 +194,7 @@ checking manifests crosschecking files in changesets and manifests checking files - 5 files, 5 changesets, 5 total revisions + checked 5 changesets with 5 changes to 5 files $ qlog -R ../other-new -r 'obsolete()' 2 - 0d3f46688ccc @@ -284,7 +284,7 @@ added 1 changesets with 1 changes to [12] files \(\+1 heads\) (re) 1 new obsolescence markers obsoleted 1 changesets - new changesets 909a0fb57e5d + new changesets 909a0fb57e5d (1 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) $ qlog -R ../other-new 6 @@ -377,7 +377,7 @@ added 1 changesets with 1 changes to [12] files \(\+1 heads\) (re) 1 new obsolescence markers obsoleted 1 changesets - new changesets 159dfc9fa5d3 + new changesets 159dfc9fa5d3 (1 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) $ hg up -q 7 # to check rollback update behavior
--- a/tests/test-options.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-options.t Fri Oct 12 11:33:30 2018 +0200 @@ -26,5 +26,4 @@ > EOF $ hg prune | head -n 2 hg: unknown command 'prune' - Mercurial Distributed SCM - + (use 'hg help' for a list of commands)
--- a/tests/test-prev-next.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-prev-next.t Fri Oct 12 11:33:30 2018 +0200 @@ -460,7 +460,8 @@ XXX: things are broken! $ hg prev --merge --config commands.update.check=abort - local [working copy] changed bar which other [destination] deleted + file 'bar' was deleted in other [destination] but was modified in local [working copy]. + What do you want to do? use (c)hanged version, (d)elete, or leave (u)nresolved? 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-pullbundle.t Fri Oct 12 11:33:30 2018 +0200 @@ -0,0 +1,1291 @@ + $ . "$TESTDIR/testlib/pythonpath.sh" + + $ cat << EOF >> $HGRCPATH + > [extensions] + > # evolve is providing the stable range code + > evolve= + > pullbundle= + > [experimental] + > obshashrange.warm-cache=yes + > EOF + +basic setup + + $ hg init server + $ hg -R server debugbuilddag '.+898:branchpoint+352:mergepoint+267<branchpoint+145/mergepoint+467' + $ hg init client + $ hg init client2 + $ hg init client3 + $ hg init client4 + +simple initial pull +------------------- + + $ hg -R server log -G -T '{rev}:{node}\n' -r '0+1234+(::1234 and (merge() or branchpoint()))' + o 1234:f864bc82f6a2f2ecb49b83722e0895f9d657b0dd + : + o 898:1388f909cd2b0685efd4e2ce076d198bce20922c + : + o 0:1ea73414a91b0920940797d8fc6a11e447f8ea1e + + + $ hg -R client pull server -r 1234 --debug --config devel.bundle2.debug=yes | grep -v 'add changeset' + pulling from server + query 1; heads + pullbundle-cache: "missing" set sliced into 6 subranges in *.* seconds (glob) + 1024 changesets found + 128 changesets found + 64 changesets found + 16 changesets found + 2 changesets found + 1 changesets found + listing keys for "bookmarks" + bundle2-output-bundle: "HG20", 9 parts total + bundle2-output: start emission of HG20 stream + bundle2-output: bundle parameter: + bundle2-output: start of parts + bundle2-output: bundle part: "changegroup" + bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload + bundle2-output: part 0: "CHANGEGROUP" + bundle2-output: header chunk size: 44 + bundle2-output: payload chunk size: 32768 + bundle2-output: payload chunk size: 32768 + bundle2-output: payload chunk size: 32768 + bundle2-output: payload chunk size: 32768 + bundle2-output: payload chunk size: 32768 + bundle2-output: payload chunk size: 22368 + bundle2-output: closing payload chunk + bundle2-output: bundle part: "changegroup" + bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload + bundle2-output: part 1: "CHANGEGROUP" + bundle2-output: header chunk size: 43 + bundle2-output: payload chunk size: 23564 + bundle2-output: closing payload chunk + bundle2-output: bundle part: "changegroup" + bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload + bundle2-output: part 2: "CHANGEGROUP" + bundle2-output: header chunk size: 42 + bundle2-output: payload chunk size: 11788 + bundle2-output: closing payload chunk + bundle2-output: bundle part: "changegroup" + bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload + bundle2-output: part 3: "CHANGEGROUP" + bundle2-output: header chunk size: 42 + bundle2-output: payload chunk size: 2956 + bundle2-output: closing payload chunk + bundle2-output: bundle part: "changegroup" + bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload + bundle2-output: part 4: "CHANGEGROUP" + bundle2-output: header chunk size: 41 + bundle2-output: payload chunk size: 380 + bundle2-output: closing payload chunk + bundle2-output: bundle part: "changegroup" + bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload + bundle2-output: part 5: "CHANGEGROUP" + bundle2-output: header chunk size: 41 + bundle2-output: payload chunk size: 196 + bundle2-output: closing payload chunk + bundle2-output: bundle part: "listkeys" + bundle2-output-part: "listkeys" (params: 1 mandatory) empty payload + bundle2-output: part 6: "LISTKEYS" + bundle2-output: header chunk size: 35 + bundle2-output: closing payload chunk + bundle2-output: bundle part: "phase-heads" + bundle2-output-part: "phase-heads" 24 bytes payload + bundle2-output: part 7: "PHASE-HEADS" + bundle2-output: header chunk size: 18 + bundle2-output: payload chunk size: 24 + bundle2-output: closing payload chunk + bundle2-output: bundle part: "cache:rev-branch-cache" + bundle2-output-part: "cache:rev-branch-cache" (advisory) streamed payload + bundle2-output: part 8: "cache:rev-branch-cache" + bundle2-output: header chunk size: 29 + bundle2-output: payload chunk size: 24719 + bundle2-output: closing payload chunk + bundle2-output: end of bundle + bundle2-input: start processing of HG20 stream + bundle2-input: reading bundle2 stream parameters + bundle2-input-bundle: with-transaction + bundle2-input: start extraction of bundle2 parts + bundle2-input: part header size: 44 + bundle2-input: part type: "CHANGEGROUP" + bundle2-input: part id: "0" + bundle2-input: part parameters: 2 + bundle2-input: found a handler for part changegroup + bundle2-input-part: "changegroup" (params: 1 mandatory 1 advisory) supported + adding changesets + bundle2-input: payload chunk size: 32768 + bundle2-input: payload chunk size: 32768 + bundle2-input: payload chunk size: 32768 + bundle2-input: payload chunk size: 32768 + bundle2-input: payload chunk size: 32768 + bundle2-input: payload chunk size: 22368 + bundle2-input: payload chunk size: 0 + adding manifests + adding file changes + added 1024 changesets with 0 changes to 0 files + bundle2-input-part: total payload size 186208 + bundle2-input: part header size: 43 + bundle2-input: part type: "CHANGEGROUP" + bundle2-input: part id: "1" + bundle2-input: part parameters: 2 + bundle2-input: found a handler for part changegroup + bundle2-input-part: "changegroup" (params: 1 mandatory 1 advisory) supported + adding changesets + bundle2-input: payload chunk size: 23564 + bundle2-input: payload chunk size: 0 + adding manifests + adding file changes + added 128 changesets with 0 changes to 0 files + bundle2-input-part: total payload size 23564 + bundle2-input: part header size: 42 + bundle2-input: part type: "CHANGEGROUP" + bundle2-input: part id: "2" + bundle2-input: part parameters: 2 + bundle2-input: found a handler for part changegroup + bundle2-input-part: "changegroup" (params: 1 mandatory 1 advisory) supported + adding changesets + bundle2-input: payload chunk size: 11788 + bundle2-input: payload chunk size: 0 + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + bundle2-input-part: total payload size 11788 + bundle2-input: part header size: 42 + bundle2-input: part type: "CHANGEGROUP" + bundle2-input: part id: "3" + bundle2-input: part parameters: 2 + bundle2-input: found a handler for part changegroup + bundle2-input-part: "changegroup" (params: 1 mandatory 1 advisory) supported + adding changesets + bundle2-input: payload chunk size: 2956 + bundle2-input: payload chunk size: 0 + adding manifests + adding file changes + added 16 changesets with 0 changes to 0 files + bundle2-input-part: total payload size 2956 + bundle2-input: part header size: 41 + bundle2-input: part type: "CHANGEGROUP" + bundle2-input: part id: "4" + bundle2-input: part parameters: 2 + bundle2-input: found a handler for part changegroup + bundle2-input-part: "changegroup" (params: 1 mandatory 1 advisory) supported + adding changesets + bundle2-input: payload chunk size: 380 + bundle2-input: payload chunk size: 0 + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + bundle2-input-part: total payload size 380 + bundle2-input: part header size: 41 + bundle2-input: part type: "CHANGEGROUP" + bundle2-input: part id: "5" + bundle2-input: part parameters: 2 + bundle2-input: found a handler for part changegroup + bundle2-input-part: "changegroup" (params: 1 mandatory 1 advisory) supported + adding changesets + bundle2-input: payload chunk size: 196 + bundle2-input: payload chunk size: 0 + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files + bundle2-input-part: total payload size 196 + bundle2-input: part header size: 35 + bundle2-input: part type: "LISTKEYS" + bundle2-input: part id: "6" + bundle2-input: part parameters: 1 + bundle2-input: found a handler for part listkeys + bundle2-input-part: "listkeys" (params: 1 mandatory) supported + bundle2-input: payload chunk size: 0 + bundle2-input: part header size: 18 + bundle2-input: part type: "PHASE-HEADS" + bundle2-input: part id: "7" + bundle2-input: part parameters: 0 + bundle2-input: found a handler for part phase-heads + bundle2-input-part: "phase-heads" supported + bundle2-input: payload chunk size: 24 + bundle2-input: payload chunk size: 0 + bundle2-input-part: total payload size 24 + bundle2-input: part header size: 29 + bundle2-input: part type: "cache:rev-branch-cache" + bundle2-input: part id: "8" + bundle2-input: part parameters: 0 + bundle2-input: found a handler for part cache:rev-branch-cache + bundle2-input-part: "cache:rev-branch-cache" (advisory) supported + bundle2-input: payload chunk size: 24719 + bundle2-input: payload chunk size: 0 + bundle2-input-part: total payload size 24719 + bundle2-input: part header size: 0 + bundle2-input: end of bundle2 stream + bundle2-input-bundle: 8 parts total + checking for updated bookmarks + updating the branch cache + new changesets 1ea73414a91b:f864bc82f6a2 + (run 'hg update' to get a working copy) + + $ touch oldbundles + $ ls -1 server/.hg/cache/pullbundles > newbundles + $ diff -u oldbundles newbundles + --- oldbundles * (glob) + +++ newbundles * (glob) + @@ -0,0 +1,6 @@ + +02-467b6e370e816747e27de0d0b9237f4090a33656-0000001152skip-0000000064size.hg + +02-540f762640ee62ca597ece26af725e6357e82805-0000000000skip-0000001024size.hg + +02-63ded94ceab180ac2fa13e1f0beeb4d2265998a3-0000001232skip-0000000002size.hg + +02-7f3a79522d6e904d52aea07c71e6cb612667e8f4-0000001216skip-0000000016size.hg + +02-ee2deecf044fa5583f66188c9177b0f13332adc2-0000001024skip-0000000128size.hg + +02-f864bc82f6a2f2ecb49b83722e0895f9d657b0dd-0000001234skip-0000000001size.hg + [1] + +pull the other missing entries (multiple heads pulled) +------------------------------------------------------ + + $ hg -R server log -G -T '{rev}:{node}\n' -r '1234+head()+(only(head(), 1234) and (merge() or branchpoint()))' + o 2130:0f376356904fc8c1c6ceaac27990f2fd79b1f8c1 + : + o 1663:1710092b3ab17a6d2ecad664580991a608537749 + |\ + | ~ + | o 1517:1dded5aafa0f8d548f6357cc2f8882dcc4489fbf + |/ + o 1250:d83212ecaa436c80d6113cf915ba35e2db787e79 + : + o 1234:f864bc82f6a2f2ecb49b83722e0895f9d657b0dd + | + ~ + $ hg -R client pull server --verbose + pulling from server + searching for changes + all local heads known remotely + pullbundle-cache: "missing" set sliced into 18 subranges in *.* seconds (glob) + 1 changesets found + 4 changesets found + 8 changesets found + 32 changesets found + 128 changesets found + 64 changesets found + 32 changesets found + 8 changesets found + 4 changesets found + 2 changesets found + 1 changesets found + 4 changesets found + 8 changesets found + 16 changesets found + 256 changesets found + 256 changesets found + 64 changesets found + 8 changesets found + uncompressed size of bundle content: + 188 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 740 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 1476 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 5892 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 23556 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 11780 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 5892 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 1476 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 740 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 372 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 188 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 740 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 1476 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 2948 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 47108 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 47108 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 11780 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 1476 (changelog) + 4 (manifests) + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 32 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 128 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 32 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files (+1 heads) + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 16 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + new changesets 17185c1c22f1:0f376356904f + (run 'hg heads' to see heads, 'hg merge' to merge) + + $ mv newbundles oldbundles + $ ls -1 server/.hg/cache/pullbundles > newbundles + $ diff -u oldbundles newbundles + --- oldbundles * (glob) + +++ newbundles * (glob) + @@ -1,6 +1,24 @@ + +02-0f376356904fc8c1c6ceaac27990f2fd79b1f8c1-0000001856skip-0000000008size.hg + +02-17185c1c22f1266b084daf7cfb07b6ebbfbc65ab-0000001235skip-0000000001size.hg + +02-1dded5aafa0f8d548f6357cc2f8882dcc4489fbf-0000001516skip-0000000002size.hg + +02-2dc4f1ab9029719714b8e0dde8e3725a5bb28472-0000001408skip-0000000064size.hg + +02-2f0e261a08964bc1c607c0eda4978364c22a9b94-0000001504skip-0000000008size.hg + 02-467b6e370e816747e27de0d0b9237f4090a33656-0000001152skip-0000000064size.hg + +02-484c46df3e41f371efd0ff74fa5221657527213f-0000001240skip-0000000008size.hg + +02-4a6d0f7d07d060b026d9fc690cd89cd26af96e42-0000001248skip-0000000032size.hg + 02-540f762640ee62ca597ece26af725e6357e82805-0000000000skip-0000001024size.hg + 02-63ded94ceab180ac2fa13e1f0beeb4d2265998a3-0000001232skip-0000000002size.hg + +02-694ef7e5b2984f1ec66c3d960799f4ff2459672c-0000001236skip-0000000004size.hg + 02-7f3a79522d6e904d52aea07c71e6cb612667e8f4-0000001216skip-0000000016size.hg + +02-89fab188d2ce3c4cde6be031f2fc5b9b4ff248e3-0000000900skip-0000000004size.hg + +02-97ede4832194ed56894374f2a1cc7a0022b486da-0000000904skip-0000000008size.hg + +02-b2d350c94c26edbb783aaa21fc24f1fc65c30e74-0000001536skip-0000000256size.hg + +02-bbd293bd171fd5b711d428db46940a72eca7a40f-0000001280skip-0000000128size.hg + +02-c72277ff25807eb444fa48a60afb434d78c21f2f-0000000899skip-0000000001size.hg + +02-da87a81c5310760f414a933e6550b7e8e60cf241-0000001792skip-0000000064size.hg + +02-dba2fddbf3c28198659046674a512afd616a1519-0000001472skip-0000000032size.hg + +02-e469a7aa5cce57653b6b02ff46c80b2d94d62629-0000000912skip-0000000016size.hg + +02-e74670ea99533967c5d90da3ddbc0318cc1fd502-0000001280skip-0000000256size.hg + 02-ee2deecf044fa5583f66188c9177b0f13332adc2-0000001024skip-0000000128size.hg + 02-f864bc82f6a2f2ecb49b83722e0895f9d657b0dd-0000001234skip-0000000001size.hg + +02-fb6c210a224903e81e5a8d2ee099cb0c9526ba8c-0000001512skip-0000000004size.hg + [1] + +Same Pullin with a different client +----------------------------------- + $ hg -R server log -G -T '{rev}:{node}\n' -r '0+1234+(::1234 and (merge() or branchpoint()))' + o 1234:f864bc82f6a2f2ecb49b83722e0895f9d657b0dd + : + o 898:1388f909cd2b0685efd4e2ce076d198bce20922c + : + o 0:1ea73414a91b0920940797d8fc6a11e447f8ea1e + + + $ hg -R client2 pull server -r 1234 --verbose + pulling from server + pullbundle-cache: "missing" set sliced into 6 subranges in *.* seconds (glob) + 1024 changesets found in caches + 128 changesets found in caches + 64 changesets found in caches + 16 changesets found in caches + 2 changesets found in caches + 1 changesets found in caches + adding changesets + adding manifests + adding file changes + added 1024 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 128 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 16 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files + new changesets 1ea73414a91b:f864bc82f6a2 + (run 'hg update' to get a working copy) + + $ mv newbundles oldbundles + $ ls -1 server/.hg/cache/pullbundles > newbundles + $ diff -u oldbundles newbundles + + $ hg -R server log -G -T '{rev}:{node}\n' -r '1234+head()+(only(head(), 1234) and (merge() or branchpoint()))' + o 2130:0f376356904fc8c1c6ceaac27990f2fd79b1f8c1 + : + o 1663:1710092b3ab17a6d2ecad664580991a608537749 + |\ + | ~ + | o 1517:1dded5aafa0f8d548f6357cc2f8882dcc4489fbf + |/ + o 1250:d83212ecaa436c80d6113cf915ba35e2db787e79 + : + o 1234:f864bc82f6a2f2ecb49b83722e0895f9d657b0dd + | + ~ + + $ hg -R client2 pull server --verbose + pulling from server + searching for changes + all local heads known remotely + pullbundle-cache: "missing" set sliced into 18 subranges in *.* seconds (glob) + 1 changesets found in caches + 4 changesets found in caches + 8 changesets found in caches + 32 changesets found in caches + 128 changesets found in caches + 64 changesets found in caches + 32 changesets found in caches + 8 changesets found in caches + 4 changesets found in caches + 2 changesets found in caches + 1 changesets found in caches + 4 changesets found in caches + 8 changesets found in caches + 16 changesets found in caches + 256 changesets found in caches + 256 changesets found in caches + 64 changesets found in caches + 8 changesets found in caches + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 32 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 128 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 32 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files (+1 heads) + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 16 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + new changesets 17185c1c22f1:0f376356904f + (run 'hg heads' to see heads, 'hg merge' to merge) + + $ mv newbundles oldbundles + $ ls -1 server/.hg/cache/pullbundles > newbundles + $ diff -u oldbundles newbundles + +different pull with a different client +-------------------------------------- + + $ hg -R server log -G -T '{rev}:{node}\n' -r '87232049c8d1+0+1789+(::1789 and (merge() or branchpoint()))' + o 2085:87232049c8d1f413105bf813b6bfc21da3e26a4f + : + o 1789:44e80141ad530a2aa085e9bd9b5311b57eff72ff + : + o 1663:1710092b3ab17a6d2ecad664580991a608537749 + |\ + o : 1250:d83212ecaa436c80d6113cf915ba35e2db787e79 + :/ + o 898:1388f909cd2b0685efd4e2ce076d198bce20922c + : + o 0:1ea73414a91b0920940797d8fc6a11e447f8ea1e + + + $ hg -R client3 pull server -r 1789 --verbose + pulling from server + pullbundle-cache: "missing" set sliced into 9 subranges in *.* seconds (glob) + 1024 changesets found in caches + 227 changesets found + 29 changesets found + 128 changesets found + 64 changesets found + 32 changesets found + 16 changesets found + 2 changesets found + 1 changesets found + uncompressed size of bundle content: + 41772 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 5340 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 23556 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 11780 (changelog) + 4 (manifests) + adding changesets + adding manifests + adding file changes + added 1024 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 227 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 29 changesets with 0 changes to 0 files (+1 heads) + adding changesets + adding manifests + adding file changes + added 128 changesets with 0 changes to 0 files (-1 heads) + adding changesets + uncompressed size of bundle content: + 5892 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 2948 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 372 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 188 (changelog) + 4 (manifests) + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 32 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 16 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files + new changesets 1ea73414a91b:44e80141ad53 + (run 'hg update' to get a working copy) + + $ mv newbundles oldbundles + $ ls -1 server/.hg/cache/pullbundles > newbundles + $ diff -u oldbundles newbundles + --- oldbundles * (glob) + +++ newbundles * (glob) + @@ -3,20 +3,28 @@ + 02-1dded5aafa0f8d548f6357cc2f8882dcc4489fbf-0000001516skip-0000000002size.hg + 02-2dc4f1ab9029719714b8e0dde8e3725a5bb28472-0000001408skip-0000000064size.hg + 02-2f0e261a08964bc1c607c0eda4978364c22a9b94-0000001504skip-0000000008size.hg + +02-44e80141ad530a2aa085e9bd9b5311b57eff72ff-0000001522skip-0000000001size.hg + 02-467b6e370e816747e27de0d0b9237f4090a33656-0000001152skip-0000000064size.hg + 02-484c46df3e41f371efd0ff74fa5221657527213f-0000001240skip-0000000008size.hg + 02-4a6d0f7d07d060b026d9fc690cd89cd26af96e42-0000001248skip-0000000032size.hg + 02-540f762640ee62ca597ece26af725e6357e82805-0000000000skip-0000001024size.hg + +02-59e60b258b18cde1e931cf30ce4ae62b49e37abd-0000001520skip-0000000002size.hg + 02-63ded94ceab180ac2fa13e1f0beeb4d2265998a3-0000001232skip-0000000002size.hg + 02-694ef7e5b2984f1ec66c3d960799f4ff2459672c-0000001236skip-0000000004size.hg + +02-7a55a4d5ce324910842c893b56173cf2a847cb9d-0000001472skip-0000000032size.hg + 02-7f3a79522d6e904d52aea07c71e6cb612667e8f4-0000001216skip-0000000016size.hg + 02-89fab188d2ce3c4cde6be031f2fc5b9b4ff248e3-0000000900skip-0000000004size.hg + 02-97ede4832194ed56894374f2a1cc7a0022b486da-0000000904skip-0000000008size.hg + +02-a4ab7df9d74053fb819c8a1c6a48ad605cc05f8a-0000001504skip-0000000016size.hg + 02-b2d350c94c26edbb783aaa21fc24f1fc65c30e74-0000001536skip-0000000256size.hg + 02-bbd293bd171fd5b711d428db46940a72eca7a40f-0000001280skip-0000000128size.hg + +02-c12927fef661d2463043347101b90067c2961333-0000001280skip-0000000128size.hg + 02-c72277ff25807eb444fa48a60afb434d78c21f2f-0000000899skip-0000000001size.hg + +02-d83212ecaa436c80d6113cf915ba35e2db787e79-0000001024skip-0000000227size.hg + 02-da87a81c5310760f414a933e6550b7e8e60cf241-0000001792skip-0000000064size.hg + 02-dba2fddbf3c28198659046674a512afd616a1519-0000001472skip-0000000032size.hg + +02-dc714c3a5d080165292ba99b097567d0b95e5756-0000001408skip-0000000064size.hg + +02-e469a7aa5cce57653b6b02ff46c80b2d94d62629-0000000899skip-0000000029size.hg + 02-e469a7aa5cce57653b6b02ff46c80b2d94d62629-0000000912skip-0000000016size.hg + 02-e74670ea99533967c5d90da3ddbc0318cc1fd502-0000001280skip-0000000256size.hg + 02-ee2deecf044fa5583f66188c9177b0f13332adc2-0000001024skip-0000000128size.hg + [1] + + $ hg -R server log -G -T '{rev}:{node}\n' -r '1789+head()+parents(roots(only(head(), 1789)))+(only(head(), 1789) and (merge() or branchpoint()))' + o 2130:0f376356904fc8c1c6ceaac27990f2fd79b1f8c1 + : + o 1789:44e80141ad530a2aa085e9bd9b5311b57eff72ff + : + : o 1517:1dded5aafa0f8d548f6357cc2f8882dcc4489fbf + :/ + o 1250:d83212ecaa436c80d6113cf915ba35e2db787e79 + | + ~ + + $ hg -R client3 pull server --verbose + pulling from server + searching for changes + all local heads known remotely + pullbundle-cache: "missing" set sliced into 16 subranges in *.* seconds (glob) + 1 changesets found + 4 changesets found + 8 changesets found + 16 changesets found + 128 changesets found in caches + 64 changesets found in caches + 32 changesets found in caches + 8 changesets found in caches + 4 changesets found in caches + 2 changesets found in caches + 1 changesets found + 4 changesets found + 8 changesets found + 256 changesets found in caches + 64 changesets found in caches + 8 changesets found in caches + uncompressed size of bundle content: + 188 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 740 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 1476 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 2948 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 188 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 740 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 1476 (changelog) + 4 (manifests) + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files (+1 heads) + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 16 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 128 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 32 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + new changesets d1807e351389:0f376356904f + (run 'hg heads' to see heads, 'hg merge' to merge) + + $ mv newbundles oldbundles + $ ls -1 server/.hg/cache/pullbundles > newbundles + $ diff -u oldbundles newbundles + --- oldbundles * (glob) + +++ newbundles * (glob) + @@ -1,14 +1,17 @@ + 02-0f376356904fc8c1c6ceaac27990f2fd79b1f8c1-0000001856skip-0000000008size.hg + 02-17185c1c22f1266b084daf7cfb07b6ebbfbc65ab-0000001235skip-0000000001size.hg + 02-1dded5aafa0f8d548f6357cc2f8882dcc4489fbf-0000001516skip-0000000002size.hg + +02-1ed78f99f705cb819a02f1227c217728d008e461-0000001524skip-0000000004size.hg + 02-2dc4f1ab9029719714b8e0dde8e3725a5bb28472-0000001408skip-0000000064size.hg + 02-2f0e261a08964bc1c607c0eda4978364c22a9b94-0000001504skip-0000000008size.hg + 02-44e80141ad530a2aa085e9bd9b5311b57eff72ff-0000001522skip-0000000001size.hg + 02-467b6e370e816747e27de0d0b9237f4090a33656-0000001152skip-0000000064size.hg + 02-484c46df3e41f371efd0ff74fa5221657527213f-0000001240skip-0000000008size.hg + 02-4a6d0f7d07d060b026d9fc690cd89cd26af96e42-0000001248skip-0000000032size.hg + +02-4a6d0f7d07d060b026d9fc690cd89cd26af96e42-0000001264skip-0000000016size.hg + 02-540f762640ee62ca597ece26af725e6357e82805-0000000000skip-0000001024size.hg + 02-59e60b258b18cde1e931cf30ce4ae62b49e37abd-0000001520skip-0000000002size.hg + +02-5eaa75df73c454c1afff722301a4c73e897de94d-0000001256skip-0000000008size.hg + 02-63ded94ceab180ac2fa13e1f0beeb4d2265998a3-0000001232skip-0000000002size.hg + 02-694ef7e5b2984f1ec66c3d960799f4ff2459672c-0000001236skip-0000000004size.hg + 02-7a55a4d5ce324910842c893b56173cf2a847cb9d-0000001472skip-0000000032size.hg + @@ -19,7 +22,10 @@ + 02-b2d350c94c26edbb783aaa21fc24f1fc65c30e74-0000001536skip-0000000256size.hg + 02-bbd293bd171fd5b711d428db46940a72eca7a40f-0000001280skip-0000000128size.hg + 02-c12927fef661d2463043347101b90067c2961333-0000001280skip-0000000128size.hg + +02-c232505f58fdf70bcf5f6ab6a555f23ffc74f761-0000001523skip-0000000001size.hg + 02-c72277ff25807eb444fa48a60afb434d78c21f2f-0000000899skip-0000000001size.hg + +02-ca970a853ea24846035ccb324cc8de49ef768748-0000001252skip-0000000004size.hg + +02-d1807e3513890ac71c2e8d10e9dc9a5b58b15d4b-0000001251skip-0000000001size.hg + 02-d83212ecaa436c80d6113cf915ba35e2db787e79-0000001024skip-0000000227size.hg + 02-da87a81c5310760f414a933e6550b7e8e60cf241-0000001792skip-0000000064size.hg + 02-dba2fddbf3c28198659046674a512afd616a1519-0000001472skip-0000000032size.hg + @@ -27,6 +33,7 @@ + 02-e469a7aa5cce57653b6b02ff46c80b2d94d62629-0000000899skip-0000000029size.hg + 02-e469a7aa5cce57653b6b02ff46c80b2d94d62629-0000000912skip-0000000016size.hg + 02-e74670ea99533967c5d90da3ddbc0318cc1fd502-0000001280skip-0000000256size.hg + +02-e74670ea99533967c5d90da3ddbc0318cc1fd502-0000001528skip-0000000008size.hg + 02-ee2deecf044fa5583f66188c9177b0f13332adc2-0000001024skip-0000000128size.hg + 02-f864bc82f6a2f2ecb49b83722e0895f9d657b0dd-0000001234skip-0000000001size.hg + 02-fb6c210a224903e81e5a8d2ee099cb0c9526ba8c-0000001512skip-0000000004size.hg + [1] + +Single pull coming after various cache warming +---------------------------------------------- + + $ hg -R client4 pull --verbose server | grep -v 'add changeset' + pulling from server + requesting all changes + pullbundle-cache: "missing" set sliced into 16 subranges in *.* seconds (glob) + 1024 changesets found in caches + 256 changesets found + 128 changesets found in caches + 64 changesets found in caches + 32 changesets found in caches + 8 changesets found in caches + 4 changesets found in caches + 2 changesets found in caches + 1 changesets found in caches + 4 changesets found in caches + 8 changesets found in caches + 16 changesets found in caches + 256 changesets found in caches + 256 changesets found in caches + 64 changesets found in caches + 8 changesets found in caches + uncompressed size of bundle content: + 47108 (changelog) + 4 (manifests) + adding changesets + adding manifests + adding file changes + added 1024 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 128 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 32 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files (+1 heads) + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 16 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + new changesets 1ea73414a91b:0f376356904f + (run 'hg heads' to see heads, 'hg merge' to merge) + + $ mv newbundles oldbundles + $ ls -1 server/.hg/cache/pullbundles > newbundles + $ diff -u oldbundles newbundles + --- oldbundles * (glob) + +++ newbundles * (glob) + @@ -7,6 +7,7 @@ + 02-44e80141ad530a2aa085e9bd9b5311b57eff72ff-0000001522skip-0000000001size.hg + 02-467b6e370e816747e27de0d0b9237f4090a33656-0000001152skip-0000000064size.hg + 02-484c46df3e41f371efd0ff74fa5221657527213f-0000001240skip-0000000008size.hg + +02-4a6d0f7d07d060b026d9fc690cd89cd26af96e42-0000001024skip-0000000256size.hg + 02-4a6d0f7d07d060b026d9fc690cd89cd26af96e42-0000001248skip-0000000032size.hg + 02-4a6d0f7d07d060b026d9fc690cd89cd26af96e42-0000001264skip-0000000016size.hg + 02-540f762640ee62ca597ece26af725e6357e82805-0000000000skip-0000001024size.hg + [1] + +Pull with piece "not linear from head" +-------------------------------------- + + $ hg -R server log -G -T '{rev}:{node}\n' -r 'branchpoint() + merge() + head() + children(branchpoint())' + o 2130:0f376356904fc8c1c6ceaac27990f2fd79b1f8c1 + : + o 1663:1710092b3ab17a6d2ecad664580991a608537749 + |\ + | o 1518:c72277ff25807eb444fa48a60afb434d78c21f2f + | | + | | o 1517:1dded5aafa0f8d548f6357cc2f8882dcc4489fbf + | | : + +---o 1251:d1807e3513890ac71c2e8d10e9dc9a5b58b15d4b + | | + o | 1250:d83212ecaa436c80d6113cf915ba35e2db787e79 + : | + o | 899:c31a4e0cc28d677b8020e46aa3bb2fd5ee5b1a06 + |/ + o 898:1388f909cd2b0685efd4e2ce076d198bce20922c + | + ~ + + $ hg init test-local-missing + $ hg -R test-local-missing pull server --rev 899 --rev 1518 --verbose + pulling from server + pullbundle-cache: "missing" set sliced into 5 subranges in *.* seconds (glob) + 512 changesets found + 256 changesets found + 128 changesets found + 4 changesets found + 1 changesets found + uncompressed size of bundle content: + 92968 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 46596 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 23300 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 734 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 186 (changelog) + 4 (manifests) + adding changesets + adding manifests + adding file changes + added 512 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 128 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files (+1 heads) + new changesets 1ea73414a91b:c31a4e0cc28d + (run 'hg heads' to see heads, 'hg merge' to merge) + $ hg -R test-local-missing pull server --verbose + pulling from server + searching for changes + all local heads known remotely + pullbundle-cache: "missing" set sliced into 19 subranges in *.* seconds (glob) + 4 changesets found + 8 changesets found + 16 changesets found + 32 changesets found + 64 changesets found + 256 changesets found in caches + 128 changesets found in caches + 64 changesets found in caches + 32 changesets found in caches + 8 changesets found in caches + 4 changesets found in caches + 2 changesets found in caches + 4 changesets found in caches + 8 changesets found in caches + 16 changesets found in caches + 256 changesets found in caches + 256 changesets found in caches + 64 changesets found in caches + 8 changesets found in caches + uncompressed size of bundle content: + 732 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 1460 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 2916 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 5828 (changelog) + 4 (manifests) + uncompressed size of bundle content: + 11700 (changelog) + 4 (manifests) + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 16 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 32 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 128 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 32 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 16 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + new changesets e600b80a2fc8:0f376356904f + (run 'hg update' to get a working copy) + +Test cache setting +================== + +cache directory +--------------- + + $ mkdir bundle-cache + $ cat << EOF >> $HGRCPATH + > [pullbundle] + > cache-directory=$TESTTMP/bundle-cache + > EOF + + $ hg clone --pull server other-cache-directory + requesting all changes + pullbundle-cache: "missing" set sliced into 16 subranges in *.* seconds (glob) + adding changesets + adding manifests + adding file changes + added 1024 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 128 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 32 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files (+1 heads) + adding changesets + adding manifests + adding file changes + added 4 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 16 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 256 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 64 changesets with 0 changes to 0 files + adding changesets + adding manifests + adding file changes + added 8 changesets with 0 changes to 0 files + new changesets 1ea73414a91b:0f376356904f + updating to branch default + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ ls -1 bundle-cache + 02-0f376356904fc8c1c6ceaac27990f2fd79b1f8c1-0000001856skip-0000000008size.hg + 02-1dded5aafa0f8d548f6357cc2f8882dcc4489fbf-0000001516skip-0000000002size.hg + 02-2dc4f1ab9029719714b8e0dde8e3725a5bb28472-0000001408skip-0000000064size.hg + 02-2f0e261a08964bc1c607c0eda4978364c22a9b94-0000001504skip-0000000008size.hg + 02-4a6d0f7d07d060b026d9fc690cd89cd26af96e42-0000001024skip-0000000256size.hg + 02-540f762640ee62ca597ece26af725e6357e82805-0000000000skip-0000001024size.hg + 02-89fab188d2ce3c4cde6be031f2fc5b9b4ff248e3-0000000900skip-0000000004size.hg + 02-97ede4832194ed56894374f2a1cc7a0022b486da-0000000904skip-0000000008size.hg + 02-b2d350c94c26edbb783aaa21fc24f1fc65c30e74-0000001536skip-0000000256size.hg + 02-bbd293bd171fd5b711d428db46940a72eca7a40f-0000001280skip-0000000128size.hg + 02-c72277ff25807eb444fa48a60afb434d78c21f2f-0000000899skip-0000000001size.hg + 02-da87a81c5310760f414a933e6550b7e8e60cf241-0000001792skip-0000000064size.hg + 02-dba2fddbf3c28198659046674a512afd616a1519-0000001472skip-0000000032size.hg + 02-e469a7aa5cce57653b6b02ff46c80b2d94d62629-0000000912skip-0000000016size.hg + 02-e74670ea99533967c5d90da3ddbc0318cc1fd502-0000001280skip-0000000256size.hg + 02-fb6c210a224903e81e5a8d2ee099cb0c9526ba8c-0000001512skip-0000000004size.hg
--- a/tests/test-push-checkheads-partial-C1.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-partial-C1.t Fri Oct 12 11:33:30 2018 +0200 @@ -51,7 +51,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-partial-C2.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-partial-C2.t Fri Oct 12 11:33:30 2018 +0200 @@ -53,7 +53,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-partial-C3.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-partial-C3.t Fri Oct 12 11:33:30 2018 +0200 @@ -53,7 +53,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-partial-C4.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-partial-C4.t Fri Oct 12 11:33:30 2018 +0200 @@ -53,7 +53,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-pruned-B2.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-pruned-B2.t Fri Oct 12 11:33:30 2018 +0200 @@ -53,7 +53,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-pruned-B3.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-pruned-B3.t Fri Oct 12 11:33:30 2018 +0200 @@ -53,7 +53,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-pruned-B4.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-pruned-B4.t Fri Oct 12 11:33:30 2018 +0200 @@ -54,7 +54,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-pruned-B5.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-pruned-B5.t Fri Oct 12 11:33:30 2018 +0200 @@ -57,7 +57,7 @@ adding manifests adding file changes added 2 changesets with 2 changes to 2 files - new changesets d73caddc5533:821fb21d0dd2 + new changesets d73caddc5533:821fb21d0dd2 (2 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-pruned-B8.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-pruned-B8.t Fri Oct 12 11:33:30 2018 +0200 @@ -55,7 +55,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-superceed-A2.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-superceed-A2.t Fri Oct 12 11:33:30 2018 +0200 @@ -52,7 +52,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-superceed-A3.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-superceed-A3.t Fri Oct 12 11:33:30 2018 +0200 @@ -55,7 +55,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-superceed-A6.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-superceed-A6.t Fri Oct 12 11:33:30 2018 +0200 @@ -59,7 +59,7 @@ adding manifests adding file changes added 2 changesets with 2 changes to 2 files (+1 heads) - new changesets d73caddc5533:0f88766e02d6 + new changesets d73caddc5533:0f88766e02d6 (2 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-superceed-A7.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-superceed-A7.t Fri Oct 12 11:33:30 2018 +0200 @@ -59,7 +59,7 @@ adding manifests adding file changes added 2 changesets with 2 changes to 2 files (+1 heads) - new changesets d73caddc5533:0f88766e02d6 + new changesets d73caddc5533:0f88766e02d6 (2 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) $ hg up 'desc(C0)' 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-unpushed-D2.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-unpushed-D2.t Fri Oct 12 11:33:30 2018 +0200 @@ -57,7 +57,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-unpushed-D3.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-unpushed-D3.t Fri Oct 12 11:33:30 2018 +0200 @@ -56,7 +56,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets d73caddc5533 + new changesets d73caddc5533 (1 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-unpushed-D4.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-unpushed-D4.t Fri Oct 12 11:33:30 2018 +0200 @@ -73,7 +73,7 @@ adding manifests adding file changes added 2 changesets with 2 changes to 2 files (+1 heads) - new changesets d73caddc5533:0f88766e02d6 + new changesets d73caddc5533:0f88766e02d6 (2 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-push-checkheads-unpushed-D5.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-push-checkheads-unpushed-D5.t Fri Oct 12 11:33:30 2018 +0200 @@ -62,7 +62,7 @@ adding manifests adding file changes added 2 changesets with 2 changes to 2 files (+1 heads) - new changesets d73caddc5533:0f88766e02d6 + new changesets d73caddc5533:0f88766e02d6 (2 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) $ hg up 'desc(C0)' 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-sharing.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-sharing.t Fri Oct 12 11:33:30 2018 +0200 @@ -88,7 +88,7 @@ added 1 changesets with 1 changes to 1 files (+1 heads) 1 new obsolescence markers obsoleted 1 changesets - new changesets 60ffde5765c5 + new changesets 60ffde5765c5 (1 drafts) 1 files updated, 0 files merged, 0 files removed, 0 files unresolved updated to "60ffde5765c5: fix bug 37" 1 other heads for branch "default" @@ -457,7 +457,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets 2fe6c4bd32d0 + new changesets 2fe6c4bd32d0 (1 drafts) 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo 'better fix (alice)' >> file1 $ hg amend -u alice -m 'fix bug 24 (v2 by alice)' @@ -486,7 +486,7 @@ added 1 changesets with 1 changes to 1 files (+1 heads) 1 new obsolescence markers 2 new content-divergent changesets - new changesets e3f99ce9d9cd + new changesets e3f99ce9d9cd (1 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) Figure SG09: multiple heads! divergence! oh my!
--- a/tests/test-split.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-split.t Fri Oct 12 11:33:30 2018 +0200 @@ -151,7 +151,6 @@ move:[5] split1 atop:[7] _cprim move:[6] split2 - atop:[8] split1 working directory is now at * (glob) $ hg log -r "desc(_cprim)" -v -p changeset: 7:b434287e665c @@ -219,7 +218,6 @@ move:[8] split1 atop:[11] split4 move:[9] split2 - atop:[12] split1 working directory is now at d74c6715e706 $ hg log -G @ changeset: 13:d74c6715e706
--- a/tests/test-topic-dest.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-topic-dest.t Fri Oct 12 11:33:30 2018 +0200 @@ -276,7 +276,7 @@ adding manifests adding file changes added 3 changesets with 3 changes to 3 files - new changesets 13ec05df14e1:6482f08916a5 + new changesets 13ec05df14e1:6482f08916a5 (3 drafts) updating to branch default 3 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd other @@ -290,7 +290,7 @@ adding manifests adding file changes added 3 changesets with 3 changes to 3 files (+1 heads) - new changesets 6f5edd7450bb:c9c03b99196b + new changesets 6f5edd7450bb:c9c03b99196b (3 drafts) rebasing 3:dbc48dd9e743 "c_other" $ hg log -G @ 7 () c_other
--- a/tests/test-topic-tutorial.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-topic-tutorial.t Fri Oct 12 11:33:30 2018 +0200 @@ -1845,7 +1845,7 @@ adding file changes added 4 changesets with 4 changes to 1 files (+1 heads) 8 new obsolescence markers - new changesets b7509bd417f8:2d084ac00115 + new changesets b7509bd417f8:2d084ac00115 (4 drafts) (run 'hg heads' to see heads) $ hg topics --verbose @@ -1889,7 +1889,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets 0d409663a1fd + new changesets 0d409663a1fd (1 drafts) (run 'hg update' to get a working copy) $ hg update
--- a/tests/test-topic.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-topic.t Fri Oct 12 11:33:30 2018 +0200 @@ -164,11 +164,12 @@ options ([+] can be repeated): - --clear clear active topic if any - -r --rev REV [+] revset of existing revisions - -l --list show the stack of changeset in the topic - --age show when you last touched the topics - --current display the current topic only + --clear clear active topic if any + -r --rev REV [+] revset of existing revisions + -l --list show the stack of changeset in the topic + --age show when you last touched the topics + --current display the current topic only + -T --template TEMPLATE display with template (some details hidden, use --verbose to show complete help) $ hg topics @@ -614,7 +615,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) - new changesets 0469d521db49 + new changesets 0469d521db49 (1 drafts) (run 'hg heads' to see heads) $ hg topics fran (1 changesets)
--- a/tests/test-tutorial.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-tutorial.t Fri Oct 12 11:33:30 2018 +0200 @@ -1070,7 +1070,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 1 new obsolescence markers - new changesets 4710c0968793 + new changesets 4710c0968793 (1 drafts) (run 'hg update' to get a working copy) $ hg log -G o 4710c0968793 (draft): bathroom stuff @@ -1212,7 +1212,7 @@ adding file changes added 1 changesets with 1 changes to 1 files 1 new orphan changesets - new changesets e4e4fa805d92 + new changesets e4e4fa805d92 (1 drafts) (run 'hg update' to get a working copy) The new changeset "animal" is based on an old changeset of "bathroom". You can @@ -1543,7 +1543,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files - new changesets fc41faf45288 + new changesets fc41faf45288 (1 drafts) (run 'hg update' to get a working copy) $ hg log -G o fc41faf45288 (draft): SPAM SPAM SPAM
--- a/tests/test-wireproto-bundle1.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-wireproto-bundle1.t Fri Oct 12 11:33:30 2018 +0200 @@ -50,7 +50,7 @@ adding manifests adding file changes added 2 changesets with 2 changes to 2 files - new changesets 8685c6d34325:4957bfdac07e + new changesets 8685c6d34325:4957bfdac07e (2 drafts) (run 'hg update' to get a working copy) $ hg push -R ../other pushing to ssh://user@dummy/server @@ -90,7 +90,7 @@ added 1 changesets with 1 changes to [12] files \(\+1 heads\) (re) 1 new obsolescence markers obsoleted 1 changesets - new changesets 9d1c114e7797 + new changesets 9d1c114e7797 (1 drafts) (run 'hg heads' to see heads) $ hg -R ../other pull pulling from ssh://user@dummy/server
--- a/tests/test-wireproto.t Thu Oct 11 13:38:38 2018 +0200 +++ b/tests/test-wireproto.t Fri Oct 12 11:33:30 2018 +0200 @@ -53,7 +53,7 @@ adding manifests adding file changes added 2 changesets with 2 changes to 2 files - new changesets 8685c6d34325:4957bfdac07e + new changesets 8685c6d34325:4957bfdac07e (2 drafts) (run 'hg update' to get a working copy) $ hg push -R ../other pushing to ssh://user@dummy/server @@ -95,7 +95,7 @@ obsmarker-exchange: 92 bytes received 1 new obsolescence markers obsoleted 1 changesets - new changesets 9d1c114e7797 + new changesets 9d1c114e7797 (1 drafts) (run 'hg heads' to see heads) $ hg -R ../other pull pulling from ssh://user@dummy/server @@ -128,7 +128,7 @@ added 1 changesets with 1 changes to 1 files obsmarker-exchange: 92 bytes received 1 new obsolescence markers - new changesets a5687ec59dd4 + new changesets a5687ec59dd4 (1 drafts) (run 'hg update' to get a working copy) some common hidden @@ -195,7 +195,7 @@ $ cat hg.pid >> $DAEMON_PIDS $ curl -s http://localhost:$HGPORT/?cmd=capabilities - _evoext_getbundle_obscommon _evoext_obshashrange_v1 batch branchmap bundle2=HG20%0Abookmarks%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Aobsmarkers%3DV0%2CV1%0Aphases%3Dheads%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps%0Arev-branch-cache changegroupsubset compression=*zlib getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (no-eol) (glob) + _evoext_getbundle_obscommon _evoext_obshashrange_v1 batch branchmap bundle2=HG20%0Abookmarks%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Aobsmarkers%3DV0%2CV1%0Aphases%3Dheads%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps%0Arev-branch-cache%0Astream%3Dv2 changegroupsubset compression=*zlib getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (no-eol) (glob) Check we cannot use pushkey for marker exchange anymore