# HG changeset patch # User Paul Morelle # Date 1520422084 -3600 # Node ID a43ef77cab1dd1ac6b0faab116260d9fe85d1bdc # Parent e0da43e2f71fbd51180823be004095a5cf9aaeef revlog: bound number of snapshots in a chain To limit the number of snapshot chained, we enforce them to be smaller and smaller. This guarantee the number of snapshot in a chain will be bounded to a small number. diff -r e0da43e2f71f -r a43ef77cab1d mercurial/revlog.py --- a/mercurial/revlog.py Fri Jul 20 14:32:56 2018 +0200 +++ b/mercurial/revlog.py Wed Mar 07 12:28:04 2018 +0100 @@ -2557,6 +2557,15 @@ if self._maxchainlen and self._maxchainlen < deltainfo.chainlen: return False + # bad delta from intermediate snapshot size limit + # + # If an intermediate snapshot size is higher than the limit. The + # limit exist to prevent endless chain of intermediate delta to be + # created. + if (deltainfo.snapshotdepth is not None and + (textlen >> deltainfo.snapshotdepth) < deltainfo.deltalen): + return False + return True def _addrevision(self, node, rawtext, transaction, link, p1, p2, flags,