[PATCH 7 of 9 V6] exchange: getbundle `bookmarks` part generator

Pierre-Yves David pierre-yves.david at ens-lyon.org
Thu Oct 13 21:28:34 EDT 2016



On 10/11/2016 06:25 PM, Stanislau Hlebik wrote:
> # HG changeset patch
> # User Stanislau Hlebik <stash at fb.com>
> # Date 1476195835 25200
> #      Tue Oct 11 07:23:55 2016 -0700
> # Node ID 48e5db9c751c1eca19019bbc24de43f7cb3368e7
> # Parent  b9e71247c1b68ce1fac7dd69cf26d106f88f9372
> exchange: getbundle `bookmarks` part generator
>
> This generator will be used during pull operation.

The change itself looks good to me. (you might want to add some details 
about how the creation of the part is triggered from the client if you 
want to make it easier to review, but that's perfectly fine as is).

Now that we have internal documentations, we will want to introduce a 
section about these bundle2 part and related bookmarkes exchange (and 
format).

The documentation lives in mercurial/help/internals/

> diff --git a/mercurial/exchange.py b/mercurial/exchange.py
> --- a/mercurial/exchange.py
> +++ b/mercurial/exchange.py
> @@ -1672,6 +1672,21 @@
>      if chunks:
>          bundler.newpart('hgtagsfnodes', data=''.join(chunks))
>
> + at getbundle2partsgenerator('bookmarks')
> +def _getbundlebookmarkspart(bundler, repo, source, bundlecaps=None,
> +                            b2caps=None, heads=None, common=None,
> +                            **kwargs):
> +    if not kwargs.get('bookmarks'):
> +        return
> +    if 'bookmarks' not in b2caps:
> +        raise ValueError(
> +            _('bookmarks are requested but client is not capable '
> +              'of receiving it'))
> +
> +    bookmarks = _getbookmarks(repo, **kwargs)
> +    encodedbookmarks = bookmod.encodebookmarks(bookmarks)
> +    bundler.newpart('bookmarks', data=encodedbookmarks)
> +
>  def _getbookmarks(repo, **kwargs):
>      """Returns list of bookmarks.
>
> diff --git a/mercurial/wireproto.py b/mercurial/wireproto.py
> --- a/mercurial/wireproto.py
> +++ b/mercurial/wireproto.py
> @@ -220,7 +220,8 @@
>               'bundlecaps': 'scsv',
>               'listkeys': 'csv',
>               'cg': 'boolean',
> -             'cbattempted': 'boolean'}
> +             'cbattempted': 'boolean',
> +             'bookmarks': 'boolean'}

If you have the chance, put the closing '}' on its own line and use a 
trailing comma on the line you add. This will make the next guy life easier.

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list