Martin von Zweigbergk <martinvonz@google.com> [Wed, 01 Apr 2020 13:27:28 -0700] rev 44665
tests: demonstrate how continuing rebase after upgrade can result in merge
If the user starts a rebase with an hg version before
9c9cfecd4600
(rebase: don't use rebased node as dirstate p2 (BC), 2020-01-10) and
then runs into conflicts, they will be dropped out to the shell with
the rebased node set as the dirstate's second parent. If they then
upgrade to a later hg version, it will respect the dirstate's parents
and will create a merge commit even if the user was rebasing a
non-merge commit.
Differential Revision: https://phab.mercurial-scm.org/D8355
Augie Fackler <augie@google.com> [Mon, 03 Feb 2020 22:17:19 -0500] rev 44664
manifest: also declare treemanifest as implementing imanifestdict
It always has been intended to be, but it had a mismatched flags()
method until the previous change.
Differential Revision: https://phab.mercurial-scm.org/D8366
Augie Fackler <augie@google.com> [Thu, 02 Apr 2020 13:04:41 -0400] rev 44663
manifest: introduce new exception to signal unavailability of fastdelta()
I've spent some time reflecting on this, and I think this is the best
we can do in this API contract for now. This opens the door to adding
treemanifest's implementation to the list of implementers of
imanifestdict.
Differential Revision: https://phab.mercurial-scm.org/D8365
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 07 Mar 2020 00:30:33 +0100] rev 44662
copies-tests: remove spurious `]` in the template
Fixing this typo happily impact all the tests output.
Differential Revision: https://phab.mercurial-scm.org/D8258
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 02 Apr 2020 21:58:10 +0530] rev 44661
merge with stable
Yuya Nishihara <yuya@tcha.org> [Sun, 29 Mar 2020 01:57:17 +0900] rev 44660
debugcommands: fix typo in debuguigetpass
Yuya Nishihara <yuya@tcha.org> [Thu, 26 Mar 2020 22:31:17 +0900] rev 44659
dagop: fix subsetparentswalker to set p1/p2 chains at merge revision
The previous implementation was wrong because the '1'/'2' key would be
appended at a fork revision. Since we traverse the graph from heads, a merge
revision is actually a branching point, where the sort key must be generated.
Yuya Nishihara <yuya@tcha.org> [Thu, 26 Mar 2020 22:23:30 +0900] rev 44658
dagop: simplify dict/set reuse condition in subsetparentswalker
Prepares for fixing the calculation of p1/p2 sort keys.
With this change, there will be one more copying on merge&fork case. I think
the copying cost is negligible since we'll have to update each item in the
dict on merge/fork.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 29 Mar 2020 14:22:07 -0700] rev 44657
extensions: refactor function for obtaining disabled extension help
The way this worked before was hgext.__index__ was consulted.
This file appears to only be present on some Windows distributions.
This file contains a dict mapping extension name to its summary line,
not its full docstring.
The problem with this is that code in the help system was calling
this function to resolve help text. If hgext.__index__ was present,
only the summary line would be displayed. If not, the full extension
help would be printed.
This commit changes the function to not use hgext.__index__ such that
it always returns the full extension help text.
As a result of this change, test-extension.t and test-qrecord.t
now pass when run from environments that have an hgext.__index__.
Differential Revision: https://phab.mercurial-scm.org/D8344
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 29 Mar 2020 15:29:39 -0700] rev 44656
tests: perform grep manually in test-doctest.py
This test has been failing on Windows since
0af56d3ee24c
introduced the `hg files` invocation. Specifically, Windows seems
to be choking on special characters in the fileset pattern. I
believe at least \n and > were causing issues.
I attempted various incantations to make the Windows command line
parser accept the fileset but couldn't get anything working.
I declared bankruptcy and just reimplemented the grepping code
in Python.
After this change, the test now passes on Windows again.
Differential Revision: https://phab.mercurial-scm.org/D8343
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 29 Mar 2020 14:31:59 -0700] rev 44655
tests: prevent printing \r to stdout
Like we've done in other recent commits, we need to change
sys.stdout on Python 3 to not use os.linesep so output is
consistent on Python 3 on Windows.
With this change, test-notify.t now passes on Python 3 on Windows!
Differential Revision: https://phab.mercurial-scm.org/D8342
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 29 Mar 2020 13:51:26 -0700] rev 44654
tests: force \n newlines when writing to sys.stdout
Without this, Python 3 on Windows inserts some \r that aren't
present in the input, causing test-http-bad-server.t to fail.
After this change, the test passes on Python 3 on Windows!
Differential Revision: https://phab.mercurial-scm.org/D8341
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 29 Mar 2020 13:06:59 -0700] rev 44653
dispatch: force \n for newlines on sys.std* streams (BC)
The sys.std* streams behave differently on Python 3. On Python 3,
these streams are an io.TextIOWrapper that wraps a binary buffer
stored on a .buffer attribute. These TextIOWrapper instances
normalize \n to os.linesep by default. On Windows, this means
that \n is normalized to \r\n. So functions like print() which
have an implicit end='\n' will actually emit \r\n for line endings.
While most parts of Mercurial go through the ui.write() layer to
print output, some code - notably in extensions and hooks - can use
print(). If this code was using print() or otherwise writing to
sys.std* on Windows, Mercurial would emit \r\n.
In reality, pretty much everything on Windows reacts to \n just fine.
Mercurial itself doesn't emit \r\n when going through the ui layer.
Changing the sys.std* streams to not normalize line endings sounds
like a scary change. But I think it is safe. It also makes Mercurial
on Python 3 behave similarly to Python 2, which did not perform \r\n
normalization in print() by default.
.. bc:: sys.{stdout, stderr, stdin} now use \n line endings on Python 3
Differential Revision: https://phab.mercurial-scm.org/D8339
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 29 Mar 2020 11:58:50 -0700] rev 44652
hook: move stdio redirection to context manager
The old code was checking stdio redirection in a loop.
This didn't make sense. The pattern is better expressed
as a context manager IMO, so this commit refactors it
to be one.
Differential Revision: https://phab.mercurial-scm.org/D8338
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2020 12:18:58 -0700] rev 44651
pycompat: change argv conversion semantics
Use of os.fsencode() to convert Python's sys.argv back to bytes
was not correct because it isn't the logically inverse operation
from what CPython was doing under the hood.
This commit changes the logic for doing the str -> bytes
conversion. This required a separate implementation for
POSIX and Windows.
The Windows behavior is arguably not ideal. The previous
behavior on Windows was leading to failing tests, such as
test-http-branchmap.t, which defines a utf-8 branch name
via a command argument. Previously, Mercurial's argument
parser looked to be receiving wchar_t bytes in some cases.
After this commit, behavior on Windows is compatible with
Python 2, where CPython did not implement `int wmain()` and
Windows was performing a Unicode to ANSI conversion on the
wchar_t native command line.
Arguably better behavior on Windows would be for Mercurial to
preserve the original Unicode sequence coming from Python and
to wrap this in a bytes-like type so we can round trip safely.
But, this would be new, backwards incompatible behavior. My
goal for this commit was to converge Mercurial behavior on
Python 3 on Windows to fix busted tests. And I believe I was
successful, as this commit fixes 9 tests on my Windows
machine and 14 tests in the AWS CI environment!
Differential Revision: https://phab.mercurial-scm.org/D8337
Augie Fackler <raf@durin42.com> [Thu, 02 Apr 2020 12:05:41 -0400] rev 44650
Added signature for changeset
8fca7e8449a8
Augie Fackler <raf@durin42.com> [Thu, 02 Apr 2020 12:05:40 -0400] rev 44649
Added tag 5.3.2 for changeset
8fca7e8449a8
Matt Harbison <matt_harbison@yahoo.com> [Wed, 18 Mar 2020 14:53:53 -0400] rev 44648
phabricator: extract logic to print the status when posting a commit
This will make it easier to list each commit when folding. That makes the
output less confusing because it matches the output of `--confirm` and the
revisions listed on the command line.
Differential Revision: https://phab.mercurial-scm.org/D8313
Matt Harbison <matt_harbison@yahoo.com> [Mon, 16 Mar 2020 14:33:35 -0400] rev 44647
phabricator: extract the logic to amend diff properties to a function
This will be needed on a separate code path when dealing with folding revisions.
And since we know that will involve adding multiple local commmits to the diff
properties instead of just one, restructure the logic slightly to allow it.
Differential Revision: https://phab.mercurial-scm.org/D8312
Matt Harbison <matt_harbison@yahoo.com> [Mon, 16 Mar 2020 13:36:12 -0400] rev 44646
phabricator: teach `getoldnodedrevmap()` to handle folded reviews
The tricky part here is reasoning through all of the possible predecessor
scenarios. In the typical case of submitting a folded range and then
resubmitting it (also folded), filtering the list of commits for the diff stored
on Phabricator through the local predecessor list for each single node will
result in the typical 1:1 mapping to the old node.
There are edge cases like using `hg fold` within the range prior to
resubmitting, that will result in mapping to multiple old nodes. In that case,
the first direct predecessor is needed for the base of the diff, and the last
direct predecessor is needed for the head of the diff in order to make sure that
the entire range is included in the diff content. And none of this matters for
commits in the middle of the range, as they are never used.
Fortunately the only crucial thing here is the `drev` number for each node. For
these complicated cases where there are multiple old nodes, simply ignore them
all. This will cause `createdifferentialrevision()` to generate a new diff
(within the same Differential), and avoids complicating the code.
Differential Revision: https://phab.mercurial-scm.org/D8311
Matt Harbison <matt_harbison@yahoo.com> [Mon, 09 Mar 2020 12:07:28 -0400] rev 44645
phabricator: teach createdifferentialrevision() to allow a folded commit range
No visible changes here, until an option to enable it is added to `phabsend`.
Differential Revision: https://phab.mercurial-scm.org/D8310
Matt Harbison <matt_harbison@yahoo.com> [Fri, 06 Mar 2020 17:03:04 -0500] rev 44644
phabricator: combine commit messages into the review when folding commits
No visible changes here, until an option to enable it is added to `phabsend`.
This combines the Differential fields like Arcanist does, rather than simply
concatenating the text blocks. Aside from populating everything properly in the
web interface, Phabricator fails the review create/update if repeated fields are
seen as would happen with simple concatenation.
On the flip side, now that the Summary and Test Plan fields can contain data
from multiple commits, we can't just join these fields together to determine if
an amend is needed. If that were to happen, every single commit in the folded
range would get amended with the combined commit message, which seems clearly
wrong. Aside from making a minor assumption about the content of the
Differential Revision field (it seems they allow some minor variances with
spacing), this means that for folded reviews, you can't post it, go to the web
page add a missing Test Plan, and then get it added to the commit message by
re-posting it. I don't think that's a big deal.
Differential Revision: https://phab.mercurial-scm.org/D8309
Matt Harbison <matt_harbison@yahoo.com> [Wed, 26 Feb 2020 13:13:49 -0500] rev 44643
phabricator: record all local commits used to create a Differential revision
Arcanist records all of the commits that it squashes into a single review, and
that info will be helpful when adding similar functionality. This info is used
when submitting an updated review, so that the extension can recalculate the old
diff and see if a new one is necessary, or if it is just a property update. It
also shows on the `commits` tab in the `Revision Contents` section.
When submitting in the usual 1:1 commit to review mode, the wire protocol is
unchanged.
The content of `hg:meta` is a bit odd, but such is the problem when folding
several commits. The choice for the parent node is obvious, but the `node`
value uses the tip commit because that seems more natural, and is used elsewhere
to look up the previous diff when updating. The rest of the attributes follow
from there.
Differential Revision: https://phab.mercurial-scm.org/D8308
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2020 13:29:25 -0700] rev 44642
tests: use `f --hexdump` to print file content
The inline print.py in this test wasn't fully compatible with
Python 3 because it was reading from sys.stdin, which already
normalized line endings since it operates in the realm of str on
Python 3. To do this correctly, we'd need to read from
sys.stdin.buffer on Python 3. This would entail conditional code.
I felt this was too much effort. So I just replaced the custom
script with `f`, which already knows how to do the right thing.
test-mactext.t now passes on Python 3 on Windows.
Differential Revision: https://phab.mercurial-scm.org/D8336
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2020 13:12:43 -0700] rev 44641
url: pass str to pathname2url
This is needed to appease Python 3.
This fixes test-extdata.t and test-url-download.t on Python 3
on Windows.
Differential Revision: https://phab.mercurial-scm.org/D8335
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2020 09:21:46 -0700] rev 44640
tests: pass str to matchoutput()
It accepts a str, not bytes.
This fixes a failure in test-hghave.t on Windows. Why it
wasn't failing on Linux, I don't know. I suspect the Windows
process code in Python doesn't accept bytes and the POSIX code
does?
Differential Revision: https://phab.mercurial-scm.org/D8334
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 31 Mar 2020 19:44:28 -0700] rev 44639
hgcli: customize for Mercurial
Now that we have a shiny new PyOxidizer-based hgcli project, let's
customize it for Mercurial!
This commit replaces the auto-generated pyoxidizer.bzl with one
that installs Mercurial from the local source repository.
A README.md with build instructions has been added.
The Cargo.toml file has been updated to reflect the proper license
and reference the added README.md.
In my Linux environment, running the test suite yields 27 failures.
It's worth noting the run time of the test harness on Linux on my
Ryzen 3950X:
before: 378s wall; 9982s user; 1195s sys
after: 353s wall; 8996s user; 958s sys
% orig: 93.4 wall; 90.1 user; 80.2 sys
While I haven't measured explicitly, I suspect the performance win is
due to in-memory resource loading (which is known to be faster than
Python's filesystem importer).
Differential Revision: https://phab.mercurial-scm.org/D8351
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 31 Mar 2020 19:07:36 -0700] rev 44638
hgcli: add stub PyOxidizer project
Using commit
c772a1379c3026314eda1c8ea244b86c0658951d of
PyOxidizer, I ran `pyoxidizer init-rust-project hgcli` to
create a stub Rust project. The only modifications I made from
what that command produced are:
* Update location of pyembed crate to PyOxidizer's Git repository.
* Removed some trailing whitespace from pyoxidizer.bzl
* Added auto-generated Cargo.lock file
Subsequent commits will modify the stub project to Mercurial's
needs.
Differential Revision: https://phab.mercurial-scm.org/D8350
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 31 Mar 2020 18:56:41 -0700] rev 44637
hgcli: remove legacy project
This code is a logical precursor to PyOxidizer. It is now
defunct.
Differential Revision: https://phab.mercurial-scm.org/D8349
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 26 Mar 2020 11:55:06 +0100] rev 44636
nodemap: automatically "vacuum" the persistent nodemap when too sparse
We arbitrarily pick "10%" as the threshold.
Differential Revision: https://phab.mercurial-scm.org/D8193
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Feb 2020 03:18:57 +0100] rev 44635
nodemap: display percentage of unused in `hg debugnodemap`
This is useful to assess the density of the cache.
Differential Revision: https://phab.mercurial-scm.org/D8192
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Feb 2020 03:05:52 +0100] rev 44634
nodemap: make sure on disk change get rolled back with the transaction
In case of errors, we need to rollback the change made to the persistent
nodemap.
Differential Revision: https://phab.mercurial-scm.org/D8191
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Feb 2020 02:23:38 +0100] rev 44633
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 44632
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 44631
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 44630
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 44629
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 44628
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 44627
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 44626
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 44625
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 44624
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 44623
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 44622
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 44621
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 44620
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 44619
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 44618
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 44617
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 44616
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 44615
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 44614
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 44613
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 44612
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.
Kyle Lippincott <spectral@google.com> [Wed, 01 Apr 2020 14:14:55 -0700] rev 44611
histedit: add missing b prefix to a string
If i18n is disabled (such as via HGPLAIN=1), `_()` doesn't convert from str to
bytes, so this raises a TypeError on py3.
Differential Revision: https://phab.mercurial-scm.org/D8354
Matt Harbison <matt_harbison@yahoo.com> [Mon, 24 Feb 2020 13:22:15 -0500] rev 44610
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 44609
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 44608
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 44607
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 44606
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 44605
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 18:50:40 -0700] rev 44604
py3: require values in changelog extras to be bytes
I don't know what happened here because
b436059c1cca (py3: use
pycompat.bytestr() on extra values because it can be int, 2019-02-05)
came about
b44a47214122 (py3: use string for "close" value in commit
extras, 2018-02-11). Whatever happened, we shouldn't need to convert
the values to bytes now. It's better to not convert because that might
cover up bugs where someone sets a unicode value in the extras and
that works until the unicode value happens to contain non-ascii (at
which point it will fail because `bytestr()` expects its argument to
be ascii if it's unicode).
Differential Revision: https://phab.mercurial-scm.org/D8332
Martin von Zweigbergk <martinvonz@google.com> [Wed, 25 Mar 2020 18:25:58 -0700] rev 44603
py3: make setup.py's hgcommand() consistently return bytes
Before this patch, it returned unicode when the command failed. That
made e.g. `make local PYTHON=python3` fail on an obsolete commit.
Differential Revision: https://phab.mercurial-scm.org/D8331
Martin von Zweigbergk <martinvonz@google.com> [Wed, 25 Mar 2020 08:28:20 -0700] rev 44602
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 44601
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 44600
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 44599
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 44598
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 44597
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 44596
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 44595
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
Kyle Lippincott <spectral@google.com> [Mon, 23 Mar 2020 14:38:00 -0700] rev 44594
darwin: use vim, not vi, to avoid data-loss inducing posix behavior
Apple's version of vim, available at
opensource.apple.com/release/macos-1015.html (for Catalina, but this behavior
has been there for a while) has several tweaks from the version of vim from
vim.org. Most of these tweaks appear to be for "Unix2003" compatibility.
One of the tweaks is that if any ex command raises an error, the entire
process will (when you exit, possibly minutes/hours later) also exit non-zero.
Ex commands are things like `:foo`.
Luckily, they only enabled this if vim was executed (via a symlink or copying
the binary) as `vi` or `ex`. If you start it as `vim`, it doesn't have this
behavior, so let's do that.
To see this in action, run the following two commands on macOS:
```
$ vi -c ':unknown' -c ':qa' ; echo $?
1
$ vim -c ':unknown' -c ':qa' ; echo $?
0
```
We don't want to start ignoring non-zero return types from the editor because
that will mean you can't use `:cquit` to intentionally exit 1 (which,
shows up as 2 if you combine an ex command error and a cquit, but only a 1 if
you just use cquit, so we can't differentiate between the two statuses). Since
we can't differentiate, we have to assume that all non-zero exit codes are
intentional and an indication of the user's desire to not continue with whatever
we're doing. If this was a complicated `hg split` or `hg histedit`, this is
especially disastrous :(
Differential Revision: https://phab.mercurial-scm.org/D8321
Raphaël Gomès <rgomes@octobus.net> [Tue, 24 Mar 2020 17:55:59 +0100] rev 44593
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 44592
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 44591
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 44590
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 44589
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 44588
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 44587
merge with stable
Yuya Nishihara <yuya@tcha.org> [Sun, 22 Mar 2020 18:40:04 +0900] rev 44586
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 44585
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 44584
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 44583
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 44582
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.
Micha Wiedenmann <mw-u2@posteo.de> [Thu, 19 Mar 2020 16:06:24 +0100] rev 44581
ui: use "procutil.shellsplit" to parse command
A commandline containing a space ('"C:\\Program Files\\bar.exe" "..."')
must not simply split at whitespace, instead quoting has to be taken into
account. Use "shlex.split()" to parse it instead.
This can improve the error message if we fail to launch a user
configured
editor which does not exist. Consider
[ui]
editor = "C:\Program Files\editor\editor.exe"
where the path does not exist. "hg histedit" currently aborts with
> Abort: edit failed: Program exited with status 1
here "Program" is not part of the message but the name of the program
that failed (i.e. `basename("C:\\Program ")`). With this change the message
instead reads
> Abort: edit failed: C:\Program Files\editor\editor.exe exited with
> status 1
which is also not ideal since infact "cmd.exe" exited with code 1, not
the editor. But the real error message ("File not found") gets swallowed by
`procutil` and including the correct path improves the error message
nevertheless.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 20 Mar 2020 10:04:13 -0400] rev 44580
cext: move variable declaration to the top of the block for C89 support
Not sure if we still care about C89 in general, but MSVC requires this style
too.
Differential Revision: https://phab.mercurial-scm.org/D8304
Matt Harbison <matt_harbison@yahoo.com> [Thu, 05 Mar 2020 11:02:07 -0500] rev 44579
phabricator: allow multiple DREVSPEC args to phabread|phabimport|phabupdate
Per Augie's request. Like regular revsets, the result is the union of all given
specs. Unlike regular revsets, these don't resolve in parent -> child order,
and should be specified as such on the command line.
This change invalidated a previous test using an empty `hg phabread`, so it has
been switched to `hg debugcallconduit` to preserve that coverage.
Differential Revision: https://phab.mercurial-scm.org/D8233
Matt Harbison <matt_harbison@yahoo.com> [Thu, 05 Mar 2020 11:00:00 -0500] rev 44578
phabricator: add a helper function to convert DREVSPECs to a DREV dict list
Prep work for allowing multiple DREVSPECs to various commands, and properly
validating the input.
Differential Revision: https://phab.mercurial-scm.org/D8232
Yuya Nishihara <yuya@tcha.org> [Fri, 20 Mar 2020 17:18:14 +0900] rev 44577
merge with stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 19 Mar 2020 14:54:10 -0400] rev 44576
tests: avoid logging a commit with a Unicode character in test-phabricator.t
The previous output was generated on Windows, and should have been wrapped in
`HGENCODING=utf-8` like it is earlier in the test. It's simpler to just avoid
it. I only noticed the output change when I got around to running it on a Mac.
Differential Revision: https://phab.mercurial-scm.org/D8303
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Mar 2020 12:16:20 -0700] rev 44575
fix: mark -r as advanced
See the previous patch for reasoning. I planned to even mark it
deprecated, but someone (timeless?) on the #mercurial IRC channel said
they sometimes wanted to use `-r` with its existing semantics.
Differential Revision: https://phab.mercurial-scm.org/D8288
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Mar 2020 12:16:00 -0700] rev 44574
fix: add a -s option to format a revision and its descendants
`hg fix -r abc123` will format that commit but not its
descendants. That seems expected given the option name (`-r`), but
it's very rarely what the user wants to do. The problem is that any
descendants of that commit will not be formatted, leaving them as
orphans that are hard to evolve. They are hard to evolve because the
new parent will have formatting changes that the orphan doesn't have.
I talked to Danny Hooper (who wrote most of the fix extension) about
the problem and we agreed that deprecating `-r` in favor of a new `-s`
argument (mimicing rebase's `-s`) would be a good way of reducing the
risk that users end up with these hard-to-evolve orphans. So that's
what this patch implements.
Differential Revision: https://phab.mercurial-scm.org/D8287
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Dec 2019 16:32:01 -0800] rev 44573
fix: move handling of --all into getrevstofix() for consistency
Differential Revision: https://phab.mercurial-scm.org/D8286
Raphaël Gomès <rgomes@octobus.net> [Wed, 18 Mar 2020 14:26:47 +0100] rev 44572
rust-status: add trace-level logging for Rust status fallback for debugging
The added `log` crate is already a sub-dependency.
Differential Revision: https://phab.mercurial-scm.org/D8300
Augie Fackler <augie@google.com> [Wed, 18 Mar 2020 15:08:14 -0400] rev 44571
hg: make _local() behave consistently on Python 3.8 (
issue6287)
Python 3.8 makes os.path.isfile quietly eat "path invalid" errors and
return False instead of allowing the exception to propagate. Given
that this is a change from 2018 (sigh) and it's mentioned in the
release notes (double sigh) we're definitely too late to complain to
Python about the behavior change, so open-code part of
os.path.isfile() in this method so we can catch invalid-path errors
and handle them appropriately. I confirmed that posixpath and ntpath
both delegate to genericpath, which uses os.stat() under the covers.
Differential Revision: https://phab.mercurial-scm.org/D8302
Augie Fackler <augie@google.com> [Tue, 17 Mar 2020 17:26:05 -0400] rev 44570
remotefilelog: add fake heads() method that allows viewing a file in hgweb
As best I can discern, this is not going to hurt anything, but it'll
cause a couple of options to exist in the UI that are
nonsensical. That seems fine, given the nature of remotefilelog.
Differential Revision: https://phab.mercurial-scm.org/D8299
Augie Fackler <augie@google.com> [Tue, 17 Mar 2020 17:21:34 -0400] rev 44569
tests: add test for remotefilelog interactions with hgweb
It's not uncommon for hg users to rely on hgweb as a simple GUI and
history browser (I do this all the time on Mercurial), but we lack any
tests to ensure things keep working.
At present, this merely demonstrates the "view contents of a single
file" endpoint is broken. I'll fix that in a subsequent change.
Differential Revision: https://phab.mercurial-scm.org/D8298
Augie Fackler <augie@google.com> [Wed, 18 Mar 2020 12:03:27 -0400] rev 44568
phabricator: remove duplicated byteskwargs conversion
Fixes things on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D8301
Kyle Lippincott <spectral@google.com> [Tue, 17 Mar 2020 12:59:31 -0700] rev 44567
chistedit: support histedit.summary-template in curses histedit plan
Differential Revision: https://phab.mercurial-scm.org/D8296
Kyle Lippincott <spectral@google.com> [Mon, 22 Jul 2019 09:58:23 -0700] rev 44566
vfs: fix typo in comment (remove extra "l")
Differential Revision: https://phab.mercurial-scm.org/D8297
Kyle Lippincott <spectral@google.com> [Thu, 12 Mar 2020 20:18:52 -0700] rev 44565
tests: make test-doctest.t automatically find files to run tests on
Differential Revision: https://phab.mercurial-scm.org/D8294
Kyle Lippincott <spectral@google.com> [Fri, 13 Mar 2020 19:25:37 -0700] rev 44564
tests: make test-doctest.t module list match reality
Differential Revision: https://phab.mercurial-scm.org/D8280
Kyle Lippincott <spectral@google.com> [Thu, 12 Mar 2020 20:08:05 -0700] rev 44563
tests: remove doctest in narrowspec, it is broken
I think every item here is considered incorrect (if we fix doctest to run it),
so let's just delete it.
Differential Revision: https://phab.mercurial-scm.org/D8279
Raphaël Gomès <rgomes@octobus.net> [Fri, 13 Mar 2020 00:41:22 +0100] rev 44562
rust-core: add missing `Debug` traits
Turns out you need them when trying to use `hg-core` as a library. Who knew.
Differential Revision: https://phab.mercurial-scm.org/D8278
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Dec 2019 16:24:43 -0800] rev 44561
fix: refactor getrevstofix() to define revisions first, then validate them
This refactoring makes it easier to add a new way of specifying
revisions (I'm about to add a `--source`, which adds the specified
revisions and their descendants).
Differential Revision: https://phab.mercurial-scm.org/D8285
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Dec 2019 15:14:57 -0800] rev 44560
fix: disallow `hg fix --all --working-dir`
`--all` implies `--working-dir`, so it's probably a mistake if the
user uses both.
Differential Revision: https://phab.mercurial-scm.org/D8284
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Mar 2020 21:27:45 +0100] rev 44559
byteify-string: resolve symlink before byteifying
Otherwise the script turns symlinks into regular files.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Mar 2020 16:25:22 -0700] rev 44558
tests: simplify test-fix-topology.t slightly by using a `(case !)`
Differential Revision: https://phab.mercurial-scm.org/D8283
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Mar 2020 14:50:00 -0700] rev 44557
tests: fix rebase test broken by earlier cleanup
It turns out I broke one of the rebase tests in
dd2833e4d660 (tests:
use drawdag in test-rebase-collapse.t, 2018-03-18) and didn't notice
until now.
Differential Revision: https://phab.mercurial-scm.org/D8277
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Mar 2020 16:57:38 -0700] rev 44556
rebase: accept multiple --base arguments (BC)
Same reasoning as for the previous patch. Rebase has worked well with
`--base 'A + B'` since
51e7c83e05ee (rebase: calculate ancestors for
--base separately (
issue5420), 2016-11-28).
Differential Revision: https://phab.mercurial-scm.org/D8293
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Mar 2020 16:39:32 -0700] rev 44555
rebase: accept multiple --source arguments (BC)
I think it's a little surprising that `hg rebase -s A -s B` rebases
only `B::` and ignores `A`. That's because the `-s` flag is not a
repeated flag. This patch makes it a repeated flag.
Differential Revision: https://phab.mercurial-scm.org/D8292
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Mar 2020 19:29:02 -0700] rev 44554
rebase: mention -r argument in synopsis
I'm guessing that we simply forgot to mention it there. I was
wondering if maybe `-r` was experimental as long as evolution is, but
that doesn't seem to be the case (`-r` is not marked experimental).
Differential Revision: https://phab.mercurial-scm.org/D8295
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Mar 2020 16:36:31 -0700] rev 44553
rebase: remove unused defaults argument values from _definedestmap()
The caller always provides values for these arguments.
Differential Revision: https://phab.mercurial-scm.org/D8291
Matt Harbison <matt_harbison@yahoo.com> [Sun, 16 Feb 2020 17:47:20 -0500] rev 44552
phabricator: add a config knob to create obsolete markers when importing
This too can get a tristate switch if desired. But if so, that needs to happen
by having evolve add the option.
Differential Revision: https://phab.mercurial-scm.org/D8138
Matt Harbison <matt_harbison@yahoo.com> [Sun, 16 Feb 2020 17:17:41 -0500] rev 44551
phabricator: add a config knob to import in the secret phase
For my use anyway, it's better to have a config knob that's always set than to
try to remember a switch. But we can add a tristate switch if desired.
Differential Revision: https://phab.mercurial-scm.org/D8137
Matt Harbison <matt_harbison@yahoo.com> [Sun, 16 Feb 2020 16:13:36 -0500] rev 44550
phabricator: add a `phabimport` command
I've had `alias.phabimport = $hg phabread --stack $1 | $hg import --bypass -`
for a while now, and I suspect others do too. That's limited though, in that it
can't use the information on Phabricator to restore it in the original location,
so I'm making it a first class command.
This doesn't do anything ambitious like that- this is mostly a simplification of
`hg import` to get the equivalent of the alias mentioned above. The `--bypass`
option is hardcoded to be enabled and the message about amending rejects
dropped (rejects aren't created with `--bypass`), because editing patches on
Phabricator seems like an unusual workflow.
This will need other options, like `--obsolete` and `--secret`. I think these
would be more useful as config settings, as I imagine the workflows are pretty
fixed depending on roles. Reviewers who don't queue patches probably never want
`--obsolete`, but may need `--secret`. Reviewers who do will want the former,
but not the latter. I left `--stack` as an option, but that should probably be
a config knob too (or at least default to on)- if the point of this is to avoid
rejects, it doesn't make sense to skip dependencies in most cases.
Evolve is going to need a fix to its wrapping of `cmdutil.tryimportone()`, as it
currently assumes `opts` has an `obsolete` key. It's worked around for now.
Differential Revision: https://phab.mercurial-scm.org/D8136
Raphaël Gomès <rgomes@octobus.net> [Thu, 12 Mar 2020 10:14:40 +0100] rev 44549
rust: update the README with more up-to-date and thorough information
Differential Revision: https://phab.mercurial-scm.org/D8274
Joerg Sonnenberger <joerg@bec.de> [Fri, 08 Dec 2017 02:29:02 +0100] rev 44548
transactions: convert changes['phases'] to list of ranges
Consecutive revisions are often in the same phase, especially public
revisions. This means that a dictionary keyed by the revision for the
phase transitions is highly redundant. Build a list of (range, (old,
new)) entries instead and aggressively merge ranges with the same
transition. For the test case in
issue5691, this reduces memory use by
~20MB.
Differential Revision: https://phab.mercurial-scm.org/D8125
Raphaël Gomès <rgomes@octobus.net> [Wed, 11 Mar 2020 17:42:56 +0100] rev 44547
test-install: don't print Rust re2 bindings information if Rust is not in use
Differential Revision: https://phab.mercurial-scm.org/D8273
Matt Harbison <matt_harbison@yahoo.com> [Mon, 09 Mar 2020 21:35:36 -0400] rev 44546
tests: drop an extraneous (glob) from test-debugbackupbundle.t
Since this was not needed, it ends up causing the test to end with an error
saying that the output changed, but with no diff and a message at the end saying
"no result code from test".
Differential Revision: https://phab.mercurial-scm.org/D8269