Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:45:05 -0500] rev 43975
perf: drop an unnecessary `pass`
Differential Revision: https://phab.mercurial-scm.org/D7743
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:42:52 -0500] rev 43974
perf: fix the time measurement for pathcopies relative to p2
PyCharm flagged this as unused. But it seems more likely that it was intended
to reset the time for the p2 path.
Differential Revision: https://phab.mercurial-scm.org/D7742
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:29:45 -0500] rev 43973
githelp: drop unused variable assignments
Caught by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7741
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:24:20 -0500] rev 43972
debug: drop unused variable assignments
Caught by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7740
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:18:19 -0500] rev 43971
changegroup: drop an unused variable assignment
Caught by PyCharm. The variable is assigned again below before it is used.
Differential Revision: https://phab.mercurial-scm.org/D7739
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:13:33 -0500] rev 43970
bugzilla: drop an unused variable assignment
Caught by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7738
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:11:22 -0500] rev 43969
ancestor: drop another unused variable assignment
Also caught by PyCharm. The only time this is used is immediately after another
assignment below this.
Differential Revision: https://phab.mercurial-scm.org/D7737
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:05:22 -0500] rev 43968
ancestor: drop an unused local variable assignment
Caught by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7736
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 02:44:00 -0500] rev 43967
cleanup: drop unused import from pywatchman
Caught by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7735
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 02:05:01 -0500] rev 43966
narrow: move `testedwith` after module imports
PyCharm flagged this as a PEP 8 violation, for module level imports not being at
the top of the file.
Differential Revision: https://phab.mercurial-scm.org/D7734
Matt Harbison <matt_harbison@yahoo.com> [Thu, 26 Dec 2019 18:26:06 -0500] rev 43965
match: don't util.normpath() cwd
The problem here is that `util.normpath()` calls `util.pconvert()`, which
switches to Unix style separators. That results in two test failures like this
since
5685ce2ea3bf:
--- c:/Users/Matt/hg/tests/test-globalopts.t
+++ c:/Users/Matt/hg/tests/test-globalopts.t.err
@@ -89,7 +89,7 @@
[255]
$ hg -R b ann a/a
abort: a/a not under root '$TESTTMP/b'
- (consider using '--cwd b')
+ (consider using '--cwd ..\$TESTTMP\b')
[255]
$ hg log
abort: no repository found in '$TESTTMP' (.hg not found)!
ERROR: test-globalopts.t output changed
Martin originally had `os.path.normpath()` (which *would* work here too), but
changed it during review. He didn't remember why he thought any form is needed
here. Most uses simply pass '' or `repo.getcwd()`, so these should generally be
in local format anyway. It seems better if `cwd` and `root` use consistent
styles here.
Differential Revision: https://phab.mercurial-scm.org/D7725
Matt Harbison <matt_harbison@yahoo.com> [Thu, 26 Dec 2019 16:45:56 -0500] rev 43964
tests: convert the `root` arg of matchmod.match() to local path separators
This fixes tests that broke with
8b1a9ba375e5, complaining that "X not under
root /repo". The vast majority of real uses are to pass `repo.root`, which is
normalized by `wdirvfs.base` being set to the result of `os.path.realpath()`.
Failure to convert looks like this:
--- c:/Users/Matt/hg/tests/test-match.py.out
+++ c:/Users/Matt/hg/tests/test-match.py.err
@@ -0,0 +1,48 @@
+ERROR: testVisitchildrensetGlob (__main__.IncludeMatcherTests)
+
+Traceback (most recent call last):
+ File "c:\Users\Matt\hg\tests\test-match.py", line 180, in testVisitchildrensetGlob
+ m = matchmod.match(b'/repo', b'', include=[b'glob:dir/z*'])
+ File "c:\Users\Matt\hg\mercurial\match.py", line 271, in match
+ kindpats = normalize(include, b'glob', root, cwd, auditor, warn)
+ File "c:\Users\Matt\hg\mercurial\match.py", line 322, in _donormalize
+ pat = pathutil.canonpath(root, cwd, pat, auditor=auditor)
+ File "c:\Users\Matt\hg\mercurial\pathutil.py", line 251, in canonpath
+ _(b"%s not under root '%s'") % (myname, root), hint=hint
+Abort: dir/z* not under root '/repo'
+ERROR: testVisitdirGlob (__main__.IncludeMatcherTests)
Differential Revision: https://phab.mercurial-scm.org/D7724
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 27 Dec 2019 16:47:47 +0100] rev 43963
commitablectx: fix the default phase
The code was ignoring the config option. Since the config option will control
the actual phase of the committed result, we better take it in account early.
Differential Revision: https://phab.mercurial-scm.org/D7726
Kyle Lippincott <spectral@google.com> [Wed, 18 Dec 2019 14:07:58 -0800] rev 43962
fix: fix handling of merge commits by using overlayworkingctx
Most of this code was conceptually copied from what rebase does, with one small
difference: hgext.rebaserev.rebase uses branchmerge=True, while I had to use
branchmerge=False, or else it got really confused about updating to the same
revision in some situations. I believe that the difference is that rebase is
always dealing with *some* form of update - it never gets to mergemod.update if
the source and destination are the same, while we can encounter that situation
with fix. This may imply that this code has some issues with named branches that
should be investigated.
Differential Revision: https://phab.mercurial-scm.org/D7703
Georges Racinet <georges.racinet@octobus.net> [Mon, 23 Dec 2019 10:02:50 -0800] rev 43961
rust-index: add a struct wrapping the C index
Implementing the full index logic in one go is journey larger than we would
like.
To achieve a smoother transition, we start with a simple Rust wrapper that delegates
allwork to the current C implementation. Once we will have a fully working index
object in Rust, we can easily start using more and more Rust Code with it.
The object in this patch is functional and tested. However, multiple of the
currently existing rust (in the `hg-cpython` crate) requires a `Graph`. Right
now we build this `Graph` (as cindex::Index) using the C index passed as
a PyObject. They will have to be updated to be made compatible.
Differential Revision: https://phab.mercurial-scm.org/D7655
Georges Racinet <georges.racinet@octobus.net> [Thu, 12 Dec 2019 03:46:47 +0100] rev 43960
rust-index: add a `inner` method to the Index struct
We are about to introduce a Rust wrapper to the C index. It will be exposed as a
Python object. As a start all call will be forwarded to an internal index object
(as used now).
For this forwarding to works, we need to access that index object (from the C
extensions). We adds a method doing to on the existing `Index` rust struct.
Differential Revision: https://phab.mercurial-scm.org/D7654
Georges Racinet <georges.racinet@octobus.net> [Wed, 27 Nov 2019 17:59:58 +0100] rev 43959
revlog: made C Capsule an array of function pointers
Although it's perfectly valid to put a function pointer in
a capsule, as we've been doing since the start of rust/hg-cpython,
an array of function pointers has several advantages:
- it can hold several functions. That's our main motivation here.
We plan to expose index_length() and index_node(), which will
be needed for a Rust implementation of nodemap.
- it could also have data
- (probably minor in the case of Mercurial) proper support for
architectures for which data and code pointers don't have the
same size.
Differential Revision: https://phab.mercurial-scm.org/D7543
Matt Harbison <matt_harbison@yahoo.com> [Sun, 22 Dec 2019 23:09:37 -0500] rev 43958
lfs: fix a discrepancy with a function wanting a filelog, but calling it rlog
This conceptually broke in
1541e1a8e87d when the filelog isa revlog relationship
was changed to containment of the revlog. It was made more obvious in
62a532045e71 and related API simplification.
It's resolved in favor of passing a revlog because the revlog verification code
doesn't have a reference to a filelog.
Differential Revision: https://phab.mercurial-scm.org/D7711
Matt Harbison <matt_harbison@yahoo.com> [Sun, 22 Dec 2019 16:36:09 -0500] rev 43957
revlog: split the content verification of a node into a separate method
This will be used by LFS to tune what is skipped.
In the future, this could also be used by LFS to indicate which nodes tagged
with `skipread` are simply in need of a blob fetch, so that they can be done in
a batch later. (Currently, `skipread` also indicates censored data and errors.)
Additionally, it could be used to cache the sha1 hash value for each blob so
that large blobs don't need to be re-read and re-hashed if they are used by
multiple nodes.
Differential Revision: https://phab.mercurial-scm.org/D7710
Matt Harbison <matt_harbison@yahoo.com> [Sun, 22 Dec 2019 00:47:33 -0500] rev 43956
verify: update comment to say that lfs doesn't need fulltext to check renames
The reason is that `filelog.renamed()` indirectly calls `filelog.revision()`,
which is what accesses the full text. However, LFS wraps `filelog.renamed()`
and completely handles the case where an LFS blob is in play by using rawdata.
I've got a test to demonstrate that this is the case, and prevent regressions.
But the `skipread` flag is set on all lfs revisions when using `--no-lfs`,
regardless of whether or not the blobs are local. Just above this, that flag is
consulted, causing the rename checks to be skipped. That will need to be
loosened up first.
Differential Revision: https://phab.mercurial-scm.org/D7709
Martin von Zweigbergk <martinvonz@google.com> [Wed, 18 Dec 2019 13:30:48 -0800] rev 43955
resourceutil: use `from importlib import resources`
Without this patch, we get the following error from when trying to run
hg with PyOxidizer:
module 'importlib' has no attribute 'resources'
I don't know what why that happens, but `from importlib import
resources` is the form I would prefer anyway, so let's use that now
that the impoort-checker has been fixed.
Differential Revision: https://phab.mercurial-scm.org/D7701
Martin von Zweigbergk <martinvonz@google.com> [Wed, 18 Dec 2019 13:39:44 -0800] rev 43954
import-checker: allow all absolute imports of stdlib modules
Before this patch, we didn't allow imports like
from importlib import resources
(That's the reason I used `import importlib.resources` in D7629.)
I think that form is still an absolute import, so I don't think we
forbade on purpose.
Differential Revision: https://phab.mercurial-scm.org/D7700
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Dec 2019 22:36:40 -0500] rev 43953
help: drop a reference to Windows 9x
Differential Revision: https://phab.mercurial-scm.org/D7694
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Dec 2019 22:33:37 -0500] rev 43952
help: clarify that the Windows registry key for hgrc files is systemwide
Since there's no version or path info here to distinguish between installations,
it is effectively systemwide (unless splitting hairs about the WoW64 registry
redirection).
Differential Revision: https://phab.mercurial-scm.org/D7693
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Dec 2019 22:08:07 -0500] rev 43951
windows: add a global equivalent to /etc/mercurial for *.rc processing
This follows the Unix model of processing this directory immediately after
<internal>/*.rc, and prior to the installation relative files. Since the Unix
processing supports both a directory and a file (the former overriding the
latter), and since %HOME% supports both `*.ini` and `.hgrc` (again, the former
overriding the latter), this does too. The Unix file doesn't have a `.` prefix,
so it's not used here either.
Note that this is the opposite order of processing the exe relative paths. But
since it's in agreement with Unix, %HOME% and %USERPROFILE%, it seems reasonable
to ignore that. Maybe we can change that and take a BC, because that's
something the installer should be controlling, and I can't imagine people having
both paths *and* conflicting settings.
Differential Revision: https://phab.mercurial-scm.org/D7692
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Dec 2019 10:31:00 -0800] rev 43950
match: normalize `cwd` early
By having cwd in absolute form, we won't have to adjust it when
passing it to subrepo matchers. This will matter for a coming patch.
Differential Revision: https://phab.mercurial-scm.org/D7650
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Dec 2019 11:21:31 -0800] rev 43949
match: make sure `root` argument is always an absolute path (API)
The `root` argument should already be an absolute path, but we had
tests that passed a relative path. This patch fixes up the tests and
adds an assertion.
This assumes that `os.path.isabs('/repo')` will be `True` on all
platforms we care to run tests on. Augie tested for me that it does
work on Windows, so that's good enough for me.
Differential Revision: https://phab.mercurial-scm.org/D7649
Matt Harbison <matt_harbison@yahoo.com> [Fri, 06 Dec 2019 20:29:02 -0500] rev 43948
tests: show that fileset patterns don't work with `fix` when not in repo root
Differential Revision: https://phab.mercurial-scm.org/D7569
Denis Laxalde <denis@laxalde.org> [Wed, 18 Dec 2019 20:17:21 +0100] rev 43947
py3: force bytestr conversion of "reason" in scmutil.callcatch()
For instance, reason may be an InvalidURL as shown in added test.
Georges Racinet <georges.racinet@octobus.net> [Fri, 20 Dec 2019 17:19:25 +0100] rev 43946
tests-pure: fixing test-parseindex2
This is a followup to D7603 (
49fa0b31ee1d) which broke
the tests for pure Python implementation. There are two
divergences between pure and C implementations:
- the pure implementation would accept only -1 as slice end,
whereas C accepts both -1 and len(index)
- in pure Python, `headrevs` is provided by revlog.py, not
by the index.
Differential Revision: https://phab.mercurial-scm.org/D7707
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 Dec 2019 19:59:59 +0100] rev 43945
rust-index: add a function to convert PyObject index for hg-core
Function in hg-core need something implementing the `Graph` trait. Right now,
the `hg-cpython` entry points directly turn the PyObject passed as argument
into a `cindex::Index`. However, if we start having the option to use an Index
in Rust, we need to dispatch between the different possible PyObject we could
receive.
So move the "duplicate" call into a unified function. When time come. It will be
easy to update the logic of all interface when the time come.
Differential Revision: https://phab.mercurial-scm.org/D7653
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 11 Dec 2019 18:40:04 +0100] rev 43944
test: extract some generic data and utility from test-rust-ancestor.py
We will reuse this for more tests related to revlog index. In pratice this
series of changesets add an index implementation provided from Rust and we want
to be able to test it.
Differential Revision: https://phab.mercurial-scm.org/D7652
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Dec 2019 23:33:35 -0500] rev 43943
patch: fix header.__repr__() to not have `b''` prefixes in file names
Spotted by Denis Laxalde.
Differential Revision: https://phab.mercurial-scm.org/D7695
Martin von Zweigbergk <martinvonz@google.com> [Wed, 18 Dec 2019 11:11:40 -0800] rev 43942
cmdutil: allow native string as input to check_at_most_one_arg()
We seem to always convert **opts args to use bytes as keys early on in
Mercurial core, but I'm not sure we have good reason to do that, and
not all extensions do that. It's therefore helpful to be able to pass
in a native string to check_at_most_one_arg().
Differential Revision: https://phab.mercurial-scm.org/D7699
Martin von Zweigbergk <martinvonz@google.com> [Wed, 18 Dec 2019 10:52:49 -0800] rev 43941
cmdutil: return underscore-separate name from check_at_most_one_arg()
As noticed by Yuya, when I changed the function (during review) to
work with underscore-separated names as input, I forgot to make sure
the returned name was also underscore-separated. We don't have any
cases where it matters yet, but it should still clearly be fixed.
Instead of converting the hyphen-separated value we already have in
`previous`, I'm changing it so we convert to the underscore-separated
values to be hyphen-separated only when we need to display them. This
will also help a coming change where we allow the inputs to native
strings instead only bytes.
Differential Revision: https://phab.mercurial-scm.org/D7698
Martin von Zweigbergk <martinvonz@google.com> [Wed, 18 Dec 2019 10:55:06 -0800] rev 43940
rebase: restore i18n of a hint message
As noticed by Yuya, I lost the _() call in
71fee4564410 (rebase: use
rewriteutil.precheck() instead of reimplementing it, 2019-12-18).
Differential Revision: https://phab.mercurial-scm.org/D7697
Rodrigo Damazio Bovendorp <rdamazio@google.com> [Wed, 18 Dec 2019 23:45:11 -0800] rev 43939
status: make unresolved files always be in the morestatus structured output
We don't know the status of those files, only that they're unresolved, so
we don't output the status for those - any code parsing this will have to be
tolerant to that.
Differential Revision: https://phab.mercurial-scm.org/D7668
Rodrigo Damazio Bovendorp <rdamazio@google.com> [Wed, 18 Dec 2019 23:43:21 -0800] rev 43938
status: make morestatus call out unresolved conflicts after update
Differential Revision: https://phab.mercurial-scm.org/D7704
Rodrigo Damazio Bovendorp <rdamazio@google.com> [Wed, 18 Dec 2019 23:41:36 -0800] rev 43937
status: extract active-merge state for reuse
Differential Revision: https://phab.mercurial-scm.org/D7667
Martin von Zweigbergk <martinvonz@google.com> [Tue, 17 Dec 2019 10:55:50 -0800] rev 43936
fix: use rewriteutil.precheck() instead of reimplementing it
Differential Revision: https://phab.mercurial-scm.org/D7687
Martin von Zweigbergk <martinvonz@google.com> [Tue, 17 Dec 2019 11:09:22 -0800] rev 43935
split: use rewriteutil.precheck() instead of reimplementing it
As you can see from the patch, I disagree with most of the comment
saying that `rewriteutil.precheck()` is not worthwhile.
Differential Revision: https://phab.mercurial-scm.org/D7686
Martin von Zweigbergk <martinvonz@google.com> [Wed, 18 Dec 2019 09:18:02 +0300] rev 43934
rebase: use rewriteutil.precheck() instead of reimplementing it
After this patch, there's still another place in `rebase.py`, in the
`--stop` code path, that reimplements `rewriteutil.precheck()`. I
couldn't fix that place because it `rewriteutil.precheck()` checks
that there is only one dirstate parent, which fails because we have
two parents at that point. I think it's incorrect that rebase leaves
the user with two parents during conflicts, but changing that is way
out of scope for this series.
Differential Revision: https://phab.mercurial-scm.org/D7685
Martin von Zweigbergk <martinvonz@google.com> [Tue, 17 Dec 2019 10:53:51 -0800] rev 43933
histedit: use rewriteutil.precheck() instead of reimplementing it
We have had this nice utility since
490df753894d (rewriteutil: add a
precheck function to check if revs can be rewritten, 2017-11-24). We
got two callers soon thereafter, in
98f97eb20597 (rewriteutil: use
precheck() in uncommit and amend commands, 2017-11-28). It's about
time we use it in other places.
rewriteutil.precheck() looks unfortunate for i18n (it seems to rely on
an English verb for the action making sense in other languages), but
hopefully not bad enough that we should avoid using it.
Differential Revision: https://phab.mercurial-scm.org/D7684
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Dec 2019 23:25:16 -0800] rev 43932
rebase: inline single-use variables passed to _definedestmap()
Differential Revision: https://phab.mercurial-scm.org/D7646
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Dec 2019 23:20:48 -0800] rev 43931
rebase: use cmdutil.check_at_most_one_arg() for action+revision
Differential Revision: https://phab.mercurial-scm.org/D7645
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Dec 2019 23:03:52 -0800] rev 43930
rebase: use cmdutil.check_incompatible_arguments() for --auto-orphans
Differential Revision: https://phab.mercurial-scm.org/D7644
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Dec 2019 22:43:15 -0800] rev 43929
rebase: use cmdutil.check_at_most_one_arg() for -b/-s/-r
Differential Revision: https://phab.mercurial-scm.org/D7643
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Dec 2019 23:11:33 -0800] rev 43928
rebase: inline single-use `dryrun` and `confirm` variables
Differential Revision: https://phab.mercurial-scm.org/D7642
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Dec 2019 14:50:42 -0800] rev 43927
rebase: use cmdutil.check_incompatible_arguments() for action+confirm/dryrun
Differential Revision: https://phab.mercurial-scm.org/D7661
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Dec 2019 14:49:48 -0800] rev 43926
rebase: use cmdutil.check_at_most_one_arg() for --confirm/--dry-run
I've also updated the helper to work with the hyphenated --dry-run
option.
Differential Revision: https://phab.mercurial-scm.org/D7641
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Dec 2019 21:25:54 -0500] rev 43925
windows: factor the hgrc directory scan into a function
Differential Revision: https://phab.mercurial-scm.org/D7691
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Dec 2019 21:21:36 -0500] rev 43924
windows: don't return early from building the hgrc search path
This will minimize the changes needed to add other sources.
Differential Revision: https://phab.mercurial-scm.org/D7690
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Dec 2019 21:15:59 -0500] rev 43923
windows: clarify a comment about the hgrc search path
The exe relative hgrc.d and the registry paths are not mutually exclusive.
Differential Revision: https://phab.mercurial-scm.org/D7689
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Dec 2019 21:12:17 -0500] rev 43922
windows: drop detection of Windows 95/98/ME
Support was removed in python 2.6.
Differential Revision: https://phab.mercurial-scm.org/D7688
Augie Fackler <augie@google.com> [Tue, 17 Dec 2019 14:04:02 -0500] rev 43921
examples: add an example configuration for go source files
Tested by timeless.
Differential Revision: https://phab.mercurial-scm.org/D7683
Matt Harbison <matt_harbison@yahoo.com> [Sun, 15 Dec 2019 21:34:00 -0500] rev 43920
util: move common proxyobserver attributes to the base class
Fixes the following pytype warnings:
line 791, in _writedata: No attribute 'logdata' on baseproxyobserver [attribute-error]
line 792, in _writedata: No attribute 'logdataapis' on baseproxyobserver [attribute-error]
line 793, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error]
line 794, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error]
line 799, in _writedata: No attribute 'logdataapis' on baseproxyobserver [attribute-error]
line 800, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error]
line 802, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error]
line 803, in _writedata: No attribute 'name' on baseproxyobserver [attribute-error]
line 805, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error]
line 809, in _writedata: No attribute 'logdataapis' on baseproxyobserver [attribute-error]
line 810, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error]
line 814, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error]
line 815, in _writedata: No attribute 'name' on baseproxyobserver [attribute-error]
line 817, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error]
Differential Revision: https://phab.mercurial-scm.org/D7675
Martin von Zweigbergk <martinvonz@google.com> [Wed, 11 Dec 2019 22:23:42 -0800] rev 43919
config: drop debug messages saying where config was read from
`hg config --debug` includes lines like this:
set config by: $EDITOR
but also lines like this:
$EDITOR: ui.editor=emacs -nw
The `set config by` messages don't seem to provide much additional
information over what we get from the `$EDITOR:`-type message. I could
imagine wanting to see which values got overriden by a later entry,
but that information is already not present. So let's just remove the
first type of output. My next patch would otherwise amplify the
redundant output (there would be one `set config by` for each line in
`mergetools.rc`).
Differential Revision: https://phab.mercurial-scm.org/D7627
Martin von Zweigbergk <martinvonz@google.com> [Wed, 11 Dec 2019 11:22:37 -0800] rev 43918
rcutil: don't check if defaultrc/ is a directory -- we know it is
`mercurial/defaultrc/` is a directory both in the Mercurial repo and
once installed on a target platform. The directory was created in
c4ce077588d0 (config: introduce "built-in" default configuration
settings in default.d, 2014-09-04). That commit has some more
information, but it still doesn't seem to say that `defaultrc/` (then
called `default.d/`) could be a file. Perhaps the check was there to
allow you to run the same code on an older install/repo?
Differential Revision: https://phab.mercurial-scm.org/D7624
Raphaël Gomès <rgomes@octobus.net> [Fri, 29 Nov 2019 17:30:57 +0100] rev 43917
rust-matchers: add support for `exactmatcher` in `dirstate.status`
`exactmatcher` is the name in the Python implementation and corresponds to
`FileMatcher` in Rust.
Differential Revision: https://phab.mercurial-scm.org/D7531
Raphaël Gomès <rgomes@octobus.net> [Fri, 29 Nov 2019 17:30:10 +0100] rev 43916
rust-dirstate-status: update bridge for new rust version of `dirstate.status`
Differential Revision: https://phab.mercurial-scm.org/D7530
Raphaël Gomès <rgomes@octobus.net> [Fri, 29 Nov 2019 17:29:06 +0100] rev 43915
rust-dirstate-status: add `walk_explicit` implementation, use `Matcher` trait
This is the first time we actually use the `Matcher` trait, still for a small
subset of all matchers defined in Python.
While I haven't yet actually measured the performance of this, I have tried
to avoid any unnecessary allocations. This forces the use of heavy lifetimes
annotations which I am not sure we can simplify, although I would be happy
to be proven wrong.
Differential Revision: https://phab.mercurial-scm.org/D7529
Raphaël Gomès <rgomes@octobus.net> [Fri, 29 Nov 2019 18:54:06 +0100] rev 43914
rust-matchers: add `FileMatcher` implementation
Mercurial defines an `exactmatcher`, I find `FileMatcher` to be clearer, but
am not opposed to using the old name.
This change also switched the order of `assert_eq` arguments as it is clearer
that way for most people.
Differential Revision: https://phab.mercurial-scm.org/D7528
Matt Harbison <matt_harbison@yahoo.com> [Thu, 12 Dec 2019 12:30:15 -0500] rev 43913
exchange: ensure all outgoing subrepo references are present before pushing
We've run into occasional problems with people committing a repo, and then
amending or rebasing in the subrepo. That makes it so that the revision in the
parent can't be checked out, and the problem gets propagated on push. Mercurial
already tries to defend against this sort of dangling reference by pushing *all*
subrepo revisions first. This reuses the checks that trigger warnings in
`hg verify` to bail on the push unless using `--force`.
I thought about putting this on the server side, but at that point, all of the
data has been transferred, only to bail out. Additionally, SCM Manager hosts
subrepos in a location that isn't nested in the parent, so normal subrepo code
would complain that the subrepo is missing when run on the server.
Because the push command pushes subrepos before calling this exchange code, a
subrepo will be pushed before the parent is verified. Not great, but no
dangling references are exchanged, so it solves the problem. This code isn't in
the loop that pushes the subrepos because:
1) the list of outgoing revisions is needed to limit the scope of the check
2) the loop only accesses the current revision, and therefore can miss
subrepos that were dropped in previous commits
3) this code is called when pushing a subrepo, so the protection is recursive
I'm not sure if there's a cheap check for the list of files in the outgoing
bundle. If there is, that would provide a fast path to bypass this check for
people not using subrepos (or if no subrepo changes were made). There's
probably also room for verifying other references like tags. But since that
doesn't break checkouts, it's much less of a problem.
Differential Revision: https://phab.mercurial-scm.org/D7616
Augie Fackler <augie@google.com> [Thu, 05 Dec 2019 16:19:16 -0500] rev 43912
procutil: try and avoid angering CoreFoundation on macOS
We've seen failures like this:
objc[57662]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called.
objc[57662]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
I think this is due to forking off some background processes during
`hg update` or similar. I don't have any conclusive proof this is the
fork() call that's to blame, but it's the most likely one since the
regular `hg update` codepath uses the other fork() invocation (via
workers) and we don't get this report from non-Google macOS users.
Ugh.
Differential Revision: https://phab.mercurial-scm.org/D7615