Fri, 25 Sep 2015 22:54:46 -0400 treemanifest: rework lazy-copying code (issue4840)
Augie Fackler <augie@google.com> [Fri, 25 Sep 2015 22:54:46 -0400] rev 26402
treemanifest: rework lazy-copying code (issue4840) The old lazy-copy code formed a chain of copied manifests with each copy. Under typical operation, the stack never got more than a couple of manifests deep and was fine. Under conditions like hgsubversion or convert, the stack could get hundreds of manifests deep, and eventually overflow the recursion limit for Python. I was able to consistently reproduce this by converting an hgsubversion clone of svn's history to treemanifests. This may result in fewer manifests staying in memory during operations like convert when treemanifests are in use, and should make those operations faster since there will be significantly fewer noop function calls going on. A previous attempt (never mailed) of mine to fix this problem tried to simply have all treemanifests only have a loadfunc - that caused somewhat weird problems because the gettext() callable passed into read() wasn't idempotent, so the easy solution is to have a loadfunc and a copyfunc.
Fri, 25 Sep 2015 17:18:28 -0400 manifest: rename treemanifest load functions to ease debugging
Augie Fackler <augie@google.com> [Fri, 25 Sep 2015 17:18:28 -0400] rev 26401
manifest: rename treemanifest load functions to ease debugging I'm hunting an infinite recursion bug at the moment, and having both of these methods named just _load is muddying the waters slightly.
Fri, 25 Sep 2015 17:17:36 -0400 manifest: add id(self) to treemanifest __repr__
Augie Fackler <augie@google.com> [Fri, 25 Sep 2015 17:17:36 -0400] rev 26400
manifest: add id(self) to treemanifest __repr__ Also rename __str__ to __repr__ since that's what we really want for pdb.
(0) -10000 -3000 -1000 -300 -100 -30 -10 -3 +3 +10 +30 +100 +300 +1000 +3000 +10000 tip