Tue, 01 Sep 2015 14:41:41 -0400 buildrpm: mkdir -p two needed directories (issue4779)
Augie Fackler <augie@google.com> [Tue, 01 Sep 2015 14:41:41 -0400] rev 26139
buildrpm: mkdir -p two needed directories (issue4779) Without this, building RPMs can fail.
Tue, 01 Sep 2015 17:09:00 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Sep 2015 17:09:00 -0500] rev 26138
merge with stable
Mon, 31 Aug 2015 22:44:20 -0400 hghave: use subprocess instead of os.popen
Augie Fackler <augie@google.com> [Mon, 31 Aug 2015 22:44:20 -0400] rev 26137
hghave: use subprocess instead of os.popen os.popen was deprecated in Python 2.6 in favor of subprocess, so let's move into the future.
Sat, 22 Aug 2015 15:12:52 -0700 hgweb: move archive related attributes to requestcontext
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 15:12:52 -0700] rev 26136
hgweb: move archive related attributes to requestcontext As part of this, "archive_specs" was renamed to "archivespecs" to align with naming conventions. "archive_specs" didn't technically need to be moved from hgweb. But it seemed to make sense to have all the archive code in the same class. As part of this, hgweb.configlist is no longer used, so it was deleted.
Sat, 22 Aug 2015 15:02:41 -0700 hgweb: move some config options to requestcontext
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 15:02:41 -0700] rev 26135
hgweb: move some config options to requestcontext Various config options from the repository were stored on the hgweb instance. While unlikely, there could be race conditions between a new request updating these values and an in-flight request seeing both old and new values, leading to weird results. We move some of options/attributes from hgweb to requestcontext. As part of this, we establish config* helpers on requestcontext. As part of the move, we changed int() casts to configint() calls. The int() usage likely predates the existence of configint(). We also removed config option updating from once every refresh to every request. I don't believe obtaining config options is expensive enough to warrant only doing when the repository has changed. The excessive use of object.__setattr__ is unfortunate. But it will eventually disappear once the proxy is no longer necessary.
Sat, 22 Aug 2015 14:59:36 -0700 hgweb: establish class for holding per request context
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 14:59:36 -0700] rev 26134
hgweb: establish class for holding per request context Currently, hgweb applications have many instance variables holding mutated state. This is somewhat problematic because multiple threads may race accessing or changing this state. This patch starts a series that will add more thread safety to hgweb applications. It will do this by moving mutated state out of hgweb and into per-request instances of the newly established "requestcontext" class. Our new class currently behaves like a proxy to hgweb instances. This should change once all state is captured in it instead of hgweb. The effectiveness of this proxy is demonstrated by passing instances of it - not hgweb instances/self - to various functions.
Sat, 22 Aug 2015 14:22:40 -0700 hgweb: don't make request optional
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 14:22:40 -0700] rev 26133
hgweb: don't make request optional The "request" argument has been optional in this code since it was introduced in 38170eeed18c in 2009. There are no consumers that don't pass this argument. So don't make it an optional argument.
Sat, 22 Aug 2015 13:58:59 -0700 hgweb: add some documentation
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 13:58:59 -0700] rev 26132
hgweb: add some documentation It took longer than I wanted to grok how the various parts of hgweb worked. So I added some class and method documentation to help whoever hacks on this next.
Tue, 01 Sep 2015 23:35:06 +0800 hgweb: limit branches shown on summary page to 10
Anton Shestakov <av6@dwimlabs.net> [Tue, 01 Sep 2015 23:35:06 +0800] rev 26131
hgweb: limit branches shown on summary page to 10 Tags and bookmarks on summary page are already limited to 10, let's limit branches as well. Each of the blocks (tags, bookmarks, branches) currently has a link to the full list.
Tue, 01 Sep 2015 23:29:30 +0800 hgweb: use webutil.branchentries for branches on summary page
Anton Shestakov <av6@dwimlabs.net> [Tue, 01 Sep 2015 23:29:30 +0800] rev 26130
hgweb: use webutil.branchentries for branches on summary page This allows showing correct status for each branch, which was missing on /summary. Usually that means that closed branches get the same css class (resulting in e.g. different color/shade) as they do on /branches page. The sorting of the branches on summary page also changes and is now the same as on /branches page: closed branches are now at the end of the list.
Tue, 01 Sep 2015 22:28:45 +0800 hgweb: move branchentries code from webcommands to webutil
Anton Shestakov <av6@dwimlabs.net> [Tue, 01 Sep 2015 22:28:45 +0800] rev 26129
hgweb: move branchentries code from webcommands to webutil
Tue, 18 Aug 2015 22:15:46 +0900 templater: add optional timezone argument to localdate()
Yuya Nishihara <yuya@tcha.org> [Tue, 18 Aug 2015 22:15:46 +0900] rev 26128
templater: add optional timezone argument to localdate() The keyword extension uses "utcdate" for a different function, so we can't add new "utcdate" filter or function. Instead, this patch extends "localdate" to a general timezone converter.
Tue, 01 Sep 2015 19:15:16 +0900 templater: port localdate filter to a function
Yuya Nishihara <yuya@tcha.org> [Tue, 01 Sep 2015 19:15:16 +0900] rev 26127
templater: port localdate filter to a function It will be extended to accept a timezone argument.
Tue, 01 Sep 2015 19:43:14 +0900 util: extract function that parses timezone string
Yuya Nishihara <yuya@tcha.org> [Tue, 01 Sep 2015 19:43:14 +0900] rev 26126
util: extract function that parses timezone string It will be used to parse a timezone argument passed to a template function.
Tue, 01 Sep 2015 19:04:10 +0900 templater: drop unneeded destructuring of argument tuple at buildfilter
Yuya Nishihara <yuya@tcha.org> [Tue, 01 Sep 2015 19:04:10 +0900] rev 26125
templater: drop unneeded destructuring of argument tuple at buildfilter Because evalfuncarg() accepts an argument tuple, there is little meaning to pass (func, data, filt) in place of ((func, data), filt).
Tue, 01 Sep 2015 18:57:50 +0900 templater: extract helper that evaluates filter or function argument
Yuya Nishihara <yuya@tcha.org> [Tue, 01 Sep 2015 18:57:50 +0900] rev 26124
templater: extract helper that evaluates filter or function argument It will be used to get a date tuple from an argument. Perhaps some of "stringify(args[n][0], ...)" can be replaced by this function.
Fri, 28 Aug 2015 16:59:31 -0500 contrib: add showstack extension
Matt Mackall <mpm@selenic.com> [Fri, 28 Aug 2015 16:59:31 -0500] rev 26123
contrib: add showstack extension This allows getting a Python stack trace at any time on Unix by hitting Ctrl-\ (or Ctrl-T on BSDs). Useful for debugging mysterious hangs on the fly. Sample output: $ hg log -k nosuchmessage ^\ File "/home/mpm/hg/mercurial/revset.py", line 3089, in _iterfilter if cond(x): File "/home/mpm/hg/mercurial/util.py", line 415, in f cache[arg] = func(arg) File "/home/mpm/hg/mercurial/revset.py", line 1215, in matches for t in c.files() + [c.user(), c.description()]) File "/home/mpm/hg/mercurial/context.py", line 525, in files return self._changeset[3] File "/home/mpm/hg/mercurial/util.py", line 531, in __get__ result = self.func(obj) File "/home/mpm/hg/mercurial/context.py", line 498, in _changeset return self._repo.changelog.read(self.rev()) File "/home/mpm/hg/mercurial/changelog.py", line 338, in read text = self.revision(node) File "/home/mpm/hg/mercurial/revlog.py", line 1092, in revision bins = self._chunks(chain) File "/home/mpm/hg/mercurial/revlog.py", line 1013, in _chunks ladd(decompress(buffer(data, chunkstart - offset, chunklength))) File "/home/mpm/hg/mercurial/revlog.py", line 91, in decompress return _decompress(bin) ----
Tue, 01 Sep 2015 16:38:33 -0500 Added signature for changeset 1a45e49a6bed stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Sep 2015 16:38:33 -0500] rev 26122
Added signature for changeset 1a45e49a6bed
Tue, 01 Sep 2015 16:38:32 -0500 Added tag 3.5.1 for changeset 1a45e49a6bed stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Sep 2015 16:38:32 -0500] rev 26121
Added tag 3.5.1 for changeset 1a45e49a6bed
Tue, 01 Sep 2015 16:08:07 -0500 hgweb: fix trust of templates path (BC) stable 3.5.1
Matt Mackall <mpm@selenic.com> [Tue, 01 Sep 2015 16:08:07 -0500] rev 26120
hgweb: fix trust of templates path (BC) Long ago we disabled trust of the templates path with a comment describing the (insecure) behavior before the change. At some later refactor, the code was apparently changed back to match the comment, unaware that the intent of the comment was to describe the behavior to avoid. This change disables the trust and updates the comment to explicitly say not only what the old problem was, but also that it was in fact a problem and the action taken to prevent it. Impact: prior to this change, if you had a UNIX-based hgweb server where users can write hgrc files, those users could potentially read any file readable by the web server. This is marked as a backwards compatibility issue because people may have configured templates without proper trust settings. Issue spotted by Greg Szorc.
Tue, 01 Sep 2015 11:39:08 -0400 wix: avoid an abort with 'hg help -k foo' stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 01 Sep 2015 11:39:08 -0400] rev 26119
wix: avoid an abort with 'hg help -k foo' Previously: $ /c/Program\ Files/Mercurial/hg help -k merge-tools abort: No such file or directory: c:\Program Files\Mercurial\help\scripting.txt The Inno installer seems OK, but the TortoiseHg required the same fix. That got queued with an additional change of 'helpFolder.guid' in guids.wxi (probably by Steve). I'm not sure if that is necessary here too.
Sun, 30 Aug 2015 14:03:32 -0700 revlog: add an aggressivemergedelta option
Durham Goode <durham@fb.com> [Sun, 30 Aug 2015 14:03:32 -0700] rev 26118
revlog: add an aggressivemergedelta option This adds an option for delta'ing against both p1 and p2 when applying merge revisions and picking whichever is smallest. Some before and after stats on manifest.d size: internal large repo: before: 1.2 GB after: 930 MB mozilla-central: before: 261 MB after: 92 MB
Sun, 30 Aug 2015 13:58:11 -0700 revlog: change generaldelta delta parent heuristic
Durham Goode <durham@fb.com> [Sun, 30 Aug 2015 13:58:11 -0700] rev 26117
revlog: change generaldelta delta parent heuristic The old generaldelta heuristic was "if p1 (or p2) was closer than the last full text, use it, otherwise use prev". This was problematic when a repo contained multiple branches that were very different. If commits to branch A were pushed, and the last full text was branch B, it would generate a fulltext. Then if branch B was pushed, it would generate another fulltext. The problem is that the last fulltext (and delta'ing against `prev` in general) has no correlation with the contents of the incoming revision, and therefore will always have degenerate cases. According to the blame, that algorithm was chosen to minimize the chain length. Since there is already code that protects against that (the delta-vs-fulltext code), and since it has been improved since the original generaldelta algorithm went in (2011), I believe the chain length criteria will still be preserved. The new algorithm always diffs against p1 (or p2 if it's closer), unless the resulting delta will fail the delta-vs-fulltext check, in which case we delta against prev. Some before and after stats on manifest.d size. internal large repo old heuristic - 2.0 GB new heuristic - 1.2 GB mozilla-central old heuristic - 242 MB new heuristic - 261 MB The regression in mozilla central is due to the new heuristic choosing p2r as the delta when it's closer to the tip. Switching the algorithm to always prefer p1r brings the size back down (242 MB). This is result of the way in which mozilla does merges and pushes, and the result could easily swing the other direction in other repos (depending on if they merge X into Y or Y into X), but will never be as degenerate as before. I future patch will address the regression by introducing an optional, even more aggressive delta heuristic which will knock the mozilla manifest size down dramatically.
Sun, 30 Aug 2015 13:34:30 -0700 revlog: move textlen calculation to be above delta chooser
Durham Goode <durham@fb.com> [Sun, 30 Aug 2015 13:34:30 -0700] rev 26116
revlog: move textlen calculation to be above delta chooser This moves the textlen calculation to be above the delta chooser. Since textlen is needed for calling isgooddelta, we need it above the delta chooser so future patches can call isgooddelta.
Sun, 30 Aug 2015 13:33:00 -0700 revlog: move delta check to it's own function
Durham Goode <durham@fb.com> [Sun, 30 Aug 2015 13:33:00 -0700] rev 26115
revlog: move delta check to it's own function This moves the delta vs fulltext comparison to its own function. This will allow us to reuse the function in future patches for more efficient delta choices. As a side effect, this will also allow extensions to modify our delta criteria.
Wed, 19 Aug 2015 21:43:13 +0800 monoblue: add archive links on summary page
Anton Shestakov <av6@dwimlabs.net> [Wed, 19 Aug 2015 21:43:13 +0800] rev 26114
monoblue: add archive links on summary page
Sun, 30 Aug 2015 19:03:38 -0400 help: distinguish sections when multiple match (issue4802)
timeless@mozdev.org [Sun, 30 Aug 2015 19:03:38 -0400] rev 26113
help: distinguish sections when multiple match (issue4802)
Mon, 31 Aug 2015 17:21:38 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 31 Aug 2015 17:21:38 -0500] rev 26112
merge with stable
Tue, 25 Aug 2015 00:06:41 -0400 hghave: add a check for docker support
Augie Fackler <augie@google.com> [Tue, 25 Aug 2015 00:06:41 -0400] rev 26111
hghave: add a check for docker support This currently refuses to operate if on a non-Linux host. I suspect that Docker running on FreeBSD 11 or on an Illumos derivative would work fine, but I don't have ready access to such a system. On OS X using boot2docker (I used a hacky xhyve-based one for testing), it won't work because $TESTTEMP doesn't end up inside the set of directories that get forwarded to the boot2docker VM, so you can't actually drop debs in the $TESTTEMP at all. It would be possible (probably even trivial) to hack around this by using a randomly-named temporary directory inside the working directory, but that seems unlikely to be useful enough to justify the ugliness.
Tue, 25 Aug 2015 00:03:15 -0400 hghave: add a check for debian packaging tools
Augie Fackler <augie@google.com> [Tue, 25 Aug 2015 00:03:15 -0400] rev 26110
hghave: add a check for debian packaging tools
(0) -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip