Georges Racinet <georges.racinet@octobus.net> [Thu, 12 Dec 2019 18:31:17 +0100] rev 44014
rust-index: add a `experimental.rust.index` option to use the wrapper
Now we can start putting this wrapper on the test and benchmark grill.
Differential Revision: https://phab.mercurial-scm.org/D7660
Georges Racinet <georges.racinet@octobus.net> [Wed, 11 Dec 2019 18:10:20 +0100] rev 44013
rust-index: use the new method in shortesthexnodeidprefix
This code can now run with both a Rust or a C index.
Differential Revision: https://phab.mercurial-scm.org/D7659
Georges Racinet <georges.racinet@octobus.net> [Thu, 12 Dec 2019 03:39:14 +0100] rev 44012
rust-index: expose a method to retrieve the C index
The code for `shortesthexnodeidprefix` need to access the actual C index. For
now we grant its wish and expose a method to do so. Once we have the nodemap in
Rust, we will be able to implement the same feature from rust and we will be
able to drop this method.
Differential Revision: https://phab.mercurial-scm.org/D7658
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 12 Dec 2019 18:11:44 +0100] rev 44011
rust-index: handle `MixedIndex` in `pyindex_to_graph`
On the long run we will want to implement the Graph trait directly in Rust, but
for now we take the path with the least amount of change to focus on the coming
persistent NodeMap code.
We test this new code through with the lazy ancestors code.
Differential Revision: https://phab.mercurial-scm.org/D7657
Georges Racinet <georges.racinet@octobus.net> [Fri, 13 Dec 2019 19:52:26 +0100] rev 44010
rust-index: make it possible to clone the struct referencing the C index
If we are to hand over the C index object to other code, we need to be able to
create a new python reference to it.
Differential Revision: https://phab.mercurial-scm.org/D7656
Matt Harbison <matt_harbison@yahoo.com> [Fri, 06 Dec 2019 20:40:02 -0500] rev 44009
match: resolve filesets against the passed `cwd`, not the current one
This allows filesets to be resolved relative to `repo.root`, the same as other
patterns are since
f02d3c0eed18. The current example in contrib/ wasn't working
from the tests directory because of this.
Differential Revision: https://phab.mercurial-scm.org/D7570
Kyle Lippincott <spectral@google.com> [Thu, 12 Dec 2019 14:28:31 -0800] rev 44008
fix: correct the clang-format example hgrc so that it actually works
There are three changes here:
* Remove -i from `command`, it causes fix to eat your file and empty it out
* Add `set:` to pattern, otherwise this is interpreted as just a glob
* Switch `listfile:` to `include:`; `listfile:` is relative to the current
working directory, while `include:` is relative to the repo root. This makes
it so that you don't receive errors when running outside of the repo root
about being unable to find the file.
Differential Revision: https://phab.mercurial-scm.org/D7618
Matt Harbison <matt_harbison@yahoo.com> [Wed, 18 Dec 2019 00:41:12 -0500] rev 44007
inno: drop support for Windows 95/98/ME
Differential Revision: https://phab.mercurial-scm.org/D7696
Georges Racinet <georges.racinet@octobus.net> [Wed, 25 Dec 2019 19:03:07 +0100] rev 44006
rust-matchers: fixing cargo doc
Block quotes marked as `ignore` are still parsed as Rust
source examples.
Differential Revision: https://phab.mercurial-scm.org/D7783
Georges Racinet <georges.racinet@octobus.net> [Wed, 25 Dec 2019 15:17:55 +0100] rev 44005
rust-core: extracted a revlog submodule
This moves fundamental definitions from the top of the crate
to the newly created `revlog` submodule and reexports them for
easy compatibility.
As we are about to add new features to this crate, we felt it
will improve clarity, and moreso if `ancestors` and `dagops`
would become submodules of `revlog`.
Differential Revision: https://phab.mercurial-scm.org/D7782
Rodrigo Damazio Bovendorp <rdamazio@google.com> [Thu, 19 Dec 2019 00:32:42 -0800] rev 44004
phases: make the working directory consistently a draft
Before this change, `hg log -r 'wdir() and public()'` would return it.
Differential Revision: https://phab.mercurial-scm.org/D7705
Georges Racinet <georges.racinet@octobus.net> [Wed, 25 Dec 2019 14:53:45 +0100] rev 44003
rust-core: updated copyright notice
The intention here is to put an email address that actually
works (I did have full personal copyrights with my
former affiliation).
It is also an opportunity to acknowledge that I've not been
the only one to work on this file.
Differential Revision: https://phab.mercurial-scm.org/D7781
Martin von Zweigbergk <martinvonz@google.com> [Fri, 27 Dec 2019 09:55:35 -0800] rev 44002
tests: fix failing doctest in match.py by adding dummy auditor
It was failing with "OSError: [Errno 13] Permission denied:
'/root/sub'". It has been failing since
8b1a9ba375e5 (match: make sure
`root` argument is always an absolute path (API), 2019-12-13). I don't
know why I didn't notice it before sending that patch.
Differential Revision: https://phab.mercurial-scm.org/D7731
Kyle Lippincott <spectral@google.com> [Thu, 02 Jan 2020 17:30:27 -0800] rev 44001
remotefilelog: actually fix (and test this time) a bytes vs str issue
I attempted this in
94670e124d29 but we didn't actually have any tests for this
function it seems, and I mistook "it works now" for it being fixed (when what
had actually happened was that my cache had populated enough that I didn't
trigger the minimum threshold on my reattempts).
Differential Revision: https://phab.mercurial-scm.org/D7785
Augie Fackler <augie@google.com> [Tue, 07 Jan 2020 09:26:06 -0500] rev 44000
merge with stable
Augie Fackler <raf@durin42.com> [Mon, 06 Jan 2020 14:58:32 -0500] rev 43999
Added signature for changeset
b4c82b704180
Augie Fackler <raf@durin42.com> [Mon, 06 Jan 2020 14:58:31 -0500] rev 43998
Added tag 5.2.2 for changeset
b4c82b704180
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 19:00:38 -0500] rev 43997
revset: drop some unused code in the `remote` revset
PyCharm flagged the `revs = [..]` as an unused assignment. But then neither
`revs` nor `checkout` is used, and I can't see where `hg.addbranchrevs()` has
external side effects.
Differential Revision: https://phab.mercurial-scm.org/D7764
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 18:52:48 -0500] rev 43996
tests: avoid using a list comprehension to fill a list with fixed values
Flagged by PyCharm as an unused assignment for the variable in the list.
Differential Revision: https://phab.mercurial-scm.org/D7763
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 18:21:41 -0500] rev 43995
histedit: avoid using a list comprehension to fill a list with fixed values
Flagged by PyCharm as an unused assignment for the variable in the list.
Differential Revision: https://phab.mercurial-scm.org/D7762
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Dec 2019 09:55:45 -0800] rev 43994
zstandard: vendor python-zstandard 0.13.0
Version 0.13.0 of the package was just released. It contains
an upgraded zstd C library which can result in some performance
wins, official support for Python 3.8, and a blackened code base.
There were no meaningful code or functionality changes in this
release of python-zstandard: just reformatting and an upgraded
zstd library version. So the diff seems much larger than what it
is.
Files were added without modifications.
The clang-format-ignorelist file was updated to reflect a new
header file in the zstd distribution.
# no-check-commit because 3rd party code has different style guidelines
Differential Revision: https://phab.mercurial-scm.org/D7770
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 18:54:57 -0500] rev 43993
hgweb: delete a local variable instead of setting to `None`
The previous code was flagged by PyCharm as an unused variable assignment.
Differential Revision: https://phab.mercurial-scm.org/D7761
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 18:52:15 -0500] rev 43992
tests: drop unused local variable assignments in linelog
Flagged by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7760
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 18:51:45 -0500] rev 43991
ui: delete local variables instead of setting to `None`
The previous code was flagged by PyCharm as an unused variable assignment.
Differential Revision: https://phab.mercurial-scm.org/D7759
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 18:50:40 -0500] rev 43990
tests: drop unused local variable assignments in remotefilelog
Flagged by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7758
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 18:43:18 -0500] rev 43989
fastannotate: drop unused local variable assignments
Flagged by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7757
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 18:34:12 -0500] rev 43988
fsmonitor: drop an unused local variable assignment
Flagged by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7756
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 18:26:51 -0500] rev 43987
mq: drop an unused variable assignment
Flagged by PyCharm. This variable is the index of a `for` loop below.
Differential Revision: https://phab.mercurial-scm.org/D7755
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 18:19:40 -0500] rev 43986
hgweb: delete local variable instead of setting it to `None`
The previous code was flagged by PyCharm as an unused variable assignment.
Differential Revision: https://phab.mercurial-scm.org/D7754
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 17:58:17 -0500] rev 43985
annotate: avoid using a list comprehension to fill a list with fixed values
Flagged by PyCharm as an unused assignment for the variable in the list.
Differential Revision: https://phab.mercurial-scm.org/D7753
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 17:54:45 -0500] rev 43984
fsmonitor: drop an unused local variable
Flagged by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7752
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 17:53:56 -0500] rev 43983
absorb: avoid using a list comprehension to fill a list with fixed values
Flagged by PyCharm as an unused assignment for the variable in the list.
Differential Revision: https://phab.mercurial-scm.org/D7751
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 16:57:28 -0500] rev 43982
run-tests: ensure the script exits when it fails to change directories
Caught by PyCharm as an unused variable assignment. This regressed in
c496e8c14b9e.
Differential Revision: https://phab.mercurial-scm.org/D7750
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 16:30:14 -0500] rev 43981
shelve: drop an unused variable assignment
Caught by PyCharm. This stopped being used in
a3b285882724.
Differential Revision: https://phab.mercurial-scm.org/D7749
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 14:58:02 -0500] rev 43980
hgweb: drop an unused variable assignment
Caught by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7748
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:56:08 -0500] rev 43979
revlog: drop an unused variable assignment
Caught by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7747
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:52:39 -0500] rev 43978
rebase: drop an unused variable assignment
Caught by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7746
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:50:53 -0500] rev 43977
polib: drop an unused local function
Caught by PyCharm.
Differential Revision: https://phab.mercurial-scm.org/D7745
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Dec 2019 13:47:17 -0500] rev 43976
perf: drop an unused variable assignment
Caught by PyCharm. A different formatter is created below in `_displaystats()`.
Differential Revision: https://phab.mercurial-scm.org/D7744
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