# HG changeset patch # User Pierre-Yves David # Date 2014-04-11 15:24:59 # Node ID ed3c5e18a047037ae7327fc744d701fb14a4935f # Parent e995d104c87f3debf430ee910f51b23ff244b8e7 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. diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py --- a/mercurial/bundle2.py +++ b/mercurial/bundle2.py @@ -205,14 +205,21 @@ class unbundlerecords(object): 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, ()))