[PATCH 07 of 15] localrepo: generate parentdelta'ed changegroup if flag is on

Gilles Moris gilles.moris at free.fr
Mon Jul 12 09:01:14 CDT 2010


On Monday 12 July 2010 12:49:49 pm Pradeepkumar Gayam wrote:
> # HG changeset patch
> # User Pradeepkumar Gayam <in3xes at gmail.com>
> # Date 1278877989 -19800
> # Branch stable
> # Node ID 652e22c020362dff73df745be4fe1e5d1712993a
> # Parent  d7ffd4120b04df6bf6382fc88586debe9607013e
> localrepo: generate parentdelta'ed changegroup if flag is on
>
> diff -r d7ffd4120b04 -r 652e22c02036 mercurial/localrepo.py
> --- a/mercurial/localrepo.py	Mon Jul 12 00:53:18 2010 +0530
> +++ b/mercurial/localrepo.py	Mon Jul 12 01:23:09 2010 +0530
> @@ -20,7 +20,7 @@
>  propertycache = util.propertycache
>
>  class localrepository(repo.repository):
> -    capabilities = set(('lookup', 'changegroupsubset', 'branchmap',
> 'pushkey'))
> +    capabilities = set(('lookup', 'changegroupsubset', 
> 'branchmap', 'pushkey parentdelta'))

I am not familiar with the code, but I guess you want here:
'pushkey', 'parentdelta'
and not
'pushkey parentdelta'.

Regards.
Gilles.

> supported = set('revlogv1 store fncache shared'.split())
>
>      def __init__(self, baseui, path=None, create=0):
> @@ -1272,7 +1272,7 @@
>              for node in nodes:
>                  self.ui.debug("%s\n" % hex(node))
>
> -    def changegroupsubset(self, bases, heads, source, extranodes=None):
> +    def changegroupsubset(self, bases, heads, source, extranodes=None,
> pdelta=False): """Compute a changegroup consisting of all the nodes that
> are descendents of any of the bases and ancestors of any of the heads.
> Return a chunkbuffer object whose read() method will return @@ -1308,7
> +1308,7 @@
>              allheads = self.heads()
>              allheads.sort()
>              if heads == allheads:
> -                return self._changegroup(msng_cl_lst, source)
> +                return self._changegroup(msng_cl_lst, source, pdelta)
>
>          # slow path
>          self.hook('preoutgoing', throw=True, source=source)
> @@ -1543,11 +1543,11 @@
>
>          return util.chunkbuffer(gengroup())
>
> -    def changegroup(self, basenodes, source):
> +    def changegroup(self, basenodes, source, pdelta=False):
>          # to avoid a race we use changegroupsubset() (issue1320)
> -        return self.changegroupsubset(basenodes, self.heads(), source)
> +        return self.changegroupsubset(basenodes, self.heads(), source,
> pdelta=pdelta)
>
> -    def _changegroup(self, nodes, source):
> +    def _changegroup(self, nodes, source, pdelta=False):
>          """Compute the changegroup of all nodes that we have that a
> recipient doesn't.  Return a chunkbuffer object whose read() method will
> return successive changegroup chunks.
> @@ -1584,7 +1584,7 @@
>              collect = changegroup.collector(cl, mmfs, changedfiles)
>
>              cnt = 0
> -            for chnk in cl.group(nodes, identity, collect):
> +            for chnk in cl.group(nodes, identity, collect, pdelta):
>                  self.ui.progress(_('bundling changes'), cnt,
> unit=_('chunks')) cnt += 1
>                  yield chnk
> @@ -1593,7 +1593,8 @@
>              mnfst = self.manifest
>              nodeiter = gennodelst(mnfst)
>              cnt = 0
> -            for chnk in mnfst.group(nodeiter, lookuprevlink_func(mnfst)):
> +            for chnk in mnfst.group(nodeiter, lookuprevlink_func(mnfst),
> +                                    pdelta=pdelta):
>                  self.ui.progress(_('bundling manifests'), cnt,
> unit=_('chunks')) cnt += 1
>                  yield chnk
> @@ -1610,7 +1611,7 @@
>                      yield changegroup.chunkheader(len(fname))
>                      yield fname
>                      lookup = lookuprevlink_func(filerevlog)
> -                    for chnk in filerevlog.group(nodeiter, lookup):
> +                    for chnk in filerevlog.group(nodeiter, lookup,
> pdelta=pdelta): self.ui.progress(
>                              _('bundling files'), cnt, item=fname,
> unit=_('chunks')) cnt += 1
> diff -r d7ffd4120b04 -r 652e22c02036 mercurial/revlog.py
> --- a/mercurial/revlog.py	Mon Jul 12 00:53:18 2010 +0530
> +++ b/mercurial/revlog.py	Mon Jul 12 01:23:09 2010 +0530
> @@ -1180,7 +1180,7 @@
>              self._cache = (node, curr, text)
>          return node
>
> -    def group(self, nodelist, lookup, infocollect=None):
> +    def group(self, nodelist, lookup, infocollect=None, pdelta=False):
>          """Calculate a delta group, yielding a sequence of changegroup
> chunks (strings).
>
> @@ -1216,7 +1216,11 @@
>                  d = self.revision(nb)
>                  meta += mdiff.trivialdiffheader(len(d))
>              else:
> -                d = self.revdiff(a, b)
> +                if pdelta:
> +                    d = self.revdiff(self.parentrevs(b)[0], b)
> +                else:
> +                    d = self.revdiff(a, b)
> +
>              yield changegroup.chunkheader(len(meta) + len(d))
>              yield meta
>              if len(d) > 2**20:
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel




More information about the Mercurial-devel mailing list