mercurial/phases.py
changeset 34320 12c42bcd4133
parent 34319 5779d096a696
child 34321 4ef472b975ff
--- a/mercurial/phases.py	Tue Sep 19 22:01:31 2017 +0200
+++ b/mercurial/phases.py	Tue Sep 19 22:23:41 2017 +0200
@@ -169,6 +169,22 @@
             binarydata.append(_fphasesentry.pack(phase, head))
     return ''.join(binarydata)
 
+def binarydecode(stream):
+    """decode a binary stream into a 'phase -> nodes' mapping
+
+    Since phases are integer the mapping is actually a python list."""
+    headsbyphase = [[] for i in allphases]
+    entrysize = _fphasesentry.size
+    while True:
+        entry = stream.read(entrysize)
+        if len(entry) < entrysize:
+            if entry:
+                raise error.Abort(_('bad phase-heads stream'))
+            break
+        phase, node = _fphasesentry.unpack(entry)
+        headsbyphase[phase].append(node)
+    return headsbyphase
+
 def _trackphasechange(data, rev, old, new):
     """add a phase move the <data> dictionnary