[PATCH 3 of 5 phases] revlog: make addgroup returns a list of node contained in the added source

Matt Mackall mpm at selenic.com
Sat Jan 14 19:55:43 CST 2012


On Fri, 2012-01-13 at 02:42 +0100, Pierre-Yves David wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
> # Date 1326414543 -3600
> # Node ID 209445e13389063ea1de9b9001ab9f9d7e562046
> # Parent  2a1a788089995deb55413d2a19e750851ac80237
> revlog: make addgroup returns a list of node contained in the added source

> This list will contains any node see in the source, not only the added one.
> This is intended to allow phase to be move according what was pushed by client
> not only what was added.

Not sure about this. It means hooks get fired on changesets we already
have. Queued for now.

> diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
> --- a/mercurial/localrepo.py
> +++ b/mercurial/localrepo.py
> @@ -2017,8 +2017,8 @@
>              source.callback = pr
>  
>              source.changelogheader()
> -            if (cl.addgroup(source, csmap, trp) is None
> -                and not emptyok):
> +            srccontent = cl.addgroup(source, csmap, trp)
> +            if not (srccontent or emptyok):
>                  raise util.Abort(_("received changelog group is empty"))
>              clend = len(cl)
>              changesets = clend - clstart
> @@ -2066,7 +2066,7 @@
>                  pr()
>                  fl = self.file(f)
>                  o = len(fl)
> -                if fl.addgroup(source, revmap, trp) is None:
> +                if not fl.addgroup(source, revmap, trp):
>                      raise util.Abort(_("received file revlog group is empty"))
>                  revisions += len(fl) - o
>                  files += 1
> diff --git a/mercurial/revlog.py b/mercurial/revlog.py
> --- a/mercurial/revlog.py
> +++ b/mercurial/revlog.py
> @@ -1131,6 +1131,7 @@
>          """
>  
>          # track the base of the current delta log
> +        content = []
>          node = None
>  
>          r = len(self)
> @@ -1161,6 +1162,8 @@
>                  deltabase = chunkdata['deltabase']
>                  delta = chunkdata['delta']
>  
> +                content.append(node)
> +
>                  link = linkmapper(cs)
>                  if node in self.nodemap:
>                      # this can happen if two branches make the same change
> @@ -1190,7 +1193,7 @@
>                  dfh.close()
>              ifh.close()
>  
> -        return node
> +        return content
>  
>      def strip(self, minlink, transaction):
>          """truncate the revlog on the first revision with a linkrev >= minlink


-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list