Raphaël Gomès <rgomes@octobus.net> [Wed, 06 Nov 2019 16:24:24 +0100] rev 43611
rust-matchers: remove default implementations for `Matcher` trait
We don't expect a whole lot of matchers to be defined, and this makes it more
obvious what a matcher does by reading its `impl Matcher for FooMatcher`.
This patch has the added benefit of fixing the `AlwaysMatcher`, its `matches`
function differs from the former default.
Differential Revision: https://phab.mercurial-scm.org/D7255
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Oct 2019 13:55:12 -0700] rev 43610
packaging: use lower case for RC files
The file case doesn't matter. I'm not sure why it is
capitalized.
This is a source of inconsistency between Inno and WiX.
So let's standardize on the lower case names.
The MSI should remove the old files before installing
the new one, so there shouldn't be a problem with a case
collision.
And, users should not have modified these files, so it
should be safe to rename them.
Differential Revision: https://phab.mercurial-scm.org/D7172
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Oct 2019 18:42:19 -0700] rev 43609
packaging: write out editor.rc in Python
Let's dynamically generate the file from Python instead of
relying on Inno functionality, as that will give more
visibility into what's going on.
I spotted this as part of converging the install layout
of Inno and WiX: the former doesn't install an editor.rc
and instead defines the editor via its mercurial.rc file.
We will change the behavior of WiX later once it is consuming
the staged install directory for packaging.
Differential Revision: https://phab.mercurial-scm.org/D7171
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Oct 2019 13:25:01 -0700] rev 43608
packaging: stop installing Contributors.txt
This file isn't up to date. If we are going to call out
contributors, we should auto generate a file from `hg log`
or something. I don't think we need to include it in the
Windows install.
This change makes Inno more consistent with WiX, which
doesn't ship this file.
Differential Revision: https://phab.mercurial-scm.org/D7170
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Oct 2019 13:21:35 -0700] rev 43607
packaging: remove hg-ssh.8.html from Inno installer
We don't ship hg-ssh because it requires a python.exe to
run, which we don't ship. So it doesn't make sense to ship
the HTML documentation for this tool.
This change makes the Inno install layout more consistent
with WiX, which doesn't ship this file.
Functionality for removing files has been made generic,
in anticipation of future expansion.
Differential Revision: https://phab.mercurial-scm.org/D7169
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Oct 2019 13:00:14 -0700] rev 43606
packaging: install .rc files to hgrc.d
Currently, Inno installs these .rc files to a default.d
directory and WiX to a hgrc.d directory.
Mercurial automatically loads files in an hgrc.d directory
next to the executable and in an "internal" default.d directory.
This "internal" directory is util.datadir, which on Windows
installs made with py2exe is the directory containing hg.exe.
So on Windows both hgrc.d and default.d directories relative
to hg.exe are loaded.
For the install layout, I think it makes sense for hgrc.d to
be used, as that path is documented as non-internal. So this
commit changes the Inno install layout to use hgrc.d instead
of default.d.
.. bc::
Changed default config file location in Windows .exe installers
Mercurial's installer installs some default .rc config
files. Previously, these were installed in a default.d
directory. These are now installed in an hgrc.d directory.
Custom default.d/*.rc files should still be loaded. But it
is recommended to move these to hgrc.d/*.rc.
This change only affects the .exe installers (not the .msi
installers).
Differential Revision: https://phab.mercurial-scm.org/D7168
Raphaël Gomès <rgomes@octobus.net> [Thu, 07 Nov 2019 11:13:31 +0100] rev 43605
rust: introduce SIZE_FROM_OTHER_PARENT constant
This will clarify what `-2` meant in the codebase.
This change also merged imports in affected files for cleanup.
Differential Revision: https://phab.mercurial-scm.org/D7301
Raphaël Gomès <rgomes@octobus.net> [Thu, 07 Nov 2019 10:32:26 +0100] rev 43604
rust-status: refactor dispatch case for normal files
This should make the code easier to read and more idiomatic.
Differential Revision: https://phab.mercurial-scm.org/D7300
Raphaël Gomès <rgomes@octobus.net> [Thu, 07 Nov 2019 10:23:42 +0100] rev 43603
rust-status: return a ParallelIterator instead of a Vec from stat_dmap_entries
This allows the caller function to choose when and how the iteration and/or
collection happens. This change also cleans up the now unused `filter_map`.
Differential Revision: https://phab.mercurial-scm.org/D7299
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 Nov 2019 13:43:18 +0100] rev 43602
rust-status: improve status performance
This change does more things in the parallel loop, refactors the file-level
logic into two functions for added clarity.
This bit of Rust code takes 55ms to execute on a repo where the stat'ing part
of Valentin's fast path takes 40ms. While the code differs a bit and it's hard
to get an exact measurement of how much of a performance impact it has, I can
be fairly certain that this implementation is *at worse* twice as slow.
Differential Revision: https://phab.mercurial-scm.org/D7254
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Nov 2019 12:55:56 +0900] rev 43601
bookmarks: accept explicit -r 'wdir()' when adding new bookmarks (
issue6218)
Even though the bookmark semantics can't be fully encoded to the virtual
working changeset idea, the active bookmark can be considered a bookmark
of the working revision.
Before, 'tgt' was None, and changes=[(bm, None)] means deleting a bookmark
named 'bm'.
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Nov 2019 12:44:00 +0900] rev 43600
bookmarks: use changectx instead of remembering hex of hidden revision
It should be better to not depend on the ctx variable which was assigned
conditionally.
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Nov 2019 12:32:20 +0900] rev 43599
bookmarks: resolve target revision out of the bookmarks loop
The target revision doesn't depend on the bookmark to be added.
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Nov 2019 12:09:50 +0900] rev 43598
bookmarks: fix handling of multiple bookmarks with one to be deactivated
Before, "hg bookmark --inactive Z Y" would ignore "Y" if "Z" were currently
active. I'm pretty sure it is a bug.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 12 Nov 2019 11:05:03 +0100] rev 43597
py3: avoid iterating over a literal bytes in highlight
In Python 3, iterating over a bytes literal yields integers. Since we
use the value in `text.replace()`, this fails on Python 3 with the
following trackback:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgwebdir_mod.py", line 378, in run_wsgi
for r in self._runwsgi(req, res):
File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgweb_mod.py", line 326, in run_wsgi
for r in self._runwsgi(req, res, repo):
File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgweb_mod.py", line 449, in _runwsgi
return getattr(webcommands, cmd)(rctx)
File "/usr/lib/python3/dist-packages/mercurial/hgweb/webcommands.py", line 211, in file
return _filerevision(web, webutil.filectx(web.repo, web.req))
File "/usr/lib/python3/dist-packages/hgext/highlight/__init__.py", line 72, in filerevision_highlight
pygmentize(web, b'fileline', fctx, web.tmpl)
File "/usr/lib/python3/dist-packages/hgext/highlight/__init__.py", line 58, in pygmentize
field, fctx, style, tmpl, guessfilenameonly=filenameonly
File "/usr/lib/python3/dist-packages/hgext/highlight/highlight.py", line 62, in pygmentize
text = text.replace(c, b'')
TypeError: a bytes-like object is required, not 'int'
Yuya Nishihara <yuya@tcha.org> [Mon, 11 Nov 2019 22:10:26 +0900] rev 43596
import-checker: allow 'from typing import ...'
Suppresses the following error in test-check-module-imports.t:
mercurial/encoding.py:24: relative import of stdlib module
Martin von Zweigbergk <martinvonz@google.com> [Tue, 29 Oct 2019 23:33:34 -0700] rev 43595
match: drop support for passing '.' for root dir to visit*() methods
We said we'd drop support for it after 5.1, so it's time to clean it
up now.
Differential Revision: https://phab.mercurial-scm.org/D7249
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 16 Oct 2019 21:31:40 -0700] rev 43594
tests: use time.time() for relative start and stop times
os.times() does not work on Windows. This was resulting in the
test start, stop, and duration times being reported as 0.
This commit swaps in time.time() for wall clock measurements.
This isn't ideal, as time.time() is not monotonic. But Python 2.7
does not have a monotonic timer that works on Windows. So it is
the best we have which is trivially usable. And test times aren't
terribly important, so variances due to clock skew are arguably
acceptable.
Differential Revision: https://phab.mercurial-scm.org/D7126
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 16 Oct 2019 21:25:08 -0700] rev 43593
tests: rename stopped and started variables to reflect times
In preparation for introducing more variables that will have
similar names.
Differential Revision: https://phab.mercurial-scm.org/D7125
Martin von Zweigbergk <martinvonz@google.com> [Wed, 30 Oct 2019 00:00:21 -0700] rev 43592
revset: simplify checkstatus() by using any()
Differential Revision: https://phab.mercurial-scm.org/D7179
Kyle Lippincott <spectral@google.com> [Wed, 06 Nov 2019 18:28:11 -0800] rev 43591
rebase: check for unfinished ops even when inmemory (
issue6214)
When using rebase.experimental.inmemory, we should be able to work well with a
dirty working directory, but we can not reliably work if we're in the middle of
another operation (such as another rebase), as we'll potentially stomp on some
state that the other operation needs.
Differential Revision: https://phab.mercurial-scm.org/D7298
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Oct 2019 23:18:47 -0700] rev 43590
status: move initialization closer together
The default initialization happened long before it needed to happen.
Differential Revision: https://phab.mercurial-scm.org/D7145
Martin von Zweigbergk <martinvonz@google.com> [Sat, 19 Oct 2019 00:15:41 -0700] rev 43589
largefiles: avoid dynamically subclassing context instances
E.g. copies.pathcopies() compares context objects for equality and
basectx.__eq__ compares the type. But since largefiles was dynamically
creating classes, they would all be unequal. That led pathcopies(),
after some changes I made, to not short-circuit to get copy info only
from the dirstate. This patch fixes that short-circuiting (and other
places where context are being compared for equality).
Differential Revision: https://phab.mercurial-scm.org/D7143
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 13:31:40 -0800] rev 43588
relnotes: copy "next" to "5.2" and clear "next"
This is the same thing as we did for 5.1 in
cba59b338976 (relnotes:
copy "next" to "5.1" and clear "next", 2019-08-01).
Differential Revision: https://phab.mercurial-scm.org/D7231
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 Nov 2019 10:13:05 -0800] rev 43587
py3: avoid `b'%s' % type(...)` in a ProgrammingError
Differential Revision: https://phab.mercurial-scm.org/D7363
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Oct 2019 22:08:20 -0700] rev 43586
largefiles: delete unused repo.status_nolfiles()
Differential Revision: https://phab.mercurial-scm.org/D7142
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Oct 2019 21:36:19 -0700] rev 43585
largefiles: use context manager for wlock in repo.status() override
Differential Revision: https://phab.mercurial-scm.org/D7141
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Oct 2019 17:52:19 -0700] rev 43584
largefiles: allow "lfstatus" context manager to set value to False
Differential Revision: https://phab.mercurial-scm.org/D7140
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Oct 2019 17:46:37 -0700] rev 43583
largefiles: move lfstatus context manager to lfutil
Differential Revision: https://phab.mercurial-scm.org/D7139
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 Nov 2019 14:35:53 -0800] rev 43582
revlog: delete references to deleted nullid sentinel value
We stopped keeping the nullid in the index in
781b2720d2ac (index:
don't include nullid in len(), 2018-07-20). I forgot to update some
comments about it.
Differential Revision: https://phab.mercurial-scm.org/D7366