Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 04:26:30 +0200] rev 47601
mq: use `set_untracked` in `qrename`
This is the new shiny API.
Differential Revision: https://phab.mercurial-scm.org/D11021
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 01:06:46 +0200] rev 47600
context: use `dirstate.set_untracked` in `context.forget`
This is the new shiny API.
Differential Revision: https://phab.mercurial-scm.org/D11020
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 00:54:40 +0200] rev 47599
dirstate: add a `set_untracked` method for "hg remove"-like usage
This is a step further toward clarifying the semantic of various dirstate call.
See the justification for adding `set_tracked` for details.
Differential Revision: https://phab.mercurial-scm.org/D11019
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 04:32:31 +0200] rev 47598
mq: use `set_tracked` in `qrename`
This is the new shiny API.
Differential Revision: https://phab.mercurial-scm.org/D11018
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 03:42:14 +0200] rev 47597
mq: update the dirstate and its parent within a `parentchange` context
This is more correct, and move our plan of separated API for different dirstate
usage forward.
note: maybe the `parentchange` context manager should replace the dirstateguard
entirely ? (in this case we should probably deprecated dirstateguard).
Differential Revision: https://phab.mercurial-scm.org/D11017
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 01:20:46 +0200] rev 47596
context: use `dirstate.set_tracked` for `revert`
This is the new shiny API.
Differential Revision: https://phab.mercurial-scm.org/D11016
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 00:57:25 +0200] rev 47595
context: use `dirstate.set_tracked` in context.copy
This is the new shiny API.
Differential Revision: https://phab.mercurial-scm.org/D11015
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 00:58:44 +0200] rev 47594
context: use `dirstate.set_tracked` in `context.add`
This is the new shiny API.
Differential Revision: https://phab.mercurial-scm.org/D11014
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 03:03:34 +0200] rev 47593
dirstate: add a `set_tracked` method for "hg add"-like usage
This is a step further toward clarifying the semantic of various dirstate call.
Having a dedicated function comes with a couple of benefits:
1) we can move duplicated logic about how to handle the previous state within
the dirstate. Since we are sure this is always called in the same situation, we
can implement that logic once in the dirstate.
2) having a dedicated method for this case unlock also having a dedicated
method for the other case and recording more information at that time. All this
leading having more code within the dirstate and higher level API that are less
error prone.
Differential Revision: https://phab.mercurial-scm.org/D11013
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 10 Jul 2021 23:31:51 +0200] rev 47592
dirstate: add a function to update tracking status while "moving" parents
The `scmutil.dirstateparent` is moving the dirstate parent without touching the
working copy. It is used by history-rewriting operations like amending of
folding.
The function was directly doing the "low level" computation and dirstate
change. All that logic belong to the dirstate and should be moved there.
For this purpose we introduce a new function that does just that and use it.
Differential Revision: https://phab.mercurial-scm.org/D11012
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 10:05:23 +0200] rev 47591
dirstate: introduce an internal `_drop` method
We want to split current user of `dirstate.drop` between `hg rm`-like cases and
update of the dirstate coming from update/merge.
To do this we will introduce new API. The first step is to introduces an
internal function that these new API migh use (or not use) to distinct between
the migrated users and the others.
Differential Revision: https://phab.mercurial-scm.org/D11023
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 07 Jul 2021 19:32:22 +0200] rev 47590
dirstate: introduce an internal `_remove` method
We want to split current user of `dirstate.remove` between `hg rm`-like cases and
update of the dirstate coming from update/merge.
To do this we will introduce new API. The first step is to introduces an
internal function that these new API migh use (or not use) to distinct between
the migrated users and the others.
Differential Revision: https://phab.mercurial-scm.org/D11011
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 07 Jul 2021 19:31:52 +0200] rev 47589
dirstate: introduce an internal `_add` method
We want to split current user of `dirstate.add` between `hg add`-like cases and
update of the dirstate coming from update/merge.
To do this we will introduce new API. The first step is to introduces an
internal function that these new API migh use (or not use) to distinct between
the migrated users and the others.
Differential Revision: https://phab.mercurial-scm.org/D11010
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Jul 2021 22:37:24 +0200] rev 47588
run-tests: rely on an actual executable in PATH instead of alias for `hg`
The alias approach is poorly inherited by other process that the test might
spawn.
To solve this we use the same approach as for `python`/`python3` we write an
executable file explicitly. Doing this fixes `which hg` invocation that now
returns the same location as `hg`.
Using chg server side has some minor effect on some stdout/stderr ordering when
using `chg` as the server too.
Differential Revision: https://phab.mercurial-scm.org/D11053
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Jul 2021 20:42:26 +0200] rev 47587
tests: blacklist a handful of test with `rhg` or `chg`
The use of `alias` to enforce `chg` and `rhg` means we are actually using a mix
of `rhg`/`chg` and `hg` when calling `hg` in the test. Fixing this breaks
various tests. This would be a large detour to fix that. I am disabling
them for now with an appropriate comment.
We would hopefully get back to them by the 5.8 release.
Differential Revision: https://phab.mercurial-scm.org/D11052
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 10 Jul 2021 01:58:34 +0200] rev 47586
run-tests: use more explicit signaling for `chg`
Using a dedicated variable is clearer and less fragile. It cannot hurt.
Differential Revision: https://phab.mercurial-scm.org/D11051
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 10 Jul 2021 01:57:35 +0200] rev 47585
run-tests: drop the `rhg` flag for `hghave.py` if unset
This seems cleaner.
Differential Revision: https://phab.mercurial-scm.org/D11050
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Jul 2021 20:03:46 +0200] rev 47584
run-tests: introduce a `HGTEST_REAL_HG` variable for test
It turns out that currently, `hg` and `which hg` can point to different things
because `hg` is an alias… This is annoying because script and pieces of test
are unknowingly using the wrong `hg`.
We will fix it in another changeset. However some test actually need to use a
real `hg` binary and not some `chg` or `rhg` equivalent. So we introduce a new
variable with the right value and we put it to us in the appropriate location.
Differential Revision: https://phab.mercurial-scm.org/D11049
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Jul 2021 17:06:53 +0200] rev 47583
run-test: clarify the error with a bad --with-hg is passed
This helped me to understand what was going on when I got into trouble.
Differential Revision: https://phab.mercurial-scm.org/D11046
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 10 Jul 2021 17:19:07 +0200] rev 47582
windows: make sure we fully read and cleanly close the connection
Maybe this will prevent server on Windows to sometimes complains about the
client closing the connection too soon. So we make sure we read everything and
we officially close the connection.
Hopefully Windows will be happier and the test will stop being flaky.
Differential Revision: https://phab.mercurial-scm.org/D11073
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 10 Jul 2021 02:42:09 +0200] rev 47581
test-bookmark: clarify the path involved in a pull creating divergence
This make the test easier to follow. Especially because this part is currently
failing on windows.
Differential Revision: https://phab.mercurial-scm.org/D11056
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 10 Jul 2021 02:25:06 +0200] rev 47580
test-removeemptydirs: adjust to Windows behavior for the `histedit` case
Windows stay in the "same" directory and the warning message is not applicable.
This make `tests/test-removeemptydirs.t` pass on Windows.
Differential Revision: https://phab.mercurial-scm.org/D11055
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 10 Jul 2021 02:18:56 +0200] rev 47579
test-removeemptydirs: clarify the state of things in the `histedit` case
This make the test easier to follow and will help to compare with the behavior
on windows.
Differential Revision: https://phab.mercurial-scm.org/D11054
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Jul 2021 20:09:46 +0200] rev 47578
test-infinitepush: drop unused helper
They are unused since
de4c2f3af97f. We drop them for clarity.
Differential Revision: https://phab.mercurial-scm.org/D11048
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Jul 2021 17:02:01 +0200] rev 47577
run-tests: setup "correct" python earlier
I don't see any good reason to wait. This result in slightly simpler code.
Differential Revision: https://phab.mercurial-scm.org/D11047
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Jul 2021 16:28:45 +0200] rev 47576
run-tests: cleanup windows generation of the python / python3 pointeur
They are no need to generate then in RUNTESTDIR and we don't need a python2
executable. (because not test ever use `python2` explicitly).
This is probably still not perfect, but at least it is better.
Differential Revision: https://phab.mercurial-scm.org/D11045
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Jul 2021 15:29:58 +0200] rev 47575
run-tests: always define a custom-bin directory
We are always generating `python` / `python3` executable and we will soon often
generate a `hg` executable. So let's always make it a thing. This will help us
to make sure we have the appropriate binary available to all script. On both
linux and Windows.
Differential Revision: https://phab.mercurial-scm.org/D11044
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Jul 2021 16:18:41 +0200] rev 47574
run-tests: explicitly track that `pythondir` was inferred
If we want to know that something happened, we should simply track that this
things happened.
This will be useful to start using `tmpbindir` more in a different form.
Differential Revision: https://phab.mercurial-scm.org/D11043
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Jul 2021 15:39:43 +0200] rev 47573
run-tests: use a global WINDOWS constant instead of multiple tests
This should make the code clearer.
This required the adjustement of a hack in the code testing this code.
Differential Revision: https://phab.mercurial-scm.org/D11041
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Jul 2021 13:36:39 +0200] rev 47572
test-run-test: use explicit variables to clarify paths
Since $TESTTMP and $TESTDIR are defined for both the main scope and the test
run during the test, the situation get confusing. To work around that, we
define some new, explicit, variables with the values we needs to keep track
of.
Differential Revision: https://phab.mercurial-scm.org/D11034
Raphaël Gomès <rgomes@octobus.net> [Wed, 23 Jun 2021 14:34:55 +0200] rev 47571
run-tests: also catch double-escapes for $TESTTMP
On Windows the `$TESTTMP` string "repr" is different than its value, because `\`
become `\\`. We introduce a new `$STR_REPR_TESTTMP` substitution to match that
too.
Differential Revision: https://phab.mercurial-scm.org/D11001
Raphaël Gomès <rgomes@octobus.net> [Thu, 08 Jul 2021 17:13:18 +0200] rev 47570
ci-windows: introduce manual windows CI
Note: most of the foundational work of this commit was done by Matt Harbison,
but enough has changed that I don't feel comfortable sending this patch as his.
In our quest to remove Python 2 from Mercurial, we need to get Windows CI going
to check that Python 3 support is up to an acceptable standard.
This is the first step: adding a manual step to run a full Windows CI, with a
certain definition of "full" since some things are not installed yet, like SVN.
Differential Revision: https://phab.mercurial-scm.org/D11025
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 04 Jul 2021 23:41:54 +0200] rev 47569
dirstate-item: deprecate tuple access on the class
This should help us to catch and update the last user of this, especially in
extensions.
People will need to run the test with --pure to actually catch it, but this is
better than nothing.
Differential Revision: https://phab.mercurial-scm.org/D10992
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 05 Jul 2021 06:44:49 +0200] rev 47568
dirstate-item: use the v1_serialization method in debugstate
I am assuming the debug command are looking into the serialized format so I am
using the `v1_` variants. This assumption might be wrong.
Differential Revision: https://phab.mercurial-scm.org/D10988
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 05 Jul 2021 10:32:49 +0200] rev 47567
dirstate-item: also build DistateItem in dirstate.directories()
The rust code was building tuple.
Differential Revision: https://phab.mercurial-scm.org/D10983
Augie Fackler <augie@google.com> [Thu, 08 Jul 2021 17:09:57 -0400] rev 47566
parsers: move DirstateItem to attr.s
This is the followup I requested on D10949 - it was easy, so I just
did it.
Differential Revision: https://phab.mercurial-scm.org/D11030
Daniel Ploch <dploch@google.com> [Fri, 02 Jul 2021 11:44:13 -0700] rev 47565
cmdutil: fix newandmodified file accounting for --interactive commits
`originalchunks` is a misleading name, because it only contains header objects, which are flattened to selected hunks by the filter function. As such, `chunks not in originalchunks` is always True and misleading, because hunk objects never compare equal to header objects. This change fixes the internal naming and removes the useless parameter from the method.
This change also fixes
issue6533, by considering the filtered headers, rather than the hunks, when determining new and modified files. If a file is renamed + edited, and the edited hunks are deselected (but the file is not), the filtered chunks will contain a header for the file (because it's .special()) but but no hunks.
Differential Revision: https://phab.mercurial-scm.org/D10936
Raphaël Gomès <rgomes@octobus.net> [Wed, 07 Jul 2021 15:09:26 +0200] rev 47564
test-run-tests: add missing backslash for Windows
Differential Revision: https://phab.mercurial-scm.org/D11004
Raphaël Gomès <rgomes@octobus.net> [Thu, 24 Jun 2021 12:54:55 +0200] rev 47563
windows: use cpu-intensive task instead of real time in test
Windows profiling breaks when using real time instead of cpu, but we need the
extension function to show up, so make it do something instead of waiting.
I've also duplicated the test cases so that explicit real and CPU times are
tested (on platforms other than Windows)
Differential Revision: https://phab.mercurial-scm.org/D11003
Raphaël Gomès <rgomes@octobus.net> [Thu, 24 Jun 2021 12:51:53 +0200] rev 47562
windows: use shell function instead of variable substitution
This makes it compatible with Windows
Differential Revision: https://phab.mercurial-scm.org/D11002
Raphaël Gomès <rgomes@octobus.net> [Tue, 06 Jul 2021 10:51:41 +0200] rev 47561
compat: normalise path before comparison in revlog splitting test
This fixes the test on Window.
Differential Revision: https://phab.mercurial-scm.org/D10999
Raphaël Gomès <rgomes@octobus.net> [Thu, 08 Jul 2021 15:55:15 +0200] rev 47560
windows: replicate the normalizing behavior of os.environ
On Windows, `os.environ` normalizes environment variables to uppercase. Our
current bytes-based environ substitution object is a simple dict, so we add
the normalization behavior.
This fixes test-http-peer.t on Windows.
Differential Revision: https://phab.mercurial-scm.org/D10998
Raphaël Gomès <rgomes@octobus.net> [Thu, 08 Jul 2021 15:55:04 +0200] rev 47559
encoding: move case-related utils up
This will be useful for the next commit that needs this code earlier.
Differential Revision: https://phab.mercurial-scm.org/D11024
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 04 Jul 2021 02:24:15 +0200] rev 47558
dirstate: drop the last explicit `state` usage in the module
The internal detail of the `state` bytes is not longer exposed to the dirstate
layer.
Differential Revision: https://phab.mercurial-scm.org/D10977
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Jul 2021 20:20:37 +0200] rev 47557
test: use a python script in `test-transaction-rollback-on-sigpipe.t`
This still does not work on Windows, but at least this is a python script now.
Differential Revision: https://phab.mercurial-scm.org/D10947
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Jul 2021 20:53:23 +0200] rev 47556
test: make sure we hit the SIGPIPE in test-transaction-rollback-on-sigpipe
With a coming change, we might not hit the sig pipe without issue and extra line
of output. We do this early to make the next change clearer.
Differential Revision: https://phab.mercurial-scm.org/D10946
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Jul 2021 20:22:56 +0200] rev 47555
test: clarify some output in `test-transaction-rollback-on-sigpipe`
We don't want a dirty transaction to remain, but need to check the transaction
was aborted. Otherwise it is easy to have no abandoned transaction if the
transaction succeed.
Differential Revision: https://phab.mercurial-scm.org/D10945
Martin von Zweigbergk <martinvonz@google.com> [Tue, 29 Jun 2021 13:58:18 -0700] rev 47554
tests: add test case for issue 6262
If you split a commit, prune one of the sides, and then try to revive
that commit by adding a successor, it will incorrectly be considered
divergence.
Differential Revision: https://phab.mercurial-scm.org/D10916
Martin von Zweigbergk <martinvonz@google.com> [Tue, 29 Jun 2021 14:02:34 -0700] rev 47553
rewriteutil: look up common predecessor on unfiltered repo
Before this patch, the code looking for divergence could crash when
tried to look up a common predecessor in the filtered repo. This patch
fixes that by looking up the common predecessor in an unfiltered repo.
Differential Revision: https://phab.mercurial-scm.org/D10917
Martin von Zweigbergk <martinvonz@google.com> [Wed, 07 Jul 2021 10:07:28 -0700] rev 47552
tests: demonstrate crash when common predecessor of divergence is hidden
Differential Revision: https://phab.mercurial-scm.org/D11009
Augie Fackler <augie@google.com> [Wed, 07 Jul 2021 11:48:08 -0400] rev 47551
shallowutil: dedent code after the previous change
Differential Revision: https://phab.mercurial-scm.org/D11008
Augie Fackler <augie@google.com> [Wed, 07 Jul 2021 11:47:02 -0400] rev 47550
shallowutil: narrow scope of try/except block
This will make this code easier to understand in the future.
Differential Revision: https://phab.mercurial-scm.org/D11007
Augie Fackler <augie@google.com> [Wed, 07 Jul 2021 11:45:17 -0400] rev 47549
remotefilelog: stop using RuntimeError for control flow
We introduce a new exception to handle the various failure categories,
rather than relying on RuntimeError.
Differential Revision: https://phab.mercurial-scm.org/D11006
Augie Fackler <augie@google.com> [Wed, 07 Jul 2021 13:20:47 -0400] rev 47548
remotefilelog: tweak corrupt cache test to grep more flexibly
I'm about to fix the abuse of RuntimeError here, which breaks the test
if I don't do this.
Differential Revision: https://phab.mercurial-scm.org/D11005
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 05 Jul 2021 06:39:29 +0200] rev 47547
dirstatenonnormalcheck: fix some bytes formating on python3
Passing any object to `%s` no longer works, we need to explicitely convert the
representation to bytes.
Differential Revision: https://phab.mercurial-scm.org/D10993
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 05 Jul 2021 06:38:58 +0200] rev 47546
dirstate-item: use the properties in `contrib/dirstatenonnormalcheck.py`
Differential Revision: https://phab.mercurial-scm.org/D10991
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 05 Jul 2021 06:27:26 +0200] rev 47545
dirstate-item: use the properties in largefiles
I am now sure what large file is doing with then, but at least it is no longer
using the tuple API to access data.
Differential Revision: https://phab.mercurial-scm.org/D10990
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 05 Jul 2021 06:45:32 +0200] rev 47544
dirstate-item: use the `state` property in debugpathcomplete
Ideally we would use narrower property, but this is a good start.
Differential Revision: https://phab.mercurial-scm.org/D10989
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 05 Jul 2021 06:24:51 +0200] rev 47543
dirstate-item: use the properties in fakedirstatewritetime
Differential Revision: https://phab.mercurial-scm.org/D10987
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 05 Jul 2021 03:58:38 +0200] rev 47542
dirstate-item: use the properties in dirstatemap
Differential Revision: https://phab.mercurial-scm.org/D10986