Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 18:11:34 -0800] rev 41320
tests: add setsockopt() output on Python 3
Python 3 appears to call setsockopt() where Python 2 did not.
Differential Revision: https://phab.mercurial-scm.org/D5652
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 18:07:51 -0800] rev 41319
hgweb: don't use raw string for session vars
This r'' is leaking into the templating layer and causing an
assertion failure.
The r'' was added in
d1fccbd50fcd (October 2017). Similar code
in hgweb_mod.py was also changed in that changeset. hgweb_mod.py was
updated in
ec46415ed826 (March 2018) to use webutil.sessionvars(),
which doesn't use raw strings.
Differential Revision: https://phab.mercurial-scm.org/D5651
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 17:50:52 -0800] rev 41318
tests: normalize to bytes in test-install.t
directory() was returning str and hgdirectory() was returning
bytes. This made the set compare fail. Let's normalize the types
on Python 3 so the test passes.
Differential Revision: https://phab.mercurial-scm.org/D5650
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 17:08:53 -0800] rev 41317
config: reject str sections and keys on Python 3
Otherwise we could end up with a dict having both the str
and bytes versions of a particular config item. This may cause
some tests to regress. I haven't checked. But it is better
behavior to fail fast.
We could just as easily change this to normalize the values. But
I like catching all non-compliant call sites first.
Differential Revision: https://phab.mercurial-scm.org/D5649
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 17:02:40 -0800] rev 41316
tests: add size and hash for Python 3
test-archive.t now passes on Python 3.7.1.
Differential Revision: https://phab.mercurial-scm.org/D5648
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 16:58:48 -0800] rev 41315
httppeer: use %s for formatting
This prevents a b'' from appearing in Python 3 output. We keep the
single quotes for backwards compatibility.
Differential Revision: https://phab.mercurial-scm.org/D5647
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 16:54:56 -0800] rev 41314
tests: add b'' to notcapable
This fixes some exceptions in a few tests.
# skip-blame just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D5646
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 16:53:24 -0800] rev 41313
tests: add b'' to test-missing-capability.t
The test now passes on Python 3.
# skip-blame just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D5645
Augie Fackler <raf@durin42.com> [Tue, 22 Jan 2019 11:41:22 -0500] rev 41312
fuzz: exercise more of the lazymanifest code
Differential Revision: https://phab.mercurial-scm.org/D5643
Augie Fackler <raf@durin42.com> [Tue, 22 Jan 2019 11:41:09 -0500] rev 41311
fuzz: restrict manifest input size
Again, let's keep the fuzzer from getting excited about huge inputs.
Differential Revision: https://phab.mercurial-scm.org/D5642
Augie Fackler <raf@durin42.com> [Tue, 22 Jan 2019 11:02:10 -0500] rev 41310
fuzz: exercise more of the revlog API
I noticed in the coverage report that we didn't have much coverage in
revlog.py. Let's try and get some of the more interesting bits tested
by the fuzzer. I ran this locally for a few minutes to verify that I
appear to be calling the various functions in reasonable ways.
Differential Revision: https://phab.mercurial-scm.org/D5641
Augie Fackler <raf@durin42.com> [Tue, 22 Jan 2019 11:18:05 -0500] rev 41309
fuzz: don't allow enormous revlog inputs either
I'm about to make the fuzzer do more, and without this it was getting
enthusiastic about large (and therefore slow) inputs that I don't
think buy us much.
Differential Revision: https://phab.mercurial-scm.org/D5640
Yuya Nishihara <yuya@tcha.org> [Thu, 24 Jan 2019 21:38:02 +0900] rev 41308
ui: remove unreachable branches and function calls from write() (
issue6059)
This is at least faster than ui.write() of 4.8.2.
$ HGRCPATH=/dev/null hg files -R mozilla-central --time >/dev/null
4.8.2: time: real 2.340 secs (user 2.310+0.000 sys 0.020+0.000)
4.9rc0: time: real 2.580 secs (user 2.550+0.000 sys 0.020+0.000)
this: time: real 2.230 secs (user 2.210+0.000 sys 0.020+0.000)
Maybe the formatter should own a resolved write() function because it will
just call dest.write(msg) most of the time, but that would be too much for
stable.
Yuya Nishihara <yuya@tcha.org> [Thu, 24 Jan 2019 21:35:55 +0900] rev 41307
ui: inline _writenobuf() into write() due to performance issue
I'll remove redundant conditions later in this series.
Yuya Nishihara <yuya@tcha.org> [Thu, 24 Jan 2019 21:34:48 +0900] rev 41306
ui: inline _write() into write() due to performance issue
I'll remove redundant conditions later in this series.
Yuya Nishihara <yuya@tcha.org> [Wed, 28 Nov 2018 22:36:24 +0900] rev 41305
ui: optimize buffered write with no label
This was spotted while making fastannotate faster again after ditching its
own formatter. Since I'm going to inline _write() into ui.write(), I decided
to include this patch in this series.
Here, the cost of '(self.label(a, label) for a in args)' was significant
in hot loops.
Boris Feld <boris.feld@octobus.net> [Wed, 23 Jan 2019 18:07:42 -0500] rev 41304
partialdiscovery: avoid `undecided` related computation sooner than necessary
Changeset
1d30be90c move the update of the `undecided` set within the
`partialdiscovery` object in order to clarify the API.
The update to the `undecided` set was unconditional in
1d30be90c and the first
access to the `self.undecided` property triggered the initial computation of
the set of undecided revisions. As a result, the set was computed much
earlier, at a time where less information is available, immediately followed
by an update of this set to remove common revisions.
To fix this regression, we ignore the `undecided` related logic in
`addcommons` when that `undecided` set has not been computed yet. Code that
actually needs to know the `undecided` set will trigger its computation later.
The change has no effects on semantic because the initial computation
`undecided` set takes all knowns `common` into account.
Example performance running `hg debugdiscovery` from a pypy repo missing 10
changesets:
870a89c6909d: 52.3ms (regression parent)
1d30be90c9dc: 72.0ms (regression)
5a5f504a7175: 64.8ms (this fix parent)
this fix: 52.6ms
Yuya Nishihara <yuya@tcha.org> [Mon, 21 Jan 2019 22:14:29 +0900] rev 41303
revlog: fix resolution of revlog version 0
This partially backs out
cecf3f8bccd3, "revlog: always process opener options."
My understanding is that if there's no "revlog1" nor "revlog2" in .hg/requires,
the repository should stick to the v0 format. The reasoning is briefly
described in
31a5973fcf96, "revlog: get rid of defversion."
Maybe we can drop support for missing opener options, but I didn't do that
in this patch.
Martin von Zweigbergk <martinvonz@google.com> [Tue, 22 Jan 2019 10:55:45 -0800] rev 41302
merge with stable
Yuya Nishihara <yuya@tcha.org> [Sun, 20 Jan 2019 11:57:36 +0900] rev 41301
rust: add comment about lack of wdirrev handling
If hg is compiled with rust support, 'only(wdir())' crashed as
"rustext.GraphError: ('ParentOutOfRange',
2147483647)", which should instead
say "abort: working directory revision cannot be specified."
Yuya Nishihara <yuya@tcha.org> [Sun, 20 Jan 2019 11:51:21 +0900] rev 41300
templatekw: fix crash on multiple latesttags resolution at wdir (
issue6055)
It appears not easy to fix only() to support wdir(), so this patch works
around the issue by getlatesttags(). The "+1" after len(changes) doesn't
matter since ctx never changes while sorting. It's just for clarity.
Yuya Nishihara <yuya@tcha.org> [Sun, 20 Jan 2019 11:39:16 +0900] rev 41299
test-template-keywords: add test for {latesttag} of wdir() revision
It's probably broken since
fb672eac2702, "templatekw: choose {latesttag}
by len(changes), not date (
issue5659)". only() doesn't support wdir.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Jan 2019 23:32:26 -0800] rev 41298
narrow: fix crash when restoring backup in legacy repo
Using --addremove when committing in an old repo (before we started
keeping .hg/narrowspec.dirstate) results in a crash. The test
case modified in this patch would crash like this:
abort: $ENOENT$
The issue is that when the dirstateguard is aborted, it tries to
restore the backup of .hg/narrowspec.dirstate. However, since we were
in an old repo, that file did not get created when the dirstateguard
was created. Note that the dirstateguard is not used unless
--addremove is passed.
This patch fixes the bug by making restorewcbackup() not fail if the
backup doesn't exist. I also made clearwcbackup() safe, just in case.
Differential Revision: https://phab.mercurial-scm.org/D5634
Boris Feld <boris.feld@octobus.net> [Fri, 18 Jan 2019 14:21:47 +0100] rev 41297
revset: introduce an internal `_rev` predicate for '%d' usage
In
24a1f67bb75a, we aligned "%d" behavior on "%ld" one, invalid revisions got
silently ignored. However, soon after in
8aca89a694d4 and
26b0a7514f01, a side
effect changed the behavior of "%ld" to no longer silently filter invalid
revisions.
After discussion on the mailing list, it was decided to align on the new %ld
behavior:
https://www.mercurial-scm.org/pipermail/mercurial-devel/2019-January/127291.html
This changeset introduce a '_rev()' predicated that keep the benefit from
24a1f67bb75a while enforcing a more strict checking on the inputs.
Boris Feld <boris.feld@octobus.net> [Fri, 18 Jan 2019 16:03:37 +0100] rev 41296
mmap: backed out changeset
875d2af8cb4e
There have been concrete and theoretical issues raised, this will need more
work during the next cycle.
Boris Feld <boris.feld@octobus.net> [Fri, 18 Jan 2019 16:02:26 +0100] rev 41295
mmap: backed out changeset
74a9f428227e
There have been concrete and theoretical issues raised, this will need more
work during the next cycle.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 18 Jan 2019 23:22:56 -0500] rev 41294
help: document the minimumhgversion variable for extensions
Matt Harbison <matt_harbison@yahoo.com> [Fri, 18 Jan 2019 23:13:04 -0500] rev 41293
help: modernize the example for command registration
Augie Fackler <raf@durin42.com> [Fri, 18 Jan 2019 13:32:02 -0500] rev 41292
Added signature for changeset
593718ff5844
Augie Fackler <raf@durin42.com> [Fri, 18 Jan 2019 13:32:00 -0500] rev 41291
Added tag 4.9rc0 for changeset
593718ff5844
Augie Fackler <augie@google.com> [Fri, 18 Jan 2019 13:28:22 -0500] rev 41290
merge default into stable for 4.9 release
Boris Feld <boris.feld@octobus.net> [Thu, 10 Jan 2019 14:57:01 +0100] rev 41289
update: fix edge-case with update.atomic-file and read-only files
We used to create the tempfile with the original file mode. That means
creating a read-only tempfile when the original file is read-only, which crash
if we need to write on the tempfile.
The file in the working directory ends up being writable with and without the
atomic update config, so the behavior is the same.