diff mercurial/exchange.py @ 43580:e513e87b0476 stable

py3: fix sorting of obsolete markers in obsutil (issue6217) This is similar to 01e8eefd9434 and others. We move the sortedmarkers() function from exchange module to obsutil.
author Denis Laxalde <denis@laxalde.org>
date Sat, 09 Nov 2019 10:31:58 +0100
parents 2c70dd03b743
children 32048206e7be
line wrap: on
line diff
--- a/mercurial/exchange.py	Wed Nov 06 16:54:34 2019 +0100
+++ b/mercurial/exchange.py	Sat Nov 09 10:31:58 2019 +0100
@@ -28,6 +28,7 @@
     logexchange,
     narrowspec,
     obsolete,
+    obsutil,
     phases,
     pushkey,
     pycompat,
@@ -99,11 +100,6 @@
     contentopts = attr.ib()
 
 
-def _sortedmarkers(markers):
-    # last item of marker tuple ('parents') may be None or a tuple
-    return sorted(markers, key=lambda m: m[:-1] + (m[-1] or (),))
-
-
 def parsebundlespec(repo, spec, strict=True):
     """Parse a bundle string specification into parts.
 
@@ -1140,7 +1136,7 @@
         return
     pushop.stepsdone.add(b'obsmarkers')
     if pushop.outobsmarkers:
-        markers = _sortedmarkers(pushop.outobsmarkers)
+        markers = obsutil.sortedmarkers(pushop.outobsmarkers)
         bundle2.buildobsmarkerspart(bundler, markers)
 
 
@@ -1475,7 +1471,7 @@
     if pushop.outobsmarkers:
         pushop.ui.debug(b'try to push obsolete markers to remote\n')
         rslts = []
-        markers = _sortedmarkers(pushop.outobsmarkers)
+        markers = obsutil.sortedmarkers(pushop.outobsmarkers)
         remotedata = obsolete._pushkeyescape(markers)
         for key in sorted(remotedata, reverse=True):
             # reverse sort to ensure we end with dump0
@@ -2573,7 +2569,7 @@
             heads = repo.heads()
         subset = [c.node() for c in repo.set(b'::%ln', heads)]
         markers = repo.obsstore.relevantmarkers(subset)
-        markers = _sortedmarkers(markers)
+        markers = obsutil.sortedmarkers(markers)
         bundle2.buildobsmarkerspart(bundler, markers)