Raphaël Gomès <rgomes@octobus.net> [Sun, 06 Sep 2020 10:33:12 +0200] rev 45517
rust-cpython: switch logging facade from `simple_logger` to `env_logger`
`simple_logger` is just too simple. `env_logger` supports logging to `stderr`,
and logging filtering, for example, which are becoming necessary now. The
project is nicely active.
Differential Revision: https://phab.mercurial-scm.org/D8990
Connor Sheehan <sheehan@mozilla.com> [Tue, 22 Sep 2020 09:06:09 -0400] rev 45516
git: pass `id` attribute of `pygit2.Tree` object
`pygit2`'s Repository object expects an instance of `Oid`
to return the corresponding object, instead of the object
itself.
After this change and D9062, `hg commit -i` seems to work,
unless it hits a case folding assertion (ie trying to add
a file like `README.md`).
Differential Revision: https://phab.mercurial-scm.org/D9068
Kyle Lippincott <spectral@google.com> [Wed, 16 Sep 2020 12:13:46 -0700] rev 45515
branchmap: add a cache validation cache, avoid expensive re-hash on every use
In a pathological `hg log` case, we end up executing the branchmap validity
checking twice per commit displayed. Or maybe we always do, and I just noticed
because it's really slow in this repo for some reason.
Before:
```
Time (mean ± σ): 9.816 s ± 0.071 s [User: 9.435 s, System: 0.392 s]
Range (min … max): 9.709 s … 9.920 s
```
After:
```
Time (mean ± σ): 8.671 s ± 0.078 s [User: 8.309 s, System: 0.392 s]
Range (min … max): 8.594 s … 8.816 s
```
Differential Revision: https://phab.mercurial-scm.org/D9023
Augie Fackler <augie@google.com> [Mon, 21 Sep 2020 15:05:38 -0400] rev 45514
merge with stable
Antoine cezar<acezar@chwitlabs.fr> [Wed, 16 Sep 2020 19:32:53 +0200] rev 45513
run-test: allow relative path in `--blacklist` and `--whitelist` (
issue6351)
When specifying a test with `--blacklist` or `--whitelist` with path relatives
to the repository root (eg: `tests/test-check-commit.t`) the file is not taken
into account. It only works when the name of the test is given.
It would be better if `--blacklist` and `--whitelist` behaviors where compatible
with `--test-list`.
This patch allows to use relative path with `--blacklist` and `--whitelist`
while staying compatible with the old behavior by checking the test relative
path in addition to its name.
Differential Revision: https://phab.mercurial-scm.org/D9024
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Sep 2020 15:10:14 -0700] rev 45512
rebase: stop clearing on-disk mergestate when running in memory
In-memory merge no longer uses on-disk mergestate since
19590b126764
(merge: use in-memory mergestate when using in-memory context,
2020-09-15). This patch removes the clearing from two places in the
in-memory rebase code. I've verified that the one with a TODO was
indeed fixed by the aforementioned commit. The other instance doesn't
seem to have any test coverage, but I'm pretty confident it's also
safe to remove.
Differential Revision: https://phab.mercurial-scm.org/D9057
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Sep 2020 10:15:13 -0700] rev 45511
rebase: delete unused p1 argument to _concludenode()
Unused since
a0192a03216d (rebase: remove now unnecessary logic to
allow empty commit when branch changes, 2020-07-09).
Differential Revision: https://phab.mercurial-scm.org/D9055
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Sep 2020 10:04:02 -0700] rev 45510
rebase: fix an inconsistent hyphenation in a debug message
We used "rebasing on disk" but "rebasing in-memory". I believe the
former is correct, so I used that.
Differential Revision: https://phab.mercurial-scm.org/D9054
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 18 Sep 2020 12:20:28 +0200] rev 45509
strip: with --keep, consider all revs "removed" from the wcp (
issue6270)
The current code was blink to change from other branches when stripping merges
that are ancestors of the working copy parents.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 18 Sep 2020 12:10:12 +0200] rev 45508
test-strip: display more information highlight buggy behavior
When using `hg strip --keep` on a set of changeset that contains a merge, the
set of file considered when rebuilding the dirstate is missing files updated by
changeset that are not directly inside the `new-parent::old-parent` range.
We start with updating the test with new output highlighting the issue.
This issue was spotted because that dirstate inconsistency made the test flaky.
The new command make the test less flaky (but still wrong).
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Sep 2020 15:03:07 +0200] rev 45507
changing-files: implement equality checking
This makes debugging simpler.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 17 Sep 2020 11:21:13 +0200] rev 45506
changing-files: document the various sets
The content of some sets (eg: added, removed) is not always obvious so we
document them.
Augie Fackler <augie@google.com> [Fri, 18 Sep 2020 10:48:43 -0400] rev 45505
merge with stable
Yuya Nishihara <yuya@tcha.org> [Fri, 18 Sep 2020 20:19:52 +0900] rev 45504
share: do not write working-copy requirements twice
Follows up
d252f51ab032. Maybe it is a copy-paste error.
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Sep 2020 15:59:23 +0900] rev 45503
py3: fix formatting of LookupError for workingctx
Spotted while writing broken tests for "hg grep -fr'wdir()'".
basectx._fileinfo() raises ManifestLookupError(self._node, ..), but _node
of the workingctx is None for historical reasons.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 17 Sep 2020 22:45:51 -0700] rev 45502
phabricator: fix loadhgrc() override broken by D8656
This fixes some failing `test-check*` tests (at least
`test-check-code.t` was broken).
Differential Revision: https://phab.mercurial-scm.org/D9044
Martin von Zweigbergk <martinvonz@google.com> [Thu, 17 Sep 2020 23:09:47 -0700] rev 45501
mergestate: move commit() from base class to on-disk subclass
The commit message doesn't do anything in the in-memory case, and it's
`_makerecords()` is also not needed in that case, so let's move it
down to the on-disk subclass (i.e. the `mergestate` class). Sorry I
missed this earlier.
Differential Revision: https://phab.mercurial-scm.org/D9043
Martin von Zweigbergk <martinvonz@google.com> [Thu, 17 Sep 2020 23:12:48 -0700] rev 45500
mergestate: make in-memory mergestate not clear on-disk mergestate on reset()
Oops, I thought I had remove the `rmtree()` call earlier. Maybe I
accidentally got it back in a histedit or something.
Differential Revision: https://phab.mercurial-scm.org/D9042
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 Sep 2020 16:10:16 -0700] rev 45499
merge: use in-memory mergestate when using in-memory context
This is my version of Augie's D8568. It makes it so we don't touch the
mergestate on disk when using an in-memory context.
The reason that I want this is not the same as the reason that Augie
write his patch (though I agree with that reason too). My hope is to
make in-memory rebase not fall back to on-disk rebase when there are
conflict. I plan to do that by adding a
`overlayworkingctx.reflect_in_workingcopy()`. The idea is that that
will update the working copy, the dirstate and the mergestate as
necessary.
Differential Revision: https://phab.mercurial-scm.org/D9040
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 Sep 2020 11:17:24 -0700] rev 45498
mergestate: extract a base class to be shared by future memmergestate
This extracts a new base class from `mergestate` and leaves all the
vfs-touching code in `mergestate`.
Differential Revision: https://phab.mercurial-scm.org/D9039
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 Sep 2020 11:33:26 -0700] rev 45497
mergestate: extract overridable methods for making/restoring file backups
In-memory merge currently still uses on-disk mergestate. That's mostly
harmless (I don't think I've seen any problem it's actually
caused). It's still a little weird. I'm planning to add an in-memory
mergestate, which will be used with `overlayworkingctx`. This patch
prepares for that by extracting that logic, so it's easier to change
per subclass.
Differential Revision: https://phab.mercurial-scm.org/D9038
Martin von Zweigbergk <martinvonz@google.com> [Wed, 16 Sep 2020 13:39:26 -0700] rev 45496
mergestate: initialize all properties in __init__()
This is hopefully not very controverial. I found the initialization
before this patch unorthodox. It wasn't clear which properties the
object was supposed to have.
Differential Revision: https://phab.mercurial-scm.org/D9037
Martin von Zweigbergk <martinvonz@google.com> [Thu, 17 Sep 2020 19:33:55 -0700] rev 45495
mergestate: remove unnecessary clearing of `localctx` and `otherctx`
As noted in the previous commit, there are no callers that (re-)use
the instance after calling `reset()`. There are also no callers that
call `_read()` after doing anything with the instance (it's only
called right after an instance is created).
If reviewers feel that this is too risky, I can extract and reuse the
poisoning code that indygreg once added for poisining repo instances.
Differential Revision: https://phab.mercurial-scm.org/D9036
Martin von Zweigbergk <martinvonz@google.com> [Wed, 16 Sep 2020 13:25:49 -0700] rev 45494
mergestate: move most of of reset() into start()
`ms.reset()` has somehow become a combination of two different things:
1. A constructor-like function creating an empty instance
2. A call to `shutil.rmtree()` to clear the mergestate.
It seems that all callers now care only about the latter (since we
changed one caller to use the new `ms.start()` method instead). Let's
move the code for the former into `start()`, since that's the only
place it's needed.
Differential Revision: https://phab.mercurial-scm.org/D9035
Martin von Zweigbergk <martinvonz@google.com> [Thu, 17 Sep 2020 09:23:21 -0700] rev 45493
mergestate: make clean() only be about creating a clean mergestate
This is similar to the previous patch, but moves the separation one
step further out, to `merge.py`.
Differential Revision: https://phab.mercurial-scm.org/D9034
Martin von Zweigbergk <martinvonz@google.com> [Wed, 16 Sep 2020 10:09:37 -0700] rev 45492
mergestate: split up reset() for its two use cases
We only have one place that calls `ms.reset()` with any
arguments. That place is `mergestate.clean()`. The callers that call
the function with no arguments seem to all just want delete the
mergestate -- none of them look at the instance after calling
`reset()`. Let's separate out the two different use cases to make the
code clearer. I'll clean up further soon.
Differential Revision: https://phab.mercurial-scm.org/D9033
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 Sep 2020 23:19:14 -0700] rev 45491
mergestate: simplify reset(), knowing that `other` and `node` go together
There's only one caller of `reset()` that passes any arguments at all,
and that originates from `merge.py:1371`. That code always passes
values for both `node` and `other`.
Differential Revision: https://phab.mercurial-scm.org/D9032
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 Sep 2020 22:40:26 -0700] rev 45490
mergestate: make some callers not pass pointless node argument
The node argument is set on the created `mergestate` instance, but
these callers don't even look at that instance.
Differential Revision: https://phab.mercurial-scm.org/D9031