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.
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.
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
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
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
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
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
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
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
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
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.
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.
Paul Morelle <paul.morelle@octobus.net> [Sun, 12 Nov 2017 15:34:46 +0100] rev 35395
debuglocks: allow setting a lock
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)
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)
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.
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.
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.
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).
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
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
Anton Shestakov <av6@dwimlabs.net> [Tue, 12 Dec 2017 16:29:26 +0800] rev 35386
templater: fix "one arguments"
Phil Cohen <phillco@fb.com> [Sun, 10 Dec 2017 21:57:37 -0800] rev 35385
tests: add commit hashes to log commands in rebase tests
Commit hashes are a useful way to ensure the content of commits made in the
tests are not changing, even if we don't query every aspect of every commit.
(And some properties, like extras, are rarely printed at all.)
Many of the rebase log -G calls didn't show hashes; by adding hashes to places
that weren't showing them we can help protect those tests from unwanted
changes.
Differential Revision: https://phab.mercurial-scm.org/D1650
Phil Cohen <phillco@fb.com> [Sun, 10 Dec 2017 22:39:46 -0800] rev 35384
tests: add a simple test for in-memory rebase
This is just a very simple start, but verifies some of the basic cases of an
in-memory rebase.
Differential Revision: https://phab.mercurial-scm.org/D1652
Yuya Nishihara <yuya@tcha.org> [Mon, 11 Dec 2017 22:38:31 +0900] rev 35383
patch: do not break up multibyte character when highlighting word
This changes {\W} to {\W - any 8bit characters} so that multibyte sequences
are taken as words. Since we don't know the encoding of user content, this
is the most sensible definition of a non-word.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 10 Dec 2017 00:16:11 -0500] rev 35382
run-tests: accept '\' vs '/' path differences without '(glob)'
Having to constantly adjust these is a hassle. It's easy for this to slip by
when not testing on Windows, and then when it happens on stable, the tests fail
for the next 3 months if we follow the rules for stable.
This works the same way the EOL differences are ignored, namely to adjust on the
fly and recheck on Windows. I can't think of any situation where there would be
a '\' on Windows, a '/' elsewhere, and the '/' should be considered a failure on
Windows.
This fixes the obvious output problems where (glob) is missing. Without this,
test-alias.t, test-remotenames.t and test-largefiles-misc.t are failing. The
flip side (not handled by this) is the case where an unnecessary glob is
present. There seems to be two separate behaviors.
cf300c1ad7bf is an example
of where the test has been autocorrecting (with output differences), and
d4ec69ff652a is an example where the test fails and reports 'no result code from
test'. Hopefully those cases will become even more rare if people don't need to
guess at when a glob is needed for a Windows path.
It's probably unreasonable to submit a single patch that wipes out all of the
(glob) instances that were only used to hide path differences, given the churn
from other contributors. Since their presence isn't harming the tests, these
can be removed through attrition.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 10 Dec 2017 00:00:36 -0500] rev 35381
run-tests: suggest a (glob) for os.path.sep mismatches with '\r\n' EOL too
We already do this for lines ending in '\n', such that the test only needs to be
run with --interactive and the changes accepted at the end. But that wasn't
working with list-tree.py output for example, and required manual fixup.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 09 Dec 2017 23:46:44 -0500] rev 35380
tests: stabilize the sorted output of list-tree.py on Windows
The test-largefiles-misc.t test was moving 'dir2\' before 'dir\' because while
'/' precedes most of the printable ASCII characters, '\' comes after numbers and
capital letters, among other symbols.
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Dec 2017 19:43:35 +0900] rev 35379
upgrade: simplify workaround for repo.ui.copy()
Copied from commandserver.py.
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Dec 2017 19:41:49 +0900] rev 35378
debugformat: embed raw values in JSON and template output