Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 21:26:21 +0200] rev 47608
amend: adjust the dirstate within a `parentchange` context
The adjustment in the direct consequence of the amend and the associated parents
change.
Differential Revision: https://phab.mercurial-scm.org/D11032
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 21:20:37 +0200] rev 47607
dirstate: use the right internal API in a test script
The goal of the script it to perform arbitrary internal operation to create
incorrect state, so lets make it clear.
Differential Revision: https://phab.mercurial-scm.org/D11031
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 19:06:32 +0200] rev 47606
sparse: clear rules in the context of a `parentchanges` context
This is the same logic as the change we did for narrow.
Differential Revision: https://phab.mercurial-scm.org/D11029
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 18:59:55 +0200] rev 47605
sparse: make sure we adjust the dirstate at the same time as the parent
This is more correct and help our API split.
Differential Revision: https://phab.mercurial-scm.org/D11028
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 18:51:45 +0200] rev 47604
narrow: update narrow spec within a dirstate.parentchange context
Even if the parents does not changes, the parents' content we consider is
changed. So this seems legitimate.
Differential Revision: https://phab.mercurial-scm.org/D11027
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 18:30:24 +0200] rev 47603
revert: use `set_untracked` instead of `drop` when applicable
This is the new shiny API.
Differential Revision: https://phab.mercurial-scm.org/D11026
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jul 2021 04:47:36 +0200] rev 47602
revert: use `set_untracked` when performing a revert
This is the new shiny API.
Differential Revision: https://phab.mercurial-scm.org/D11022
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