[PATCH] histedit: create obsolescence markers in deterministic order

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Tue Oct 16 09:56:59 CDT 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1350399374 -7200
# Node ID 42ef76a440b24c7d20daa79283cb57f196e7a056
# Parent  9837cafc25b10c51659b65b5971622eab0bc9197
histedit: create obsolescence markers in deterministic order

I arbitrary use the revnum of the precursor because it sound a right order.

diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -512,11 +512,13 @@ def histedit(ui, repo, *parent, **opts):
         if mapping:
             movebookmarks(ui, repo, mapping, topmost, ntm)
             # TODO update mq state
         if obsolete._enabled:
             markers = []
-            for prec, succs in mapping.iteritems():
+            # sort by revision number because it sound "right"
+            for prec in sorted(mapping, key=repo.changelog.rev):
+                succs = mapping[prec]
                 markers.append((repo[prec],
                                 tuple(repo[s] for s in succs)))
             if markers:
                 obsolete.createmarkers(repo, markers)
         else:
diff --git a/tests/test-histedit-obsolete.t b/tests/test-histedit-obsolete.t
--- a/tests/test-histedit-obsolete.t
+++ b/tests/test-histedit-obsolete.t
@@ -85,15 +85,16 @@ Enable obsolete
   | x  1:d2ae7f538514 b
   |/
   o  0:cb9a9f314b8b a
   
   $ hg debugobsolete
-  e860deea161a2f77de56603b340ebbb4536308ae ae467701c5006bf21ffcfdb555b3d6b63280b6b7 0 {'date': '*', 'user': 'test'} (glob)
-  652413bf663ef2a641cab26574e46d5f5a64a55a 0efacef7cb481bf574f69075b82d044fdbe5c20f 0 {'date': '*': 'test'} (glob)
-  d2ae7f538514cd87c17547b0de4cea71fe1af9fb 0 {'date': '*', 'user': 'test'} (glob)
-  055a42cdd88768532f9cf79daa407fc8d138de9b ae467701c5006bf21ffcfdb555b3d6b63280b6b7 0 {'date': '*': 'test'} (glob)
-  177f92b773850b59254aa5e923436f921b55483b d36c0562f908c692f5204d606d4ff3537d41f1bf 0 {'date': '*', 'user': 'test'} (glob)
+  d2ae7f538514cd87c17547b0de4cea71fe1af9fb 0 {'date': '* *', 'user': 'test'} (glob)
+  177f92b773850b59254aa5e923436f921b55483b d36c0562f908c692f5204d606d4ff3537d41f1bf 0 {'date': '* *', 'user': 'test'} (glob)
+  055a42cdd88768532f9cf79daa407fc8d138de9b ae467701c5006bf21ffcfdb555b3d6b63280b6b7 0 {'date': '* *', 'user': 'test'} (glob)
+  e860deea161a2f77de56603b340ebbb4536308ae ae467701c5006bf21ffcfdb555b3d6b63280b6b7 0 {'date': '* *', 'user': 'test'} (glob)
+  652413bf663ef2a641cab26574e46d5f5a64a55a 0efacef7cb481bf574f69075b82d044fdbe5c20f 0 {'date': '* *', 'user': 'test'} (glob)
+
 
 Ensure hidden revision does not prevent histedit
 -------------------------------------------------
 
 create an hidden revision


More information about the Mercurial-devel mailing list