obsolete: add debugsuccessors command
authorPatrick Mezard <patrick@mezard.eu>
Tue, 19 Jun 2012 10:02:32 +0200
changeset 273 87e4d1eec5e8
parent 272 78d01e341438
child 274 6622a24f3b0f
obsolete: add debugsuccessors command It dumps obsolete changesets and their successors.
hgext/obsolete.py
tests/test-amend.t
--- a/hgext/obsolete.py	Mon Jun 18 12:11:06 2012 +0200
+++ b/hgext/obsolete.py	Tue Jun 19 10:02:32 2012 +0200
@@ -433,9 +433,28 @@
         l.release()
     ui.status('%i obsolete marker converted\n' % cnt)
 
+def cmddebugsuccessors(ui, repo):
+    """dump obsolete changesets and their successors
+
+    Each line matches an existing marker, the first identifier is the
+    obsolete changeset identifier, followed by it successors.
+    """
+    lock = repo.lock()
+    try:
+        allsuccessors = repo.obsoletestore.objects
+        for old in sorted(allsuccessors):
+            successors = [sorted(m['subjects']) for m in allsuccessors[old]]
+            for i, group in enumerate(sorted(successors)):
+                ui.write('%s' % short(old))
+                for new in group:
+                    ui.write(' %s' % short(new))
+                ui.write('\n')
+    finally:
+        lock.release()
 
 cmdtable = {'debugobsolete': (cmddebugobsolete, [], '<subject> <object>'),
             'debugconvertobsolete': (cmddebugconvertobsolete, [], ''),
+            'debugsuccessors': (cmddebugsuccessors, [], ''),
            }
 
 ### Altering existing command
--- a/tests/test-amend.t	Mon Jun 18 12:11:06 2012 +0200
+++ b/tests/test-amend.t	Tue Jun 19 10:02:32 2012 +0200
@@ -24,6 +24,10 @@
   marked working directory as branch foo
   (branches are permanent and global, did you want a bookmark?)
   $ hg amend
+  $ hg debugsuccessors
+  07f494440405 a34b93d251e4
+  07f494440405 bd19cbe78fbf
+  bd19cbe78fbf a34b93d251e4
   $ hg branch
   foo
   $ hg branches
@@ -59,6 +63,10 @@
   $ hg amend --change 2
   abort: no updates found
   [255]
+  $ hg debugsuccessors
+  07f494440405 a34b93d251e4
+  07f494440405 bd19cbe78fbf
+  bd19cbe78fbf a34b93d251e4
   $ hg phase 2
   2: draft
   $ glog
@@ -82,6 +90,11 @@
   $ hg amend --change 2
   abort: no updates found
   [255]
+  $ hg debugsuccessors
+  07f494440405 a34b93d251e4
+  07f494440405 bd19cbe78fbf
+  7384bbcba36f 000000000000
+  bd19cbe78fbf a34b93d251e4
   $ glog
   @  6@foo(secret) amends a34b93d251e49c93d5685ebacad785c73a7e8605
   |