mercurial/changegroup.py
changeset 45812 09735cde6275
parent 45811 a5206e71c536
child 45813 5d65e04b6a80
--- a/mercurial/changegroup.py	Sun Oct 18 22:18:02 2020 +0200
+++ b/mercurial/changegroup.py	Mon Oct 19 02:54:12 2020 +0200
@@ -318,12 +318,12 @@
             efilesset = set()
             cgnodes = []
 
+            def ondupchangelog(cl, node):
+                if cl.rev(node) < clstart:
+                    cgnodes.append(node)
+
             def onchangelog(cl, node):
                 efilesset.update(cl.readfiles(node))
-                cgnodes.append(node)
-
-            def ondupchangelog(cl, node):
-                cgnodes.append(node)
 
             self.changelogheader()
             deltas = self.deltaiter()
@@ -365,7 +365,7 @@
                 for cset in pycompat.xrange(clstart, clend):
                     mfnode = cl.changelogrevision(cset).manifest
                     mfest = ml[mfnode].readdelta()
-                    # store file cgnodes we must see
+                    # store file nodes we must see
                     for f, n in pycompat.iteritems(mfest):
                         needfiles.setdefault(f, set()).add(n)
 
@@ -423,7 +423,7 @@
                     **pycompat.strkwargs(hookargs)
                 )
 
-            added = [cl.node(r) for r in pycompat.xrange(clstart, clend)]
+            added = pycompat.xrange(clstart, clend)
             phaseall = None
             if srctype in (b'push', b'serve'):
                 # Old servers can not push the boundary themselves.
@@ -443,9 +443,10 @@
                     # ignored.
                     targetphase = phaseall = phases.draft
             if added:
-                phases.registernew(repo, tr, targetphase, added)
+                phases.registernew(repo, tr, targetphase, [], revs=added)
             if phaseall is not None:
-                phases.advanceboundary(repo, tr, phaseall, cgnodes)
+                phases.advanceboundary(repo, tr, phaseall, cgnodes, revs=added)
+                cgnodes = []
 
             if changesets > 0:
 
@@ -458,9 +459,9 @@
 
                     repo.hook(b"changegroup", **pycompat.strkwargs(hookargs))
 
-                    for n in added:
+                    for rev in added:
                         args = hookargs.copy()
-                        args[b'node'] = hex(n)
+                        args[b'node'] = hex(cl.node(rev))
                         del args[b'node_last']
                         repo.hook(b"incoming", **pycompat.strkwargs(args))