bundle2: add reply awareness to unbundlerecords
authorPierre-Yves David <pierre-yves.david@fb.com>
Fri, 11 Apr 2014 08:24:59 -0700
changeset 20996 ed3c5e18a047
parent 20995 e995d104c87f
child 20997 d7df4b7378ae
bundle2: add reply awareness to unbundlerecords We need an efficient way to handle bundle replies. The unbundle records class is extended to carry such data.
mercurial/bundle2.py
--- a/mercurial/bundle2.py	Tue Apr 01 00:07:17 2014 -0700
+++ b/mercurial/bundle2.py	Fri Apr 11 08:24:59 2014 -0700
@@ -205,14 +205,21 @@
     def __init__(self):
         self._categories = {}
         self._sequences = []
+        self._replies = {}
 
-    def add(self, category, entry):
+    def add(self, category, entry, inreplyto=None):
         """add a new record of a given category.
 
         The entry can then be retrieved in the list returned by
         self['category']."""
         self._categories.setdefault(category, []).append(entry)
         self._sequences.append((category, entry))
+        if inreplyto is not None:
+            self.getreplies(inreplyto).add(category, entry)
+
+    def getreplies(self, partid):
+        """get the subrecords that replies to a specific part"""
+        return self._replies.setdefault(partid, unbundlerecords())
 
     def __getitem__(self, cat):
         return tuple(self._categories.get(cat, ()))