Fri, 15 Dec 2017 12:15:58 +0800 hgweb: stop using HTML comments in <script>
Anton Shestakov <av6@dwimlabs.net> [Fri, 15 Dec 2017 12:15:58 +0800] rev 35415
hgweb: stop using HTML comments in <script> Once upon a time, in 1995, there were browsers that didn't understand <script> tags and they would simply show the code inside as text. This started a tradition of wrapping everything inside <script> in <!-- HTML comments -->. Nowadays, it's not only not needed, but can be considered harmful[1]: - within XHTML documents, the source will actually be hidden from all browsers and rendered useless - `--` is not allowed within HTML comments, so any decrement operations in script are invalid [1]: http://www.javascripttoolbox.com/bestpractices/#comments
Thu, 14 Dec 2017 16:01:28 -0500 merge with stable
Augie Fackler <augie@google.com> [Thu, 14 Dec 2017 16:01:28 -0500] rev 35414
merge with stable
Thu, 14 Dec 2017 20:18:15 +0000 statprof: remove a line of deadcode
Alex Gaynor <agaynor@mozilla.com> [Thu, 14 Dec 2017 20:18:15 +0000] rev 35413
statprof: remove a line of deadcode Differential Revision: https://phab.mercurial-scm.org/D1689
Sun, 01 Oct 2017 12:21:50 +0100 extdata: abort if external command exits with non-zero status (BC)
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Oct 2017 12:21:50 +0100] rev 35412
extdata: abort if external command exits with non-zero status (BC) Per the last discussion, this is more reliable and consistent way than suppressing an error. For grep, erroring out might be inconvenient, but for curl, non-zero exit status should be detected. The latter wouldn't be possible if non-zero status is ignored. https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-October/105727.html
Thu, 14 Dec 2017 21:30:00 +0800 hgweb: update graph function docstring
Anton Shestakov <av6@dwimlabs.net> [Thu, 14 Dec 2017 21:30:00 +0800] rev 35411
hgweb: update graph function docstring
Tue, 12 Dec 2017 22:05:21 -0800 rebase: fix for hgsubversion
Phil Cohen <phillco@fb.com> [Tue, 12 Dec 2017 22:05:21 -0800] rev 35410
rebase: fix for hgsubversion 5c25fe7fb1e broke something in the hgsubversion test path, causing it raise an abort (Abort: nothing to merge) during a perfectly good rebase. I tracked it down to this change. It's probably not hgsubversion related. I suspect that using the same `wctx` from before the initial update causes problems with the wctx's cached manifest property. I noticed we also sometimes stick random gunk on the wctx object in other places (like in `copies.py`) so it's probably best to reset it for now. The line I added before was actually useless since we don't pass wctx to the initial `merge.update`, so it defaults to `repo[None]`. So I just removed it. Differential Revision: https://phab.mercurial-scm.org/D1679
Mon, 11 Dec 2017 15:43:56 +0800 hgweb: render next pages on /graph incrementally
Anton Shestakov <av6@dwimlabs.net> [Mon, 11 Dec 2017 15:43:56 +0800] rev 35409
hgweb: render next pages on /graph incrementally Previously, when user scrolled down to see the next page on /graph, all hgweb did was re-render everything that would be visible (by simply incrementing revcount). It was not efficient at all, and this patch makes /graph page behave similarly to the regular /log: every new page only consists of new changesets, no duplication, and only jsdata is based on the full set of changesets required to build accurate graph. This is achieved by adding "?graphtop=<node>" to the next page URL template, effectively remembering where the graph started, and using that value to create the new `tree` that covers the whole visible graph. That variable is then used to produce jsdata for redrawing graph client-side. nextentry is used for the same purpose as on /log page (to format the next page URL), but it's not a part of the graph.
Mon, 11 Dec 2017 13:47:58 +0800 hgweb: split graphdata() into jsdata() and nodes()
Anton Shestakov <av6@dwimlabs.net> [Mon, 11 Dec 2017 13:47:58 +0800] rev 35408
hgweb: split graphdata() into jsdata() and nodes() nodes keyword passed to the template can be any iterator, but jsdata needs to be a list because it gets JSONified.
Sun, 10 Dec 2017 15:56:22 +0800 hgweb: calculate <canvas> width and height client-side
Anton Shestakov <av6@dwimlabs.net> [Sun, 10 Dec 2017 15:56:22 +0800] rev 35407
hgweb: calculate <canvas> width and height client-side hgweb determines and passes to templates some variables related to graph appearance, like bg_height, canvaswidth and canvasheight. bg_height was and still is used for graph.scale() call in graph.tmpl, and the two latter variables were used in <canvas> element as width and height properties, and they were set before JS code got to run. Setting these properties server-side doesn't make a lot of sense, because a graph that has been scaled should calculate things like width and height on its own when being rendered. Let's move (re)sizing <canvas> to JavaScript (to Graph.render function) and stop parsing HTML with regular expressions just to know new width and height. That extra loop that only counts cols is required because <canvas> can't be resized after or in the process of rendering (or it gets cleared). Incidentally, SVG doesn't have this problem and I'm hoping to switch graph to using it in future. There also was truecanvasheight, but according to hg grep --all it was never used, see d490edc71146.
Fri, 08 Dec 2017 21:50:11 +0800 hgweb: filter graphmod.colored() output before iterating over it
Anton Shestakov <av6@dwimlabs.net> [Fri, 08 Dec 2017 21:50:11 +0800] rev 35406
hgweb: filter graphmod.colored() output before iterating over it Consumers in this function use output of graphmod.colored(), but only want items with type == CHANGESET, so let's filter it early. This is primarily just a refactoring, but it also fixes a potential small bug with `rows = len(tree)` (this variable is used for "Rows shown" line in raw-graph) if there are items of other types.
Mon, 11 Dec 2017 05:56:35 +0530 py3: introduce pycompat.ziplist as zip is a generator on Python 3
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 11 Dec 2017 05:56:35 +0530] rev 35405
py3: introduce pycompat.ziplist as zip is a generator on Python 3 Similar to map, the return value of zip was also turned into a generator on Python 3. We have multiple occurences in our codebase where we retrieve the values of zip multiple times, so let's introduce pycompat.ziplist similar to pycompat.maplist. Differential Revision: https://phab.mercurial-scm.org/D1675
Mon, 11 Dec 2017 05:26:46 +0530 py3: pass bytes from extension to ui.write() in test-revlog-mmapindex.t
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 11 Dec 2017 05:26:46 +0530] rev 35404
py3: pass bytes from extension to ui.write() in test-revlog-mmapindex.t This makes the test pass on Python 3. Differential Revision: https://phab.mercurial-scm.org/D1674
Sun, 10 Dec 2017 06:36:48 +0530 py3: handle keyword arguments correctly in hgext/record.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 06:36:48 +0530] rev 35403
py3: handle keyword arguments correctly in hgext/record.py Differential Revision: https://phab.mercurial-scm.org/D1673
Sun, 10 Dec 2017 06:36:35 +0530 py3: handle keyword arguments correctly in bundlerepo.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 06:36:35 +0530] rev 35402
py3: handle keyword arguments correctly in bundlerepo.py Differential Revision: https://phab.mercurial-scm.org/D1672
Sun, 10 Dec 2017 06:36:20 +0530 py3: handle keyword arguments correctly in debugcommands.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 06:36:20 +0530] rev 35401
py3: handle keyword arguments correctly in debugcommands.py Differential Revision: https://phab.mercurial-scm.org/D1671
Mon, 11 Dec 2017 09:27:40 -0800 memfilectx: make changectx argument mandatory in constructor (API)
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Dec 2017 09:27:40 -0800] rev 35400
memfilectx: make changectx argument mandatory in constructor (API) committablefilectx has three subclasses: workingfilectx, memfilectx, and overlayfilectx. committablefilectx takes an optional (change) ctx instance to its constructor. If it's provided, it's set on the instance as self._changectx. If not, that property is supposed to be defined by the class. However, only workingfilectx does that. The other two will have the property undefined if it's not passed in the constructor. That seems bad to me. This patch makes the changectx argument to the memfilectx constructor mandatory because that fixes the failure I ran into. It seems like we should also fix the overlayfilectx case. Differential Revision: https://phab.mercurial-scm.org/D1658
Sat, 09 Dec 2017 14:22:12 -0800 debugbuilddag: create filectx instance in 'filectxfn' callback
Martin von Zweigbergk <martinvonz@google.com> [Sat, 09 Dec 2017 14:22:12 -0800] rev 35399
debugbuilddag: create filectx instance in 'filectxfn' callback Same motivation is previous patch. Differential Revision: https://phab.mercurial-scm.org/D1670
Sat, 09 Dec 2017 14:15:30 -0800 synthrepo: create filectx instance in 'filectxfn' callback
Martin von Zweigbergk <martinvonz@google.com> [Sat, 09 Dec 2017 14:15:30 -0800] rev 35398
synthrepo: create filectx instance in 'filectxfn' callback I would like to pass the memctx to the memfilectx constructor, but it's not available where we currently create the memfilectx. It is available in the 'filectxfn' callback, so let's create the memfilectx there instead. A later patch will start actually passing the memctx. Differential Revision: https://phab.mercurial-scm.org/D1669
Tue, 12 Dec 2017 20:28:38 -0500 lfs: use 'ui' provided to `upgrade` for output, instead of stealing srcrepo's
Matt Harbison <matt_harbison@yahoo.com> [Tue, 12 Dec 2017 20:28:38 -0500] rev 35397
lfs: use 'ui' provided to `upgrade` for output, instead of stealing srcrepo's Also spotted by Yuya.
Tue, 12 Dec 2017 20:22:38 -0500 lfs: correct the directory list value returned by lfsvfs.walk()
Matt Harbison <matt_harbison@yahoo.com> [Tue, 12 Dec 2017 20:22:38 -0500] rev 35396
lfs: correct the directory list value returned by lfsvfs.walk() Spotted by Yuya.
Sun, 12 Nov 2017 15:34:46 +0100 debuglocks: allow setting a lock
Paul Morelle <paul.morelle@octobus.net> [Sun, 12 Nov 2017 15:34:46 +0100] rev 35395
debuglocks: allow setting a lock
Sun, 12 Nov 2017 15:34:19 +0100 debuglocks: add tests (and fix typo in early return)
Paul Morelle <paul.morelle@octobus.net> [Sun, 12 Nov 2017 15:34:19 +0100] rev 35394
debuglocks: add tests (and fix typo in early return)
Sun, 10 Dec 2017 22:50:57 -0500 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com> [Sun, 10 Dec 2017 22:50:57 -0500] rev 35393
tests: remove (glob) annotations that were only for '\' matches # skip-blame because this was mechanically rewritten the following script. I ran it on both *.t and *.py, but none of the *.py changes were proper. All *.t ones appear to be, and they run without addition failures on both Windows and Linux. import argparse import os import re ap = argparse.ArgumentParser() ap.add_argument('path', nargs='+') opts = ap.parse_args() globre = re.compile(r'^(.*) \(glob\)(.*)$') for p in opts.path: tmp = p + '.tmp' with open(p, 'rb') as src, open(tmp, 'wb') as dst: for line in src: m = globre.match(line) if not m or '$LOCALIP' in line or '*' in line: dst.write(line) continue if '?' in line[:-3] or ('?' in line[:-3] and line[-3:] != '(?)'): dst.write(line) continue dst.write(m.group(1) + m.group(2) + '\n') os.unlink(p) os.rename(tmp, p)
Sun, 10 Dec 2017 22:45:35 -0500 check-code: drop the rules for adding (glob) for Windows paths
Matt Harbison <matt_harbison@yahoo.com> [Sun, 10 Dec 2017 22:45:35 -0500] rev 35392
check-code: drop the rules for adding (glob) for Windows paths I'll probably resurrect at least some of these as replacement patterns to switch '\' to '/' when creating tests at some point. But since this subset of globs isn't needed anymore after dfae14354660, and the rules are blocking the glob removal, just drop them for now. It probably isn't worth turning them into checks for unnecessary globs being present.
Sun, 10 Dec 2017 19:21:48 -0500 run-tests: stop automatically adding a (glob) for bundle backup lines
Matt Harbison <matt_harbison@yahoo.com> [Sun, 10 Dec 2017 19:21:48 -0500] rev 35391
run-tests: stop automatically adding a (glob) for bundle backup lines This is the first step to dropping the existing globs for '\' matches, now that it is handled automatically. Instead of just dropping it, this pattern is now used to convert to '/' paths, to reduce the amount of manual cleanup required when creating tests on Windows.
Tue, 12 Dec 2017 18:22:11 +0100 histedit: preserve active branch while histediting stable
Boris Feld <boris.feld@octobus.net> [Tue, 12 Dec 2017 18:22:11 +0100] rev 35390
histedit: preserve active branch while histediting The branch information was properly preserved in the changeset, but the "active" branch of the working copy could be lost (the branch of the base being used). Histedit used to behave properly in this regard but the case was not tested and regressed 4 years ago in ab2362e1672e.
Thu, 07 Dec 2017 17:18:29 +0800 hgweb: implement json-graph
Anton Shestakov <av6@dwimlabs.net> [Thu, 07 Dec 2017 17:18:29 +0800] rev 35389
hgweb: implement json-graph It's essentially a copy of json-log with graph-related things added (col, row, color, edges).
Mon, 11 Dec 2017 22:16:13 -0800 rebase: replace --inmemory flag with rebase.experimental.inmemory config
Phil Cohen <phillco@fb.com> [Mon, 11 Dec 2017 22:16:13 -0800] rev 35388
rebase: replace --inmemory flag with rebase.experimental.inmemory config Differential Revision: https://phab.mercurial-scm.org/D1666
Mon, 11 Dec 2017 09:37:11 -0500 tests: add some commentary and diagnostics to test-run-tests.t
Augie Fackler <augie@google.com> [Mon, 11 Dec 2017 09:37:11 -0500] rev 35387
tests: add some commentary and diagnostics to test-run-tests.t Hopefully this will give us a shot at fixing it on the Windows builder. Differential Revision: https://phab.mercurial-scm.org/D1653
Tue, 12 Dec 2017 16:29:26 +0800 templater: fix "one arguments" stable
Anton Shestakov <av6@dwimlabs.net> [Tue, 12 Dec 2017 16:29:26 +0800] rev 35386
templater: fix "one arguments"
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip