- Dec 11, 2023
-
-
Pierre-Yves David authored
The test suite mostly use small repositories, that implies that most changelog in the tests are inlined. As a result, non-inlined changelog are quite poorly tested. Since non-inline changelog are most common case for serious repositories, this lack of testing is a significant problem that results in high profile issue like the one recently fixed by 66417f55ea33 and 849745d7da89. Inlining the changelog does not bring much to the table, the number of total file saved is negligible, and the changelog will be read by most operation anyway. So this changeset is make it so we never inline the changelog, and de-inline the one that are still inlined whenever we touch them. By doing that, we remove the "dual code path" situation for writing new entry to the changelog and move to a "single code path" situation. Having a single code path simplify the code and make sure it is covered by test (if test cover that situation obviously) This impact all tests that care about the number of file and the exchange size, but there is nothing too complicated in them just a lot of churn. The churn is made "worse" by the fact rust will use the persistent nodemap on any changelog now. Which is overall a win as it means testing the persistent nodemap more and having less special cases. In short, having inline changelog is mostly useless and an endless source of pain. We get rid of it.
-
Pierre-Yves David authored
The test is focussing on the inline flag, so we glob out the other to highlight that fact and prevent noise in the future.
-
Pierre-Yves David authored
This test previously checked the transaction safety of splitting the changelog. The changelog is a special case, with delayed/diverted writes and we will stop inlining it soon. So we keep testing that transaction is safe around inline on another revlog type : a filelog. Minor comestic adjustement will be done in the next changesets.
-
- Dec 07, 2023
-
-
Pierre-Yves David authored
We will make this revlog non-inline, so we clarify the code to make sure it is simple to adjust the test later.
-
Pierre-Yves David authored
Not sure why we kept the number here.
-
- Dec 12, 2023
-
-
Pierre-Yves David authored
-
- Dec 07, 2023
-
-
Pierre-Yves David authored
The format cannot encode the lack of tip_rev. There is currently nothing known to write such empty nodemap right now, but the change we are preparing on default reveal this issue. So I had rather fix it on stable.
-
- Dec 12, 2023
-
-
Julien Cristau authored
ncurses patchlevel 20231111 started returning an error from endwin() if called twice without a intervening screen update. Per Sven Joachim in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1058041#17: "AFAICS, invoking curses.echo() and curses.endwin() is superfluous because curses.wrapper already does that for you, and calling curses.endwin() twice throws an error with the newer ncurses. Removing those two lines should fix the problem."
-
- Dec 07, 2023
-
-
Martin von Zweigbergk authored
This continues the work from 972f3e5c94b8. We saw a crash on line 956 but I updated lots of other places as well.
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
- Dec 02, 2023
-
-
Anton Shestakov authored
There is an stdin variable in the global scope of this module. And in the `finally` block of this try-finally statement we're checking `if stdin is not None`. Let's make sure we don't confuse code check tools into thinking we want to use global stdin by moving this line of code outside of `try`. This was caught by pytype 2023.11.21 on Python 3.11.2.
-
Anton Shestakov authored
All other uses of this function in this extension are already fixed (i.e. use strings instead of bytes). This was caught by pytype 2023.11.21 on Python 3.11.2.
-
- Dec 06, 2023
-
-
Pierre-Yves David authored
If we are in the inline case, we need to align the location of the "data" file with the temporary location of the file (i.e. "00changelog.i.a"). However we should not do that for non-inline case… and before this changeset we had been doing it. In addition `index_file` is already a property taking care of updating the "segment file" filename when needed. So we can simply remove all that code. As a result, code trying to read the diverted data before they were committed ended deeply confused as the "00changelog.i.a" file is nothing like the "00changelog.d" file. However nothing corrupted data as all writing where properly handled outside of the "segment file". In "best" cases this small in-memory corruption of the filename when unnoticed until the transaction was committed or rolled back and in the worse case, some data reading was failing during the transaction and resulted in the transaction to be rolled back. However wrong data never reached the disk, so this bug should be have corrupted any repository. This is not catch by tests because most test use a small repository and therefor an inline revlog. In addition the bug only triggers when a changelog read is done in the following "rare" situation: - after some delayed write - after that data have been written in a "divert" file (i.e. `00.changelog.i.a`) - before transaction commit - outside of a "writing" context The issue was introduced in d83d788590a8
-
Pierre-Yves David authored
Before this change, the index entry would be seen as "appended" to the data file. It did not hurt too much as there are never accessed for reading, but this was odd. So lets stop doing so.
-
Pierre-Yves David authored
This assert is currently happy, but it does not hurt to adds it to clarify expected state and catch potential error in the future.
-
- Nov 29, 2023
-
-
Martin von Zweigbergk authored
This fixes the bug demonstrated by the previous patch.
-
Martin von Zweigbergk authored
-
- Apr 11, 2023
-
-
Pierre-Yves David authored
Things like `zstd` can make the pure version fails.
-
- Dec 01, 2023
-
-
Pierre-Yves David authored
This help when trying to debug this logic.
-
- Dec 02, 2023
-
-
Pierre-Yves David authored
The temporary revlog cannot go through the inline → split process as this would break at transaction commit. (that might be fixable, but lets keep things simple for now). We introduce a cleaner way to enforce this as the previous one was broken in 6.6 On the way we remove multiple weird, fragile and broken overwrite of revlog attributes and we focus on passing the configuration across. We also had to update the test to actually create a non-inline revlog.
-
Pierre-Yves David authored
This allow for a clean skipping of the inline feature when needed, for example by censor.
-
Pierre-Yves David authored
This will be useful to fix censor in a later changeset.
-
Pierre-Yves David authored
The source revlog should not be inlined and it is…
-
- Nov 15, 2023
-
-
Arseniy Alekseyev authored
-
Arseniy Alekseyev authored
Adding a function merge_join_results_by, a version of itertools::merge_join_by that works on "fallible" iterators (iterators that can produce errors)
-
- Oct 16, 2023
-
-
Arseniy Alekseyev authored
-
- Dec 03, 2023
-
-
Pierre-Yves David authored
The function was not doing it what it advertise for a long time. So we fix it and we add a way for the perf extensions to detect broken version.
-
Pierre-Yves David authored
It seems like this code never run?
-
- Dec 04, 2023
-
-
Arseniy Alekseyev authored
The problem is that [hg locate] lists removed files too. We use [hg files] instead because that does not list removed files.
-
- Dec 02, 2023
-
-
Matt Harbison authored
This fixes test-https.t on Windows. It looks like the real error translation is "Cannot assign requested address.", and the message here is the start of a longer description, so I'm not sure why this part is emitted. But it's not worth digging into, as it's evidently the same failure.
-
Matt Harbison authored
The `identify --debug` command here on Windows emits skip updating dirstate: identity mismatch because of the debug switch, which got captured and added to `.hgtags`, and then hijinx ensued. The point of `--debug` seemed to be to get the long hash, so just do that with templating. I have not idea if the message is indicating a problem- there seems to be many more of them in other tests that are not present on Linux.
-
Matt Harbison authored
This fixes a "TypeError: getattr(): attribute name must be string" crash and subsequent test spew. This likely broke in 18c8c18993f0 and was missed in CI because `pytest-vcr` is missing.
-
- Nov 13, 2023
-
-
Martin von Zweigbergk authored
I guess we missed these instances because they're not covered by tests. This is a graft of 1625fe807c04 that landed on default.
-
- Nov 27, 2023
-
-
Pierre-Yves David authored
Checking every single revision is too slow, let's use a sampling approach.
-
- Nov 14, 2023
-
-
Euxane TRAN-GIRARD authored
Previously, `-T'{diffstat}'` was giving stats from the diff against p1, regardless of whether `--config diff.merge=yes` is set. This was inconsistent with `log --patch` which is aware of that option.
-
- Nov 15, 2023
-
-
Euxane TRAN-GIRARD authored
This function will be used outside of the log command (in templatekw, used by hgweb, for which logcmdutil is not available). Let's move this function together with the rest of the diff-related utils instead.
-
- Sep 07, 2023
-
-
Zeger Van de Vannet authored
-