[PATCH 01 of 11] bundle2: move function building obsmarker-part in the bundle2 module
Gregory Szorc
gregory.szorc at gmail.com
Sun May 28 14:53:39 EDT 2017
On Sun, May 28, 2017 at 9:32 AM, Pierre-Yves David <
pierre-yves.david at ens-lyon.org> wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at octobus.net>
> # Date 1494064548 -7200
> # Sat May 06 11:55:48 2017 +0200
> # Node ID b513db11cf13c11be714bfcd9ba8f6cf2d872c31
> # Parent f2116efd2c3abae0f99e2f610c2ff2feb237b628
> # EXP-Topic obsstrip
> # Available At https://www.mercurial-scm.org/
> repo/users/marmoute/mercurial/
> # hg pull https://www.mercurial-scm.org/
> repo/users/marmoute/mercurial/ -r b513db11cf13
> bundle2: move function building obsmarker-part in the bundle2 module
>
I queued parts 1 and 2.
I refactored the logic in buildobsmarkerspart() in part 1 to use early
return and avoid excessive indent.
I fixed some English in part 2.
>
> We move it next to similar part building functions. We will need it for the
> "writenewbundle" logic. This will allow us to easily include obsmarkers in
> on-disk bundle, a necessary step before having `hg strip` also operate on
> markers.
>
> (Yes, the bundle2 module was already too large, but there any many
> interdependencies between its components so it is non-trivial to split,
> this is
> a quest for another adventure.)
>
> diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py
> --- a/mercurial/bundle2.py
> +++ b/mercurial/bundle2.py
> @@ -1401,6 +1401,21 @@ def addparttagsfnodescache(repo, bundler
> if chunks:
> bundler.newpart('hgtagsfnodes', data=''.join(chunks))
>
> +def buildobsmarkerspart(bundler, markers):
> + """add an obsmarker part to the bundler with <markers>
> +
> + No part is created if markers is empty.
> + Raises ValueError if the bundler doesn't support any known obsmarker
> format.
> + """
> + if markers:
> + remoteversions = obsmarkersversion(bundler.capabilities)
> + version = obsolete.commonversion(remoteversions)
> + if version is None:
> + raise ValueError('bundler does not support common obsmarker
> format')
> + stream = obsolete.encodemarkers(markers, True, version=version)
> + return bundler.newpart('obsmarkers', data=stream)
> + return None
> +
> def writebundle(ui, cg, filename, bundletype, vfs=None, compression=None,
> compopts=None):
> """Write a bundle file and return its filename.
> diff --git a/mercurial/exchange.py b/mercurial/exchange.py
> --- a/mercurial/exchange.py
> +++ b/mercurial/exchange.py
> @@ -248,21 +248,6 @@ def getbundlespec(ui, fh):
> else:
> raise error.Abort(_('unknown bundle type: %s') % b)
>
> -def buildobsmarkerspart(bundler, markers):
> - """add an obsmarker part to the bundler with <markers>
> -
> - No part is created if markers is empty.
> - Raises ValueError if the bundler doesn't support any known obsmarker
> format.
> - """
> - if markers:
> - remoteversions = bundle2.obsmarkersversion(bundler.capabilities)
> - version = obsolete.commonversion(remoteversions)
> - if version is None:
> - raise ValueError('bundler does not support common obsmarker
> format')
> - stream = obsolete.encodemarkers(markers, True, version=version)
> - return bundler.newpart('obsmarkers', data=stream)
> - return None
> -
> def _computeoutgoing(repo, heads, common):
> """Computes which revs are outgoing given a set of common
> and a set of heads.
> @@ -822,7 +807,7 @@ def _pushb2obsmarkers(pushop, bundler):
> pushop.stepsdone.add('obsmarkers')
> if pushop.outobsmarkers:
> markers = sorted(pushop.outobsmarkers)
> - buildobsmarkerspart(bundler, markers)
> + bundle2.buildobsmarkerspart(bundler, markers)
>
> @b2partsgenerator('bookmarks')
> def _pushb2bookmarks(pushop, bundler):
> @@ -1648,7 +1633,7 @@ def _getbundleobsmarkerpart(bundler, rep
> subset = [c.node() for c in repo.set('::%ln', heads)]
> markers = repo.obsstore.relevantmarkers(subset)
> markers = sorted(markers)
> - buildobsmarkerspart(bundler, markers)
> + bundle2.buildobsmarkerspart(bundler, markers)
>
> @getbundle2partsgenerator('hgtagsfnodes')
> def _getbundletagsfnodes(bundler, repo, source, bundlecaps=None,
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20170528/2ab9dec6/attachment.html>
More information about the Mercurial-devel
mailing list