Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Feb 2020 02:23:38 +0100] rev 44637
nodemap: test that concurrent process don't see the pending transaction
We don't want other client to read uncommitted data, until the transaction is
really committed.
Differential Revision: https://phab.mercurial-scm.org/D8190
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 20 Mar 2020 23:41:35 +0100] rev 44636
testlib: adjust wait-on-file timeout according to the global test timeout
Lets assume that if test timeout have been set to be twice as long, it means
local timeout should be twice as long too.
I am not aware of any case were extending timeout for file based synchronisation
was necessary, but the safety seems simple to implements.
Differential Revision: https://phab.mercurial-scm.org/D8316
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Feb 2020 02:23:28 +0100] rev 44635
testlib: add a small scrip to help process to synchronise using file
Creating and waiting for files is a robust way to synchronise two processes
running concurrently. We already use this approach in various tests. I am adding
a official script to do so before adding more usage of this.
Differential Revision: https://phab.mercurial-scm.org/D8189
Augie Fackler <augie@google.com> [Tue, 31 Mar 2020 16:14:10 -0400] rev 44634
setup: work around old versions of distutils breaking setup.py
I'm not really sure how to trigger this, but we saw it in our build
environment for Windows at Google. This fixed it. Sigh.
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 31 Mar 2020 15:11:33 +0530] rev 44633
chgserver: update the umask cache before each run
posix.py uses a global variable to store the umask value resulting in caching of
it when using chg. We need to update it before each command run as the umask can
change between commands.
This fixes test-inherit-mode.t with chg.
Augie Fackler <augie@google.com> [Thu, 26 Mar 2020 10:09:17 -0400] rev 44632
tests: handle new error string from FreeBSD for dns entry not resolving
Differential Revision: https://phab.mercurial-scm.org/D8333
Joerg Sonnenberger <joerg@bec.de> [Wed, 26 Feb 2020 22:35:39 +0100] rev 44631
notify: optional mail threading based on obsmarker
When notify.reply is set and a changeset has a predecessor in the
repository, include In-Reply-To pointing to the message-id that would
have been generated for the oldest predecessor. This allows mail
threading like Phabricator for common cases like rebasing changes, but
will be optimal for cases like folding.
Differential Revision: https://phab.mercurial-scm.org/D8172
Josef 'Jeff' Sipek <jeffpc@josefsipek.net> [Fri, 27 Mar 2020 10:39:59 -0400] rev 44630
pathutil: document that dirs map type implies manifest/dirstate processing
Josef 'Jeff' Sipek <jeffpc@josefsipek.net> [Fri, 27 Mar 2020 10:38:40 -0400] rev 44629
git: pass a list to pathutil.dirs to indicate that it is a manifest
The python implementation of pathutil.dirs just uses a for loop which
happens to work the same on both dicts and lists. The rust implementation
actually figures out which of the two types it is, and directs the execution
to either dirstate or manifest processing.
Josef 'Jeff' Sipek <jeffpc@josefsipek.net> [Thu, 26 Mar 2020 17:49:30 -0400] rev 44628
git: implement basic bookmark activation
This is very limited, but it allows 'hg update foo' when already on foo.
The caching is based on bmstore's caching.
Josef 'Jeff' Sipek <jeffpc@josefsipek.net> [Thu, 26 Mar 2020 17:24:54 -0400] rev 44627
git: implement a basic checkconflict bookmark store method
It is heavily based on bmstore's own checkconflict.
Josef 'Jeff' Sipek <jeffpc@josefsipek.net> [Thu, 26 Mar 2020 17:09:34 -0400] rev 44626
git: abort when attempting to set a branch
Given the mapping we use (namely, a git head is a bookmark), it is better to
error out with a hint.
Josef 'Jeff' Sipek <jeffpc@josefsipek.net> [Thu, 26 Mar 2020 16:23:54 -0400] rev 44625
git: remove obsolete todo item
The changes in 02c47b74366c cleaned up the requirement check.
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 26 Mar 2020 14:01:31 +0530] rev 44624
tests: don't run test-update-atomic.t on chg
I am unable to find a good way to make `showwrites` extension in it to work with
chg. Also putting the use of showwrites inside `if no-chg` will defeat the
purpose of test, so I just made the test no-op on chg.
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 25 Mar 2020 20:15:57 +0530] rev 44623
tests: don't run couple of tests related to extensions loading with chg
The couple of files test extensions loading and debugging that. It sets
`devel.debug.extensions` to True to do that.
Either we have to restart chg if this config is set or just don't run these
tests on chg. I tried the first way by adding the config option to chgserver.py
list of config subsections but that does not seem to work.
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 25 Mar 2020 20:33:15 +0530] rev 44622
tests: conditionalize test-phases.t output for chg
IIUC chg loads the ProgrammingError class which leads to it directly referencing
it in error output. This makes the test pass on chg.
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 24 Mar 2020 15:21:11 +0530] rev 44621
chg: be stricter about checking invocation of `serve` command
Few tests run serve command in form of `hg -R <repo> serve` which leads to chg
thinking that it's not a serve command and failing tests.
We become more stricter in checking for the serve command.
This fixes test-server-view.t, test-remote-hidden.t, test-remotefilelog-http.t,
test-phases-exchange.t, test-wireproto-content-redirects.t with chg.
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 23 Mar 2020 23:43:29 +0530] rev 44620
chgserver: add merge-tools to sensitive config items
Because this can change whether the ui is gui or not.
This fixes test-extdiff.t with chg.
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 25 Mar 2020 13:20:08 +0530] rev 44619
run-tests: add --chg-debug flag to show chg debug output
This has helped me a lot in debugging chg failures in tests.
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 24 Mar 2020 12:48:57 +0530] rev 44618
tests: update test-ssh.t output with --chg
The output change was caused by d7304434390f5efca405744fa12a6585edae3d83.
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 24 Mar 2020 12:31:46 +0530] rev 44617
tests: update test-devel-warnings.t output with chg
The output change was caused by dc9901558e3c6a78bad3f6594b3888f95104c443.
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 23 Mar 2020 21:06:54 +0530] rev 44616
chgserver: add fastannotate config section to sensitive list
Depending on the config value of `fastannotate.modes`, the fastannotate
extension can do different things in uisetup. Depending on value of
`fastannotate.server`, it can register new wireprotocol capabilities.
This fixes test-fastannotate-hg.t, test-fastannotate-protocol.t and
test-fastannotate.t with chg.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 24 Feb 2020 13:22:15 -0500] rev 44615
phabricator: account for `basectx != ctx` when calculating renames
No functional changes here because the two are the currently same, but they
won't be with a `--fold` option.
Differential Revision: https://phab.mercurial-scm.org/D8307
Matt Harbison <matt_harbison@yahoo.com> [Mon, 24 Feb 2020 12:06:34 -0500] rev 44614
phabricator: add basectx arguments to file related `phabsend` utilities
This is in support of a future `--fold` option, that allows rolling up several
commits into a single review with a diff from the start to the end of the range.
There are no functional changes yet- the original `ctx` is also passed as the
new `basectx`, which represents the first commit in the review range (similar to
`qbase` in MQ parlance). Other functions will need the range of commits, but
these deal with status or the diffs, so they only need the end points.
Differential Revision: https://phab.mercurial-scm.org/D8306
Matt Harbison <matt_harbison@yahoo.com> [Tue, 18 Feb 2020 09:57:26 -0500] rev 44613
phabricator: eliminate a couple of duplicate filectx lookups
Differential Revision: https://phab.mercurial-scm.org/D8305
Augie Fackler <augie@google.com> [Wed, 25 Mar 2020 12:06:49 -0400] rev 44612
tests: update test-debugcommands.t stack trace checks for python3.9
Python 3.9 prints a complete filepath in more cases, so we need to handle that
in our test output. Since we don't really care *that* much about the specific
path formatting here, just use globbing.
Differential Revision: https://phab.mercurial-scm.org/D8329
Augie Fackler <augie@google.com> [Wed, 25 Mar 2020 12:05:53 -0400] rev 44611
tests: update test-archive.t expectations for python3.9 changes
Sigh.
Differential Revision: https://phab.mercurial-scm.org/D8328
Augie Fackler <augie@google.com> [Wed, 25 Mar 2020 11:56:47 -0400] rev 44610
setup: relax -Werror for declaration-after-statement on Python 3.9
It turns out Python 3.9 introduces such declarations in the headers, eg
cpython/abstract.h:189:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
so we have to be more relaxed when compiling for 3.9.
Differential Revision: https://phab.mercurial-scm.org/D8327
Martin von Zweigbergk <martinvonz@google.com> [Wed, 25 Mar 2020 08:28:20 -0700] rev 44609
pvec: drop an unused `from __future__ import division`
This module only uses the `//` operator (for integer division).
Differential Revision: https://phab.mercurial-scm.org/D8326
Martin von Zweigbergk <martinvonz@google.com> [Tue, 24 Mar 2020 23:31:36 -0700] rev 44608
py3: use integer division in histedit
Histedit uses the `/` operator, which does type conversion to float in
Python 3 instead of integer division likeon Python 2. Let's preserve
the Python 2 behavior by importing and using the `//` operator.
Differential Revision: https://phab.mercurial-scm.org/D8324
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 Mar 2020 10:06:32 +0100] rev 44607
rust: update README to reflect use of `regex` crate
Differential Revision: https://phab.mercurial-scm.org/D8325
Raphaël Gomès <rgomes@octobus.net> [Mon, 23 Mar 2020 12:11:41 +0100] rev 44606
rust: update all dependencies
We do this periodically to say up to date.
No major versions were crossed this time per se, but the `rand` is still in v0,
and their 0.7x series broke three things:
- Some distribution-related elements were moved to a separate crate,
flashing a deprecation warning
- The `LogNormal::new` associated function now returns a `Result`
- Certain RNGs were updated to sample a `u32` instead of `usize` when their
upper-bound is less than `u32::MAX` for better portability, which changed
the output for 2 tests.
Moreover, the recent use of the `regex` crate for ignore mechanisms prompted
some benchmarking that revealed that `regex` was slower at compiling big regex
than `Re2`. The author of `regex` was very quick to discover an optimization
that yielded a 30% improvement. It's still slower than `Re2` in that regard, but
less so in the 1.3.6 release.
Differential Revision: https://phab.mercurial-scm.org/D8320
Raphaël Gomès <rgomes@octobus.net> [Mon, 23 Mar 2020 12:07:45 +0100] rev 44605
rust: update micro-timer dependency
The new version uses a much more robust technique and should remove any existing
risk of bad compiler error or performance hit.
Differential Revision: https://phab.mercurial-scm.org/D8319
Raphaël Gomès <rgomes@octobus.net> [Fri, 20 Mar 2020 15:21:34 +0100] rev 44604
rust-status: only involve ignore mechanism when needed
This prevents unnecessary fallbacks to Python, improving performance for
`hg update` for instance.
On Mozilla-Central a noop update goes from 1.6s down to 700ms.
Differential Revision: https://phab.mercurial-scm.org/D8315
Yuya Nishihara <yuya@tcha.org> [Thu, 26 Mar 2020 00:07:12 +0900] rev 44603
templater: fix cbor() filter to recursively convert smartset to list
The previous attempt, e3e44e6e7245 "templater: fix cbor() filter to accept
smartset", was incomplete since obj may be a collection containing a smartset.
This works around the problem by converting smartsets recursively. Another
option is to teach cborutil how to encode a smartset. That should be okay,
but I hesitated to add "import smartset" to cborutil.py as the cborutil is
pretty generic.
Martin von Zweigbergk <martinvonz@google.com> [Mon, 23 Mar 2020 15:14:42 -0700] rev 44602
shelve: split up dounshelve() in unshelvecmd() and _dounshelve()
I'd like to be able to override the new `_dounshelve()`, getting
access to the name of the shelve to unshelve. `unshelvecmd()` seems to
better match the existing `createcmd()`, `listcmd()` etc.
Differential Revision: https://phab.mercurial-scm.org/D8322
Raphaël Gomès <rgomes@octobus.net> [Tue, 24 Mar 2020 17:55:59 +0100] rev 44601
rust-matchers: use the `regex` crate
Instead of falling back to Python when a code path with "ignore" functionality
is reached and `Re2` is not installed, the default compilation (i.e. without
the `with-re2` feature) will use the `regex` crate for all regular expressions
business.
As with the introduction of `Re2` in a previous series, this yields a big
performance boost compared to the Python + C code in `status`, `diff`, `commit`,
`update`, and maybe others.
For now `Re2` looks to be faster at compiling the DFA (1.5ms vs 5ms for
Netbeans' `.hgignore`) and a bit faster in actual use: (123ms vs 137ms for
the parallel traversal of Netbeans' clean repo). I am in talks with the author
of `regex` to see whether that performance difference is a bug, a "won't fix",
or a tuning issue.
The `regex` crate is already one of our dependencies and using this code does
not require any additional work from the end-user than to use the Rust
extensions.
Differential Revision: https://phab.mercurial-scm.org/D8323
Yuya Nishihara <yuya@tcha.org> [Sun, 15 Mar 2020 16:11:58 +0900] rev 44600
templater: add subsetparents(rev, revset) function
Naming suggestions are welcome. And this could be flagged as an (ADVANCED)
function since the primary use case is to draw a graph.
This provides all data needed for drawing revisions graph filtered by revset,
and allows us to implement a GUI graph viewer in some languages better than
Python. A frontend grapher will be quite similar to our graphmod since
subsetparents() just returns parent-child relations in the filtered sub graph.
Frontend example:
https://hg.sr.ht/~yuja/hgv/browse/default/core/hgchangesetgrapher.cpp
However, the resulting graph will be simpler than the one "hg log -G" would
generate because redundant edges are eliminated. This should be the same graph
rendering strategy as TortoiseHg.
This function could be implemented as a revset predicate, but that would mean
the scanning state couldn't be cached and thus slow.
Test cases are split to new file since test-template-functions.t is quite
big and we'll need a new branchy repository anyway.
Yuya Nishihara <yuya@tcha.org> [Sun, 15 Mar 2020 16:00:45 +0900] rev 44599
templater: remember cache key of evaluated revset
This provides a hint for caching further computation result of the given
revset. See the next patch for example.
Yuya Nishihara <yuya@tcha.org> [Sun, 15 Mar 2020 22:01:38 +0900] rev 44598
templater: fix cbor() filter to accept smartset
So the wrapper type can return a bare smartset.
Yuya Nishihara <yuya@tcha.org> [Sun, 15 Mar 2020 15:12:44 +0900] rev 44597
templater: introduce wrapper for smartset (API)
I want to add a template function which takes a revset as an argument:
{somefunc(..., revset(...))}
^^^^^^^^^^^
evaluates to a revslist
This wrapper will provide a method to get an underlying smartset. It should
also be good for performance since count(revset(...)) will no longer have to
fully consume the smartset for example, but that isn't the point of this
change.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 20 Mar 2020 23:30:23 -0400] rev 44596
setup: build C extensions with -Werror=declaration-after-statement
MSVC 2008 still needs declarations at the top of the scope. I added it to the
3rd party code too in case somebody vendors a new version with a problem-
they'll get an early warning. Clang seems to ignore this (at least on 10.14
with Xcode 10), and gcc 7.4 will error out as desired on Ubuntu 18.04. Thanks
to Yuya for remembering the name of the option.
Differential Revision: https://phab.mercurial-scm.org/D8318
Yuya Nishihara <yuya@tcha.org> [Tue, 24 Mar 2020 21:41:24 +0900] rev 44595
merge with stable
Yuya Nishihara <yuya@tcha.org> [Sun, 22 Mar 2020 18:40:04 +0900] rev 44594
osutil: move declaration to top of the scope
Otherwise the build would fail with -Werror=declaration-after-statement.
Yuya Nishihara <yuya@tcha.org> [Sat, 21 Mar 2020 14:01:10 +0900] rev 44593
phabricator: remove *-argument from _getdrevs()
It can't take more than one specs arguments per len(*specs).
Yuya Nishihara <yuya@tcha.org> [Sat, 21 Mar 2020 13:42:08 +0900] rev 44592
revset: leverage internal _rev() function to implement rev()
Now 'rev(n)' is identical to 'present(_rev(n))'.
Yuya Nishihara <yuya@tcha.org> [Sat, 21 Mar 2020 13:39:39 +0900] rev 44591
revset: fix crash by repo.revs('%d', tip + 1)
IndexError shouldn't be raised from a revset predicate. The error message
is copied from scmutil.revsymbol().
Yuya Nishihara <yuya@tcha.org> [Sat, 21 Mar 2020 13:27:47 +0900] rev 44590
revset: allow repo.revs('%d', wdirrev)
Otherwise we can't write repo.revs('null:%d', subset.max()) to build
a smartset covering the range {null .. tip} + {wdir} if subset includes
wdir.