Tue, 14 Feb 2023 20:04:17 +0100 transaction: run abort callback in all cases
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Feb 2023 20:04:17 +0100] rev 49994
transaction: run abort callback in all cases Previously, these possibly important callback were "forgotten" when running a quick rollback. This is now fixed, as the tests shown.
Tue, 14 Feb 2023 18:59:04 +0100 transaction: clarify the "quick abort" scenario
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Feb 2023 18:59:04 +0100] rev 49993
transaction: clarify the "quick abort" scenario Right now, the transaction has a code-pass to do a "quick abort" that skip most¹ (too much) of the logic when the right condition are detected² We are about to improve this logic in multiple aspect. We clarify the code first. The conditional return in `_can_quick_abort` looks a bit weird because we are about to make them more complex very soon. [1] actually too much [2] actually not often enough
Tue, 07 Feb 2023 15:27:37 +0100 test: use a more direct form of interruption in fncache "recover" testing
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 07 Feb 2023 15:27:37 +0100] rev 49992
test: use a more direct form of interruption in fncache "recover" testing The previous test was relying on implementation details and harder to maintain. The new version is closer to the initial intend : "What happens if the process die without cleanup". This change is motivated by further changes around the transaction and dirstate logic that would break the fragile equilibrium that existed before this patch. Making this change early make it easier to review on its own and remove noise in future larger changes.
Tue, 07 Feb 2023 13:14:59 +0100 test: use a more direct approach to test racy mutation
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 07 Feb 2023 13:14:59 +0100] rev 49991
test: use a more direct approach to test racy mutation The previous test was relying on implementation details and harder to maintain. The new version is closer to the initial intend : "What happens the file get overwritten from under the current process" This change is motivated by further changes around the transaction and dirstate logic that would break the fragile equilibrium that existed before this patch. Making this change early make it easier to review on its own and remove noise in future larger changes.
Mon, 13 Feb 2023 23:56:13 +0100 test: create some history in test-dirstate-backup
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 13 Feb 2023 23:56:13 +0100] rev 49990
test: create some history in test-dirstate-backup An empty repository, based on `null` is quite a corner cases. We create a more "natural" setup for this tests to make sure it can keep testing what it intend to test in the future.
Tue, 07 Feb 2023 12:42:45 +0100 test: explicitly "add" file before some commit in test-keyword.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 07 Feb 2023 12:42:45 +0100] rev 49989
test: explicitly "add" file before some commit in test-keyword.t `hg commit -A` will revert the `hg addremove` step if the commit fails. However `hg rollback` currently does not. We are about to improve internal consistency around transaction and dirstate and the behavior of `hg rollback` will align on the other behavior in the process. Before doing so, we make sure the test is using a separate call to `hg add` to avoid the test scenario to be affected by that future change. note: the behavior change for `hg rollback` seems fine as it affect a niche usecase and `hg rollback` usage have been strongly discouraged for a while.
Mon, 13 Feb 2023 19:46:39 +0100 test: explicitly "add" file before some commit in test-filecache.py
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 13 Feb 2023 19:46:39 +0100] rev 49988
test: explicitly "add" file before some commit in test-filecache.py `hg commit -A` will revert the `hg addremove` step if the commit fails. However `hg rollback` currently does not. We are about to improve internal consistency around transaction and dirstate and the behavior of `hg rollback` will align on the other behavior in the process. Before doing so, we make sure the test is using a separate call to `hg add` to avoid the test scenario to be affected by that future change. note: the behavior change for `hg rollback` seems fine as it affect a niche usecase and `hg rollback` usage have been strongly discouraged for a while.
Mon, 13 Feb 2023 17:42:10 +0100 test: explicitly "add" file before some commit in test-bookmark.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 13 Feb 2023 17:42:10 +0100] rev 49987
test: explicitly "add" file before some commit in test-bookmark.t `hg commit -A` will revert the `hg addremove` step if the commit fails. However `hg rollback` currently does not. We are about to improve internal consistency around transaction and dirstate and the behavior of `hg rollback` will align on the other behavior in the process. Before doing so, we make sure the test is using a separate call to `hg add` to avoid the test scenario to be affected by that future change. note: the behavior change for `hg rollback` seems fine as it affect a niche usecase and `hg rollback` usage have been strongly discouraged for a while.
Mon, 13 Feb 2023 17:42:32 +0100 test: explicitly "add" file before some commit in test-rollback.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 13 Feb 2023 17:42:32 +0100] rev 49986
test: explicitly "add" file before some commit in test-rollback.t `hg commit -A` will revert the `hg addremove` step if the commit fails. However `hg rollback` currently does not. We are about to improve internal consistency around transaction and dirstate and the behavior of `hg rollback` will align on the other behavior in the process. Before doing so, we make sure the test is using a separate call to `hg add` to avoid the test scenario to be affected by that future change. note: the behavior change for `hg rollback` seems fine as it affect a niche usecase and `hg rollback` usage have been strongly discouraged for a while.
Wed, 11 Jan 2023 17:30:55 +0100 rhg-files: add support for narrow when specifying a revision
Raphaël Gomès <rgomes@octobus.net> [Wed, 11 Jan 2023 17:30:55 +0100] rev 49985
rhg-files: add support for narrow when specifying a revision This makes it so that `rhg files -r NODE` works properly when using narrow.
Wed, 11 Jan 2023 17:08:23 +0100 rust-narrow: enable narrow support for plain `rhg files`
Raphaël Gomès <rgomes@octobus.net> [Wed, 11 Jan 2023 17:08:23 +0100] rev 49984
rust-narrow: enable narrow support for plain `rhg files` Support for `rhg files -r NODE` in a future changeset.
Wed, 11 Jan 2023 17:28:48 +0100 rhg-files: make signature of `display_files` more flexible
Raphaël Gomès <rgomes@octobus.net> [Wed, 11 Jan 2023 17:28:48 +0100] rev 49983
rhg-files: make signature of `display_files` more flexible This allows the callers to use any error type that converts to `CommandError` instead of a particular concrete type.
Thu, 12 Jan 2023 10:28:56 +0100 rhg: fix user-facing error message so it matches Python implementation
Raphaël Gomès <rgomes@octobus.net> [Thu, 12 Jan 2023 10:28:56 +0100] rev 49982
rhg: fix user-facing error message so it matches Python implementation
Wed, 11 Jan 2023 16:42:29 +0100 rust-ui: refactor ui code for printing narrow/sparse warnings
Raphaël Gomès <rgomes@octobus.net> [Wed, 11 Jan 2023 16:42:29 +0100] rev 49981
rust-ui: refactor ui code for printing narrow/sparse warnings This will be used elsewhere in the code, starting from the next commit.
Wed, 11 Jan 2023 16:29:29 +0100 rhg-files: reuse centralized dirstate logic
Raphaël Gomès <rgomes@octobus.net> [Wed, 11 Jan 2023 16:29:29 +0100] rev 49980
rhg-files: reuse centralized dirstate logic The `files` logic predates the centralized dirstate logic. It was duplicated, an didn't receive bugfixes along the way.
Wed, 11 Jan 2023 17:27:19 +0100 rust: move `filter_map_results` to public util
Raphaël Gomès <rgomes@octobus.net> [Wed, 11 Jan 2023 17:27:19 +0100] rev 49979
rust: move `filter_map_results` to public util This is a useful general-purpose function. It will be used in the next changesets.
Wed, 11 Jan 2023 15:44:21 +0100 rhg: fix typo
Raphaël Gomès <rgomes@octobus.net> [Wed, 11 Jan 2023 15:44:21 +0100] rev 49978
rhg: fix typo
Fri, 03 Feb 2023 12:54:17 +0100 fix: add more information to the debug output stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Feb 2023 12:54:17 +0100] rev 49977
fix: add more information to the debug output The previous debug output did not help to understand which file where fixed in which revision. The new output should cover that.
Fri, 03 Feb 2023 17:31:54 -0500 run-tests: stop ignoring venv-installed packages
Matt Harbison <matt_harbison@yahoo.com> [Fri, 03 Feb 2023 17:31:54 -0500] rev 49976
run-tests: stop ignoring venv-installed packages This will allow test dependencies to be installed within a venv, instead of tampering with sys/user sites. One thing to note here is that the `VIRTUAL_ENV` path takes precedence over system-site, unlike when run directly with an activated `venv`. For example, `sys.path` as viewed from a feature test in `hghave.py`, when running `hghave vcr` directly with an activated `venv`: sys.path: [ '/home/jenkins/hg-committed/tests', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/jenkins/test_venv/lib/python3.8/site-packages' ] vs `sys.path` from the same feature test, when run by `run-tests.py` with this change: sys.path: [ '/home/jenkins/hg-committed/tests', '/home/jenkins/hg-committed', '/home/jenkins/hg-committed/tests', '/home/jenkins/test_venv/lib/python3.8/site-packages', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/jenkins/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages' ]
Mon, 30 Jan 2023 16:59:15 -0500 bundlerepo: raise `error.LookupError` instead of `LookupError`
Matt Harbison <matt_harbison@yahoo.com> [Mon, 30 Jan 2023 16:59:15 -0500] rev 49975
bundlerepo: raise `error.LookupError` instead of `LookupError` I'm pretty sure that this was the intention, given `error.LookupError` is raised a few lines above with the same arguments. Note that PyCharm complains about `self.display_id` (and the use above this too) being `() -> Any` instead of `bytes`, but it may be confused about the `util.propertycache` annotation on it.
Mon, 30 Jan 2023 16:49:41 -0500 unionrepo: resync several methods to actually override superclass methods
Matt Harbison <matt_harbison@yahoo.com> [Mon, 30 Jan 2023 16:49:41 -0500] rev 49974
unionrepo: resync several methods to actually override superclass methods Not sure how/when these skewed, but these were flagged by PyCharm as having different signatures.
Fri, 03 Feb 2023 01:07:59 -0500 hgweb: unbyteify the 100-continue check stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 03 Feb 2023 01:07:59 -0500] rev 49973
hgweb: unbyteify the 100-continue check The environment seems to be `str` or `tuple[int]`, and the same check in `wsgicgi.py` is already `str` based, so I suspect this was wrong. I think what happened here is that the string wasn't `r''` prefixed in 482d6f6dba91 like `wsgicgi.py`, so it got wrongly byteified in 687b865b95ad when converting to byte literals en masse.
Tue, 31 Jan 2023 11:41:59 +0100 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 31 Jan 2023 11:41:59 +0100] rev 49972
branching: merge with stable
Mon, 30 Jan 2023 18:50:11 +0100 setup: treat error output and non-zero return code differently stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 30 Jan 2023 18:50:11 +0100] rev 49971
setup: treat error output and non-zero return code differently Choking on Mercurial's stderr mean armless warning can derails the whole install process. We do like to be able to issue warning to people so we stop considering any stderr is a fatal mistake. This allow us to actually boostrap a version of Mercurial without loosing to many sanity point. For example in case where evolve is not loaded, something that happens when the recorded version is malformatted. Creating a wonderful ouroboros.
Mon, 30 Jan 2023 18:41:59 +0100 setup: make the version computation process more resistant stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 30 Jan 2023 18:41:59 +0100] rev 49970
setup: make the version computation process more resistant The tag fetching might return and empty string¹, from there everything derails quickly. As setup tools becomes more picky about version format we make the whole seems a bit more robust. The resulting version will be obviously weird, but at least it will actually install itself. [1] This is a problem we will address in the next changesets.
Mon, 30 Jan 2023 18:25:11 -0500 bundlerepo: enforce the requirements declared by the underlying repository stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 30 Jan 2023 18:25:11 -0500] rev 49969
bundlerepo: enforce the requirements declared by the underlying repository Previously, `hg log -r 'bundle()' -R bundle.hg` was failing for me when run from source, complaining about an unknown parent, when the system installed `hg` didn't. Some debugging showed the index was 0 length. It turned out that I didn't have the C extensions compiled, which a simple `hg log -r .` was able to indicate. The problem being that the RequirementError got handled by RepoError, which uses an empty directory as a fallback to process the bundle.
Sat, 28 Jan 2023 18:26:28 +0400 scmutil: make checknewlabel() allow "_" in otherwise numeric names (issue6737) stable
Anton Shestakov <av6@dwimlabs.net> [Sat, 28 Jan 2023 18:26:28 +0400] rev 49968
scmutil: make checknewlabel() allow "_" in otherwise numeric names (issue6737)
Thu, 29 Apr 2021 22:01:04 +0200 storageutil: match node length with repository
Joerg Sonnenberger <joerg@bec.de> [Thu, 29 Apr 2021 22:01:04 +0200] rev 49967
storageutil: match node length with repository
Tue, 13 Dec 2022 12:50:52 +0100 dirstate: enforce holding the lock while doing any changes
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 13 Dec 2022 12:50:52 +0100] rev 49966
dirstate: enforce holding the lock while doing any changes This seems like a sensible sanity check. This already caught the issue in largefile. This will catch more issue when we start using similar context manager for operation other than the parent changes.
Fri, 27 Jan 2023 00:45:07 +0100 largefile: make sure we hold the lock when updating the second dirstate
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 27 Jan 2023 00:45:07 +0100] rev 49965
largefile: make sure we hold the lock when updating the second dirstate The largefile extension uses a second dirstate file (and object) to track some states. In some situations, it is lazily updated when needed. These operations might not have the lock taken. This means they might conflict and race with other ongoing operations. So we now take the lock to do these operations. This was caught by the next commit.
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 tip