Matt Harbison <matt_harbison@yahoo.com> [Wed, 20 Nov 2019 13:03:22 -0500] rev 43846
filemerge: fix a missing attribute usage
Flagged by both pytype and VSCode.
Differential Revision: https://phab.mercurial-scm.org/D7465
Matt Harbison <matt_harbison@yahoo.com> [Wed, 20 Nov 2019 13:01:56 -0500] rev 43845
filemerge: drop a default argument to appease pytype
The function slices and takes the length of this argument without internally
setting it if not provided. There was no bug here because both callers passed
the argument.
Differential Revision: https://phab.mercurial-scm.org/D7464
Augie Fackler <augie@google.com> [Tue, 10 Dec 2019 19:04:53 -0500] rev 43844
fuzz: add a seed corpus for the dirs fuzzer
I was hoping to trigger an asan violation under Python 3 that some internal
tests at Google found, but for some reason that's beyond me I can't seem to
manage.
Differential Revision: https://phab.mercurial-scm.org/D7600
Augie Fackler <augie@google.com> [Tue, 10 Dec 2019 19:04:08 -0500] rev 43843
fuzz: clean up production of seed corpora
This was getting out of hand.
Differential Revision: https://phab.mercurial-scm.org/D7599
Rodrigo Damazio Bovendorp <rdamazio@google.com> [Mon, 09 Dec 2019 22:06:55 -0800] rev 43842
status: add template/json data about whether a file has unresolved conflicts
Differential Revision: https://phab.mercurial-scm.org/D7594
Rodrigo Damazio Bovendorp <rdamazio@google.com> [Mon, 09 Dec 2019 18:15:38 -0800] rev 43841
status: split morestatus data loading from display
This is a small refactoring in preparation for adding more morestatus
functionality (notably for templated/JSON output) - the goal is to
use the data inside the status display loop, as well as output the
overall state in a templatable/structured way.
Differential Revision: https://phab.mercurial-scm.org/D7593
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 21 Nov 2019 16:54:00 +0100] rev 43840
phabricator: add a "phabstatus" template keyword
We add a "phabstatus" template keyword, returning an object with "url"
and "status" keys. This is quite similar to "phabreview" template
keyword, but it queries phabricator for each specified revision so it's
going to be slow (as compared to the "phabstatus" show view from
previous changeset).
Differential Revision: https://phab.mercurial-scm.org/D7507
Denis Laxalde <denis@laxalde.org> [Sat, 23 Nov 2019 11:04:19 +0100] rev 43839
phabricator: add a "phabstatus" show view
We add a "phabstatus" show view (called as "hg show phabstatus") which
renders a dag with underway revisions associated with a differential
revision and displays their status.
The revisions shown is a subset of that shown by "work" view, only
including revisions with known by Phabricator.
Differential Revision: https://phab.mercurial-scm.org/D7506
Martin von Zweigbergk <martinvonz@google.com> [Tue, 10 Dec 2019 14:40:44 -0800] rev 43838
dirs: fix out-of-bounds access in Py3
The hack for mutating Python's variable-length integers that was
ported to py3 in cb3048746dae (dirs: port PyInt code to work on Python
3, 2016-10-08) was reading from ob_digit[1] instead of ob_digit[0] for
some reason. Space for ob_digit[1] would only be allocated for
integers larger than 30 bits, so we ended up writing to unallocated
memory. Also, we would write an integer that's 2^30 times too large,
so we would never free these integers.
Found by AddressSanitizer.
Differential Revision: https://phab.mercurial-scm.org/D7597
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 11 Dec 2019 11:16:12 +0100] rev 43837
manifestcache: add some test involving shares
Some issue around shares have been reported. I am adding tests to better cover
the share case. The test show that the code behave as expected so far.
Differential Revision: https://phab.mercurial-scm.org/D7602
Kyle Lippincott <spectral@google.com> [Tue, 10 Dec 2019 16:17:36 -0800] rev 43836
fuzz: fix test-fuzz-targets.t to run with python3
Differential Revision: https://phab.mercurial-scm.org/D7601
Kyle Lippincott <spectral@google.com> [Tue, 10 Dec 2019 15:29:58 -0800] rev 43835
py3: fix a bytes vs str issue in remotefilelog extension
Differential Revision: https://phab.mercurial-scm.org/D7598
Raphaël Gomès <rgomes@octobus.net> [Fri, 29 Nov 2019 18:53:52 +0100] rev 43834
rust-matchers: add doctests for `AlwaysMatcher`
Differential Revision: https://phab.mercurial-scm.org/D7527
Raphaël Gomès <rgomes@octobus.net> [Fri, 29 Nov 2019 17:24:40 +0100] rev 43833
rust-hg-path: add method to get part of a path relative to a prefix
This will be used in the next patch in this series.
Differential Revision: https://phab.mercurial-scm.org/D7526
Raphaël Gomès <rgomes@octobus.net> [Fri, 29 Nov 2019 18:33:56 +0100] rev 43832
rust-matchers: improve `Matcher` trait ergonomics
`VisitChildrenSet` has no need to own the set, this will save allocations.
The `file_set` return type change is motivated by both ergonomics and... being
able to compile code.
The `AlwaysMatcher` does not store a `file_set`, which requires it to return an
owned `HashSet`, which in turn would change our return type to `Cow<&HgPath>`
(lifetimes omitted). This is both un-ergonomic and troublesome for more
complex lifetime issues (especially with the upcoming `FileMatcher` in the
following patch).
Differential Revision: https://phab.mercurial-scm.org/D7525
Raphaël Gomès <rgomes@octobus.net> [Fri, 29 Nov 2019 17:19:34 +0100] rev 43831
rust-dirs-multiset: use `AsRef` instead of concrete types when possible
I also renamed `vec` to `dirstate`, because it was not a great name.
Differential Revision: https://phab.mercurial-scm.org/D7524
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 21 Nov 2019 16:48:34 +0100] rev 43830
logcmdutil: call _exthook() in changesettemplater
Class changesetprinter has an _exthook() method that is called in
_show() before the patch is displayed. Call the method as well in
changesettemplater._show().
Differential Revision: https://phab.mercurial-scm.org/D7505
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 21 Nov 2019 18:10:12 +0100] rev 43829
phabricator: fix processing of tags/desc in getoldnodedrevmap()
It seems that the previous logic was wrong (it essentially comes
from changeset 3ab0d5767b54 where the result got accumulated instead of
early returned).
First of all, the "continue" in first "if m:" is useless because we're
at the end of the loop. Then, the algorithm seems weird because we will
process all predecessors of a node and possibly override
`toconfirm[node]` for each of these having a tag (maybe this doesn't
happen, but still). Finally, we would also override `toconfirm[node]`
when the "Differential Revision: " is found in changeset description.
Maybe this is not a big deal when there is no mix of local tag and
changeset description update?
The logic is changed so that the loop on predecessors stops upon first
match of a tag and so that the changeset description is only checked if
no tag was found. Therefore, `toconfirm[node]` is only set once.
Differential Revision: https://phab.mercurial-scm.org/D7513
Augie Fackler <augie@google.com> [Tue, 10 Dec 2019 10:31:18 -0500] rev 43828
tests: replace [[]] bashism with portable [] invocation
In this case nothing fancy is required.
Differential Revision: https://phab.mercurial-scm.org/D7596
Raphaël Gomès <rgomes@octobus.net> [Fri, 29 Nov 2019 17:15:24 +0100] rev 43827
rust-hg-path: implement `Display` for `HgPath` and `HgPathBuf`
This is useful when debugging, to get a human readable output instead of an
array of `u8`.
Differential Revision: https://phab.mercurial-scm.org/D7523
Raphaël Gomès <rgomes@octobus.net> [Mon, 14 Oct 2019 13:57:30 +0200] rev 43826
rust-performance: introduce FastHashMap type alias for HashMap
Rust's default hashing is slow, because it is meant for preventing collision
attacks.
For all of the current Rust code, we don't care about those attacks, because
if an person with bad intentions has write access to your repo, you have other
issues.
I've chosen to use the TwoXHash crate because it was made by a reputable member
of the Rust community and has very good benchmarks.
For now it does not seem to improve performance by much for the current code,
but it's something else to not worry about when benchmarking code: in a
previous experiment with copytracing in Rust, it accounted for more than 10%
of the time of the entire script.
Differential Revision: https://phab.mercurial-scm.org/D7116
Julien Cristau <jcristau@debian.org> [Mon, 02 Dec 2019 14:44:26 +0100] rev 43825
mail: use procutil.shellsplit instead of bytes.split to parse command
Differential Revision: https://phab.mercurial-scm.org/D7541
Augie Fackler <augie@google.com> [Thu, 05 Dec 2019 16:18:44 -0500] rev 43824
annotate: describe --skip as taking a revset
It's obvious to me, but probably wouldn't be obvious to a novice user.
Differential Revision: https://phab.mercurial-scm.org/D7557
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 05 Dec 2019 17:42:38 -0800] rev 43823
automation: use latest Windows AMI as base
It looks like the previous base image no longer exists. I guess
Amazon expires them or something. Let's switch to the newest version
of the equivalent image.
Differential Revision: https://phab.mercurial-scm.org/D7571
Matt Harbison <matt_harbison@yahoo.com> [Fri, 06 Dec 2019 23:49:03 -0500] rev 43822
tests: stabilize test-extdiff.t on Windows
This goes with 765a9c299c44. I'm not sure if we care about the missing file
being spelled `nul`, so I removed it from the glob to be explicit about it. The
line needed to be special cased anyway because of the quoting on Windows.
Differential Revision: https://phab.mercurial-scm.org/D7572
Matt Harbison <matt_harbison@yahoo.com> [Sat, 07 Dec 2019 22:09:43 -0500] rev 43821
exchange: fix an attempt to format a list into bytes
This goes with 27c6d6f53d46.
Differential Revision: https://phab.mercurial-scm.org/D7583
Martin von Zweigbergk <martinvonz@google.com> [Mon, 09 Dec 2019 09:50:39 -0800] rev 43820
status: remove pointless filtering by alwaysmatcher in morestatus
The code has been like this since it was imported from FB's
hg-experimental repo. It has been like that even since it was added in
that repo. So I don't know why it looks that way. Perhaps the idea was
to one day filter the unresolved paths by any patterns provided by the
user. We can add a matcher back if we ever decide to do that.
Differential Revision: https://phab.mercurial-scm.org/D7591
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 07 Dec 2019 13:07:25 -0800] rev 43819
tests: add test for Rust formatting
We enforce formatting for Python and C. It makes sense to do it
for Rust as well.
Since our rustfmt.toml relies on unstable rustfmt features, we
need to use a Nightly rustfmt with --unstable-features in order
for it to work. This is a bit hacky and I would prefer we remove
this requirement. But for now, this commit assumes this is the
way things must be and we go out of our way to detect and use the
rustfmt from the "nightly" toolchain, as installed via rustup.
We had to add some environment variables to the tests to make
the Rust binaries happy. Otherwise when running rustfmt we get
an error about no default toolchain being installed.
Differential Revision: https://phab.mercurial-scm.org/D7579
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 07 Dec 2019 13:06:25 -0800] rev 43818
rust: run rustfmt
# skip-blame automated reformatting
Differential Revision: https://phab.mercurial-scm.org/D7578
Augie Fackler <augie@google.com> [Fri, 06 Dec 2019 16:09:03 -0500] rev 43817
fuzz: clean up some repetition on building parsers.so fuzzers
There was a lot of repetition here that I realized could be cleared out. I
think there's some more work we could do here, but this is enough for now.
Differential Revision: https://phab.mercurial-scm.org/D7568