Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 18:54:34 -0700] rev 26219
hg: establish a cache for localrepository instances
hgweb contained code for determining whether a cached localrepository
instance was up to date. This code was way too low-level to be in
hgweb.
This functionality has been moved to a new "cachedlocalrepo" class
in hg.py. The code has been changed slightly to facilitate use
inside a class. hgweb has been refactored to use the new API.
As part of this refactor, hgweb.repo no longer exists! We're very close
to using a distinct repo instance per thread.
The new cache records state when it is created. This intelligence
prevents an extra localrepository from being created on the first
hgweb request. This is why some redundant output from test-extension.t
has gone away.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 18:15:42 -0700] rev 26218
hgweb: create function to perform actions on new repo
We perform some common tasks when a new repo instance is obtained. In
preparation for changing how we obtain repo instances, factor this
functionality into a standalone function.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 17:50:28 -0700] rev 26217
hgweb: remove proxy to hgweb instance
We were temporarily routing attributes until all request-specific
attributes from hgweb were moved to requestcontext. We have finally
reached that juncture and we can remove the proxy.
At this point, only the repo instance is prone to race conditions
between threads. This will be dealt with shortly.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 10 Sep 2015 09:30:10 -0400] rev 26216
dispatch: disable demandimport when invoking the debugger
Turns out that demandimport confuses pudb, which does some pretty
complicated imports. I think it's reasonable to disable demandimport
here.
Matt Mackall <mpm@selenic.com> [Wed, 09 Sep 2015 14:43:45 -0700] rev 26215
templater: create string unescape helper (issue4798)
This gives us a unified place to do error-handling of string-escaping
syntax errors
Yuya Nishihara <yuya@tcha.org> [Sat, 05 Sep 2015 16:50:35 +0900] rev 26214
parsers: use PyTuple_New and SET_ITEM to construct metadata pair of markers
With these 2 patches, fm1readmarkers() gets slightly faster:
obsolete._fm1readmarkers() for 78644 entries
58.0 -> 56.2msec
Yuya Nishihara <yuya@tcha.org> [Sat, 05 Sep 2015 16:41:21 +0900] rev 26213
parsers: use PyTuple_SET_ITEM() to fill new marker tuples
Because we know these tuples have no member yet, PyTuple_SetItem() isn't
necessary.
Yuya Nishihara <yuya@tcha.org> [Sat, 05 Sep 2015 12:56:53 +0900] rev 26212
revset: uncache filteredset.__contains__
Since 96b6b3d78697, condition function returns a cached value, so there's
little benefit to cache __contains__.
No measurable difference found in contrib/base-revsets.txt.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 17:08:37 -0700] rev 26211
hgweb: assign ctype to requestcontext
The very existence of ctype is a bit hacky. But we roll with it.
Before this patch, there was possibly a race condition between 2
threads handling file requests: 1 thread could set the ctype and
another serving a different file would read and use that potentially
wrong ctype.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 17:04:24 -0700] rev 26210
hgweb: add reponame to requestcontext
We have to use object.__setattr__ until the app proxy is gone.