Fri, 15 Jan 2021 01:58:59 +0100 branchmap: update rev-branch-cache incrementally
Joerg Sonnenberger <joerg@bec.de> [Fri, 15 Jan 2021 01:58:59 +0100] rev 46372
branchmap: update rev-branch-cache incrementally Historically, the revision to branch mapping cache was updated on demand and shared via bundle2 to avoid the cost of rebuilding on first use. Use the new `register_changeset` callback and update rbc directly on every change. Make the transfer of the bundle part redundant, but keep it for the moment to avoid the test churn. Over all, "hg unbundle" for large bundles is less than 1.8% slower for different larger repositories and that seems to a reasonable trade off. Differential Revision: https://phab.mercurial-scm.org/D9781
Tue, 19 Jan 2021 00:20:53 +0100 repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de> [Tue, 19 Jan 2021 00:20:53 +0100] rev 46371
repository: introduce register_changeset callback The new callback is called whenever a changeset is added to the repository (commit, unbundle or exchange). Since the bulk operations already parse the changeset (readfiles or full changesetrevision), always use the latter to avoid redundant lookups. The first consumer of the new interface needs to look at extra. Differential Revision: https://phab.mercurial-scm.org/D9780
Fri, 15 Jan 2021 01:30:08 +0100 changelog: move branchinfo to changelogrevision
Joerg Sonnenberger <joerg@bec.de> [Fri, 15 Jan 2021 01:30:08 +0100] rev 46370
changelog: move branchinfo to changelogrevision The function parses the extra dictionary after looking up the changelogrevision. To avoid duplicated look up, it is better to provide it as property of changelogrevision instead. Keep the function for a release cycle as at least the topic extension depends on it. Differential Revision: https://phab.mercurial-scm.org/D9779
Fri, 22 Jan 2021 11:10:39 +0100 rust: lower compile error on non-linux platforms to a warning
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Fri, 22 Jan 2021 11:10:39 +0100] rev 46369
rust: lower compile error on non-linux platforms to a warning As discussed on D9671#146704 this lowers the error to a warning. Differential Revision: https://phab.mercurial-scm.org/D9852
Mon, 18 Jan 2021 10:24:20 +0100 purge: move extension into core mercurial
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 18 Jan 2021 10:24:20 +0100] rev 46368
purge: move extension into core mercurial The motivation is simple: it's nicer to avoid gating basic functionality. To reduce the risk of people shooting themselves in the feet, `--confirm` is now the default, unless the extensions is loaded.. For review of the body of the purge command, use this instead of what hg/phabricator will show (the block of code is modified, not just moved): Differential Revision: https://phab.mercurial-scm.org/D9820
Mon, 18 Jan 2021 10:24:11 +0100 purge: also deal with directory with --confirm
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 18 Jan 2021 10:24:11 +0100] rev 46367
purge: also deal with directory with --confirm Getting the exact number is simple (you have to project the result of previous deletion to detect super-directory with only about-to-be-deleted content). So we use a vaguer message. Differential Revision: https://phab.mercurial-scm.org/D9819
Mon, 18 Jan 2021 10:24:03 +0100 purge: add a --confirm option
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 18 Jan 2021 10:24:03 +0100] rev 46366
purge: add a --confirm option The options provide a prompt to the user before permanent deletion are made. The prompt is currently not aware of directory deletion. I'll fix this in the next changesets. Differential Revision: https://phab.mercurial-scm.org/D9818
Mon, 11 May 2020 18:45:45 -0400 filemerge: add a hacktastic version of internal:merge3 for merge diffs
Augie Fackler <augie@google.com> [Mon, 11 May 2020 18:45:45 -0400] rev 46365
filemerge: add a hacktastic version of internal:merge3 for merge diffs This is a version of merge3 that always reports success, so that conflict markers get preserved without us having to implement conflict storage for in-memory merge. Credit to martinvonz for the idea. The only planned consumer of this "merge tool" is my upcoming merge-diffs functionality, though I suspect it could be useful in other ways. Differential Revision: https://phab.mercurial-scm.org/D8515
Sun, 24 Jan 2021 19:14:50 -0500 packaging: include `windows_curses` when building py2exe stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 24 Jan 2021 19:14:50 -0500] rev 46364
packaging: include `windows_curses` when building py2exe The `_curses.pyd` module was previously being included by py2exe's module search, but it left out `_curses_panel.pyd`. Differential Revision: https://phab.mercurial-scm.org/D9857
Sun, 24 Jan 2021 19:08:47 -0500 packaging: allow specifying modules to include with py2exe stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 24 Jan 2021 19:08:47 -0500] rev 46363
packaging: allow specifying modules to include with py2exe Maybe this was missing because there wasn't a need for it. Differential Revision: https://phab.mercurial-scm.org/D9856
Thu, 28 May 2020 17:31:41 -0400 rebase: add a config knob for forcing in-memory rebasing
Augie Fackler <augie@google.com> [Thu, 28 May 2020 17:31:41 -0400] rev 46362
rebase: add a config knob for forcing in-memory rebasing Use it in a test case where we know the rebase should proceed without incident in-memory, so we can see tracebacks rather than fallbacks. This makes it easier to try and debug when things are broken. Differential Revision: https://phab.mercurial-scm.org/D8623
Mon, 18 May 2020 17:29:53 -0400 cleanup: use mergestate.unresolvedcount() instead of bool(list(unresolved()))
Augie Fackler <augie@google.com> [Mon, 18 May 2020 17:29:53 -0400] rev 46361
cleanup: use mergestate.unresolvedcount() instead of bool(list(unresolved())) This avoids some pointless copying. Differential Revision: https://phab.mercurial-scm.org/D8566
Fri, 15 Jan 2021 01:20:47 +0100 reverse-branch-cache: switch to doubling allocating scheme
Joerg Sonnenberger <joerg@bec.de> [Fri, 15 Jan 2021 01:20:47 +0100] rev 46360
reverse-branch-cache: switch to doubling allocating scheme In preperation for updating the reverse-branch-cache incrementally whenever a new changeset comes in, avoid bad performance on resize with Python 3.7 (and likely other 3.x versions). Differential Revision: https://phab.mercurial-scm.org/D9778
Sun, 17 Jan 2021 23:21:33 +0100 discovery: add config options to control sample size
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 17 Jan 2021 23:21:33 +0100] rev 46359
discovery: add config options to control sample size This get useful for running analysis of the current algorithm. Differential Revision: https://phab.mercurial-scm.org/D9813
Tue, 19 Jan 2021 00:20:42 +0100 exchangev2: avoid second look-up by node
Joerg Sonnenberger <joerg@bec.de> [Tue, 19 Jan 2021 00:20:42 +0100] rev 46358
exchangev2: avoid second look-up by node Accessing the revlog by node is slightly more expensive than by revision, so look up the revision first and use it afterwards. Differential Revision: https://phab.mercurial-scm.org/D9831
Tue, 19 Jan 2021 00:18:39 +0100 commit: look-up new revision once
Joerg Sonnenberger <joerg@bec.de> [Tue, 19 Jan 2021 00:18:39 +0100] rev 46357
commit: look-up new revision once Look-up by node is slightly more expensive, so since it is necessary more than once, do it explicitly. Differential Revision: https://phab.mercurial-scm.org/D9830
Tue, 19 Jan 2021 14:00:42 -0800 resolve: also detect new :mergediff conflict markers
Martin von Zweigbergk <martinvonz@google.com> [Tue, 19 Jan 2021 14:00:42 -0800] rev 46356
resolve: also detect new :mergediff conflict markers The conflict markers created by `:mergediff` were not detected as conflicts, which affects both `commands.resolve.mark-check` and `mergetools.<tool>.check`. This patch fixes that. The new regex it uses for finding conflict markers is less restrictive because it `:mergediff` doesn't follow the `<<<<<<<` and `>>>>>>>` lines by a space (and a description). Hopefully lines like that don't give too many false positives. We can add back the space and make `:mergediff` add trailing spaces if it turns out to be a problem. OTOH, there will always be some false positives and we have ways of overriding the checks already. This patch can go onto the default or stable branch, depending on how much we care about an experimental feature. Differential Revision: https://phab.mercurial-scm.org/D9835
Mon, 18 Jan 2021 22:32:09 -0800 simplemerge: delete unused find_unconflicted()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 18 Jan 2021 22:32:09 -0800] rev 46355
simplemerge: delete unused find_unconflicted() The function has been unused ever since it was introduced in 465b9ea02868 (Import 3-way merge code from bzr, 2007-04-16). Differential Revision: https://phab.mercurial-scm.org/D9832
Fri, 04 Dec 2020 10:11:01 +0100 perf: use the `perf--` prefix for perf command
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 04 Dec 2020 10:11:01 +0100] rev 46354
perf: use the `perf--` prefix for perf command This is the one command namespace where they should not be any ambiguity about command that should be in it. The perf extensions is only adding performance related command. so this is a good ground to start putting dash folding to the tests. Differential Revision: https://phab.mercurial-scm.org/D9516
Sun, 24 Jan 2021 18:24:11 -0800 contrib: update PyOxidizer to 0.10.3 stable
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 24 Jan 2021 18:24:11 -0800] rev 46353
contrib: update PyOxidizer to 0.10.3 This is necessary to work around a bug that caused build failures on current stable with 0.9.0. This patch was used to build the 5.7rc0 Windows installers. Differential Revision: https://phab.mercurial-scm.org/D9858
Fri, 08 Jan 2021 16:58:23 +0100 contrib: stop building rust for every job stable
Raphaël Gomès <rgomes@octobus.net> [Fri, 08 Jan 2021 16:58:23 +0100] rev 46352
contrib: stop building rust for every job This is just wasteful for all steps that do not use Rust. Differential Revision: https://phab.mercurial-scm.org/D9717
Thu, 21 Jan 2021 23:24:58 -0500 share-safe: fix an abort message that references the experimental requirement stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 21 Jan 2021 23:24:58 -0500] rev 46351
share-safe: fix an abort message that references the experimental requirement Differential Revision: https://phab.mercurial-scm.org/D9851
Thu, 21 Jan 2021 23:22:12 -0500 doc: fix a formatting error in requirements.txt stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 21 Jan 2021 23:22:12 -0500] rev 46350
doc: fix a formatting error in requirements.txt Differential Revision: https://phab.mercurial-scm.org/D9850
Thu, 21 Jan 2021 23:21:45 -0500 doc: drop the `exp-` prefix from the `share-safe` requirement stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 21 Jan 2021 23:21:45 -0500] rev 46349
doc: drop the `exp-` prefix from the `share-safe` requirement I can't tell if we should leave the experimental one around for historical documentation purposes, but I'm not sure if there's value to doing that. Differential Revision: https://phab.mercurial-scm.org/D9849
Wed, 20 Jan 2021 12:23:40 +0100 share-share: have the hint issue more consistently and point to the right doc stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 20 Jan 2021 12:23:40 +0100] rev 46348
share-share: have the hint issue more consistently and point to the right doc This should help user in trouble to find solution in the documentation. Differential Revision: https://phab.mercurial-scm.org/D9841
Wed, 20 Jan 2021 12:13:17 +0100 doc: point to the main share-safe doc in the "mismatch" config stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 20 Jan 2021 12:13:17 +0100] rev 46347
doc: point to the main share-safe doc in the "mismatch" config User should be able to find their way with that. Differential Revision: https://phab.mercurial-scm.org/D9840
Wed, 20 Jan 2021 12:12:31 +0100 doc: improves the share-safe documentation stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 20 Jan 2021 12:12:31 +0100] rev 46346
doc: improves the share-safe documentation The associated behavior is now clearer and we point to the other configuration that control the mismatching behavior. Differential Revision: https://phab.mercurial-scm.org/D9839
Wed, 20 Jan 2021 12:11:41 +0100 doc: remove the section about share-safe from its verbose gating stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 20 Jan 2021 12:11:41 +0100] rev 46345
doc: remove the section about share-safe from its verbose gating The feature is no longer experimental. Differential Revision: https://phab.mercurial-scm.org/D9838
Wed, 20 Jan 2021 12:08:10 +0100 doc: relocate doc for `share.safe-mismatch.source-safe.warn` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 20 Jan 2021 12:08:10 +0100] rev 46344
doc: relocate doc for `share.safe-mismatch.source-safe.warn` The documentation for the option is now right after its parent configuration: `share.safe-mismatch.source-safe` Differential Revision: https://phab.mercurial-scm.org/D9837
Wed, 20 Jan 2021 00:40:41 -0500 tests: skip a detailed exit status in test-lfs-test-server stable
Matt Harbison <matt_harbison@yahoo.com> [Wed, 20 Jan 2021 00:40:41 -0500] rev 46343
tests: skip a detailed exit status in test-lfs-test-server The mode of failure here differs between `lfs-test-server` and `hg serve`, and they each throw a different exception. The `hg serve` case raises a subclass of `StorageError`, which gets a detailed status. The `lfs-test-server` case raises a subclass of `Abort`, which does not. Since the exit code isn't currently conditionizable in the tests, this is the simplest way to avoid the failure. Differential Revision: https://phab.mercurial-scm.org/D9836
Wed, 20 Jan 2021 14:57:56 +0100 tests: deal with more timing differences in output stable
Joerg Sonnenberger <joerg@bec.de> [Wed, 20 Jan 2021 14:57:56 +0100] rev 46342
tests: deal with more timing differences in output Differential Revision: https://phab.mercurial-scm.org/D9842
Tue, 19 Jan 2021 12:22:05 -0500 merge with stable
Augie Fackler <augie@google.com> [Tue, 19 Jan 2021 12:22:05 -0500] rev 46341
merge with stable
Tue, 19 Jan 2021 22:37:35 +0530 Added signature for changeset 9da65e3cf370 stable
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 19 Jan 2021 22:37:35 +0530] rev 46340
Added signature for changeset 9da65e3cf370
Tue, 19 Jan 2021 22:37:09 +0530 Added tag 5.7rc0 for changeset 9da65e3cf370 stable
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 19 Jan 2021 22:37:09 +0530] rev 46339
Added tag 5.7rc0 for changeset 9da65e3cf370
Tue, 19 Jan 2021 21:48:43 +0530 merge with stable stable 5.7rc0
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 19 Jan 2021 21:48:43 +0530] rev 46338
merge with stable
Mon, 18 Jan 2021 19:16:49 +0530 share: move share safe functionality out of experimental
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 18 Jan 2021 19:16:49 +0530] rev 46337
share: move share safe functionality out of experimental The share-safe functionality is complete and all configuration options are implemented. The behavior is well discussed on mailing list and in reviews. Let's unmark this as experimental to solve a chichen and egg issue. Differential Revision: https://phab.mercurial-scm.org/D9823
Fri, 15 Jan 2021 12:08:07 +0530 share: rename share-safe warning config
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 15 Jan 2021 12:08:07 +0530] rev 46336
share: rename share-safe warning config Config introduced in previous patch was `share.source-safe-mismatch`. Let's rename the warn as `share.source-safe-mismatch.warn`. While we are here, made sure we have different configs for upgrade and downgrade. Differential Revision: https://phab.mercurial-scm.org/D9786
Mon, 18 Jan 2021 21:37:20 +0530 share: rework config options to be much clearer and easier
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 18 Jan 2021 21:37:20 +0530] rev 46335
share: rework config options to be much clearer and easier Recently I implemented various boolean configs which control how to behave when there is a share-safe mismatch between source and share repository. Mismatch means that source supports share-safe where as share does not or vice versa. However, while discussion and documentation we realized that it's too complicated and there are some combinations of values which makes no sense. We decided to introduce a config option with 4 possible values which makes controlling and understanding things easier. The config option `share.safe-mismatch.source-{not-}safe` can have following 4 values: * abort (default): error out if there is mismatch * allow: allow to work with respecting share source configuration * {up|down}grade-abort: try to {up|down}grade, if it fails, abort * {up|down}grade-allow: try to {up|down}grade, if it fails, continue in allow mode I am not sure if I can explain 3 config options which I deleted right now in just 5 lines which is a sign of how complex they became. No test changes demonstrate that functionality is same, only names have changed. Differential Revision: https://phab.mercurial-scm.org/D9785
Mon, 18 Jan 2021 19:16:49 +0530 share: move share safe functionality out of experimental
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 18 Jan 2021 19:16:49 +0530] rev 46334
share: move share safe functionality out of experimental The share-safe functionality is complete and all configuration options are implemented. The behavior is well discussed on mailing list and in reviews. Let's unmark this as experimental to solve a chichen and egg issue. Differential Revision: https://phab.mercurial-scm.org/D9823
Fri, 15 Jan 2021 12:08:07 +0530 share: rename share-safe warning config
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 15 Jan 2021 12:08:07 +0530] rev 46333
share: rename share-safe warning config Config introduced in previous patch was `share.source-safe-mismatch`. Let's rename the warn as `share.source-safe-mismatch.warn`. While we are here, made sure we have different configs for upgrade and downgrade. Differential Revision: https://phab.mercurial-scm.org/D9786
Mon, 18 Jan 2021 21:37:20 +0530 share: rework config options to be much clearer and easier
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 18 Jan 2021 21:37:20 +0530] rev 46332
share: rework config options to be much clearer and easier Recently I implemented various boolean configs which control how to behave when there is a share-safe mismatch between source and share repository. Mismatch means that source supports share-safe where as share does not or vice versa. However, while discussion and documentation we realized that it's too complicated and there are some combinations of values which makes no sense. We decided to introduce a config option with 4 possible values which makes controlling and understanding things easier. The config option `share.safe-mismatch.source-{not-}safe` can have following 4 values: * abort (default): error out if there is mismatch * allow: allow to work with respecting share source configuration * {up|down}grade-abort: try to {up|down}grade, if it fails, abort * {up|down}grade-allow: try to {up|down}grade, if it fails, continue in allow mode I am not sure if I can explain 3 config options which I deleted right now in just 5 lines which is a sign of how complex they became. No test changes demonstrate that functionality is same, only names have changed. Differential Revision: https://phab.mercurial-scm.org/D9785
Thu, 14 Jan 2021 21:34:12 +0530 localrepo: disallow share if there is a version mismatch by default
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 21:34:12 +0530] rev 46331
localrepo: disallow share if there is a version mismatch by default Earlier we used to allow shares which don't use share-safe mechanism to access repository which uses share-safe mechanism. This defeats the purpose and is bad behavior. This patch disallows that. Next patch will introduce a config option to allow that and have clearer understanding around various options. Differential Revision: https://phab.mercurial-scm.org/D9784
Mon, 18 Jan 2021 19:50:21 +0530 upgrade: re-read current requirements after taking lock
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 18 Jan 2021 19:50:21 +0530] rev 46330
upgrade: re-read current requirements after taking lock Since we are writing to repository, it's better to re-read after taking the lock. Differential Revision: https://phab.mercurial-scm.org/D9822
Thu, 14 Jan 2021 21:29:46 +0530 upgrade: take lock only for part where it's required
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 21:29:46 +0530] rev 46329
upgrade: take lock only for part where it's required The final config calculation code does not require a lock, only writing it back does require one. Differential Revision: https://phab.mercurial-scm.org/D9783
Mon, 18 Jan 2021 19:19:47 +0100 clang-format: reorder includes to appease the formatter
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 18 Jan 2021 19:19:47 +0100] rev 46328
clang-format: reorder includes to appease the formatter The bad order was introduced in d0225a22040c. Differential Revision: https://phab.mercurial-scm.org/D9829
Mon, 18 Jan 2021 01:15:10 -0500 run-tests: catch a Windows specific error when testing for a free socket
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 Jan 2021 01:15:10 -0500] rev 46327
run-tests: catch a Windows specific error when testing for a free socket I'm not sure why this only happens with py3, but this error code doesn't map to any of the 3 currently being handled, and kills `run-tests.py` before it can run any tests when it happens: OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions The documentation[1] says this can happen if another process is bound to the address with exclusive access. This seems to keep it happy. [1] https://docs.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2 Differential Revision: https://phab.mercurial-scm.org/D9816
Mon, 18 Jan 2021 00:50:01 -0500 run-tests: work around the Windows firewall popup for server processes
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 Jan 2021 00:50:01 -0500] rev 46326
run-tests: work around the Windows firewall popup for server processes Windows doesn't have a `python3` executable, so cc0b332ab9fc attempted to work around the issue by copying the current python to `python3.exe`. That put it in `_tmpbindir` because of failures in `test-run-tests.t` when using `_bindir`, which looked like a process was trying to open it to write out a copy while it was in use. (Interestingly, I couldn't reproduce this running the test by itself in a loop for a couple of hours, but it happens constantly when running all tests.) The problem with using `_tmpbindir` is that it is the randomly generated path for the test run, and instead of Windows Firewall remembering the executable signature or image hash when allowing the process to open a server port, it apparently remembers the image path. That means every run will trigger a popup to allow it, which is bad for firing off a test run and walking away. I tried to symlink to the python executable, but that currently requires admin priviledges[1]. This will prompt the first time if the underlying python binary has never opened a server port, but appears to avoid it on subsequent runs. [1] https://bugs.python.org/issue40687 Differential Revision: https://phab.mercurial-scm.org/D9815
Sun, 17 Jan 2021 22:25:15 -0500 hghave: split apart testing for the curses module and `tic` executable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 Jan 2021 22:25:15 -0500] rev 46325
hghave: split apart testing for the curses module and `tic` executable ef771d329961 skipped the check for the `tic` executable, because the curses module alone on Windows is enough to pass the `test-*-curses.t` tests. However, `test-status-color.t` uses this same check and explicitly invoked the executable, which fails on Windows. From the cursory searching I did, curses on unix requires `tic`, which I assume is why they were tied together in the first place. So this continues to require both to get past the curses guards on non Windows platforms. Differential Revision: https://phab.mercurial-scm.org/D9814
Mon, 18 Jan 2021 13:59:54 +0100 sqlitestore: disable test with chg
Joerg Sonnenberger <joerg@bec.de> [Mon, 18 Jan 2021 13:59:54 +0100] rev 46324
sqlitestore: disable test with chg There are known issues with transactions not being closed in a timely fashion, making the test flakey. Differential Revision: https://phab.mercurial-scm.org/D9821
Fri, 15 Jan 2021 20:26:21 +0100 heptapod-ci: allow testing with docker image other than :latest
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Jan 2021 20:26:21 +0100] rev 46323
heptapod-ci: allow testing with docker image other than :latest The project have a default config of latest for this variable. Differential Revision: https://phab.mercurial-scm.org/D9792
Sun, 17 Jan 2021 20:27:59 +0100 persistent-nodemap: also exchange the nodemap data over the wire
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 17 Jan 2021 20:27:59 +0100] rev 46322
persistent-nodemap: also exchange the nodemap data over the wire It appears that 2 bytes are never equals to 3 bytes. Differential Revision: https://phab.mercurial-scm.org/D9810
Sun, 17 Jan 2021 19:22:30 +0100 persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 17 Jan 2021 19:22:30 +0100] rev 46321
persistent-nodemap: catch the right exception on python On Python 2, Missing file are IOError, not OSError, apparently. Differential Revision: https://phab.mercurial-scm.org/D9809
Sun, 17 Jan 2021 02:50:26 -0500 hghave: adjust the definition of `tic` to allow curses tests on Windows
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 Jan 2021 02:50:26 -0500] rev 46320
hghave: adjust the definition of `tic` to allow curses tests on Windows Might as well pick up the test coverage if it works as-is. Differential Revision: https://phab.mercurial-scm.org/D9808
Wed, 09 Dec 2020 00:51:35 -0500 windows: wrap `os.getcwd()` in `os.path.realpath()` on py3
Matt Harbison <matt_harbison@yahoo.com> [Wed, 09 Dec 2020 00:51:35 -0500] rev 46319
windows: wrap `os.getcwd()` in `os.path.realpath()` on py3 I noticed various `test-check-*` failures that were printing absolute paths when repo relative paths were expected. This was due to the drive letter in `repo.root` being uppercased as it is run through `os.path.realpath()`, and then the simple string comparison against the (lowercased) `_cwd` member of dirstate in `dirstate.getcwd()` causing an absolute path to be returned, instead of the expected `b''`. That in turn causes `scmutil.getuipathfn()` to wrongly use `repo.pathto()` with an absolute cwd path. . Differential Revision: https://phab.mercurial-scm.org/D9806
Tue, 01 Dec 2020 21:51:41 -0500 packaging: include `windows-curses` on Windows
Matt Harbison <matt_harbison@yahoo.com> [Tue, 01 Dec 2020 21:51:41 -0500] rev 46318
packaging: include `windows-curses` on Windows Otherwise the interface degrades to the old hunk selection method on Windows when `ui.tweakdefaults=1`. I've been using this for a couple of months without any issues, other than it seems to toggle off edit mode for the terminal when run through MSYS. Using cmd.exe seems to work fine. Differential Revision: https://phab.mercurial-scm.org/D9805
Sat, 16 Jan 2021 20:15:10 -0500 cext: fix compiler error in revlog.c on Windows with py2
Matt Harbison <matt_harbison@yahoo.com> [Sat, 16 Jan 2021 20:15:10 -0500] rev 46317
cext: fix compiler error in revlog.c on Windows with py2 Visual Studio 2008 doesn't have <stdint.h>, and we worked around it before with this header. Differential Revision: https://phab.mercurial-scm.org/D9804
Sat, 16 Jan 2021 01:02:03 +0100 discovery: add a devel.discovery.exchange-heads
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 16 Jan 2021 01:02:03 +0100] rev 46316
discovery: add a devel.discovery.exchange-heads Currently all discovery start with testing local and remote heads. For analysis purpose we make it possible to disable that initial "handshake" and start discovery with the whole repository as undecided. Differential Revision: https://phab.mercurial-scm.org/D9801
Sun, 17 Jan 2021 02:48:15 +0100 test-regression: backing out D9640 (63c923fd7fa8)
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 17 Jan 2021 02:48:15 +0100] rev 46315
test-regression: backing out D9640 (63c923fd7fa8) Since D9640 was pushed, we have seen failure on at least: - test-commit-interactive.t - test-i18n.t - test-log.t The author that change requested it to be removed until he can investigate. For reference: https://phab.mercurial-scm.org/D9640 Backed out changeset 63c923fd7fa8 Differential Revision: https://phab.mercurial-scm.org/D9803
Fri, 15 Jan 2021 12:41:38 +0100 clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Jan 2021 12:41:38 +0100] rev 46314
clone: make sure we warm the cache after a clone This work around any deviciency/limitation of the clone process. In our case this ensure the persistent nodemap exist with valid content. Ideally, the cloning process would also do "the right thing". However since older server will never be able to do "the right thing". The local workaround will be necessary anyway. I am not worried by the performance impact of this as `hg clone` is non-instant on large repositories where is could matters. Warming the cache if they are already correct is very fast. And if they are not already warm, this seems like a good time to do so. This impact various test as more cache are now warmed sooner, all the change should be harmless. Differential Revision: https://phab.mercurial-scm.org/D9789
Thu, 14 Jan 2021 04:56:29 +0100 persistent-nodemap: remove the "experimental" tag to the feature
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 04:56:29 +0100] rev 46313
persistent-nodemap: remove the "experimental" tag to the feature This has been around for a while and has all the discussed configuration options. Differential Revision: https://phab.mercurial-scm.org/D9764
Wed, 13 Jan 2021 23:50:03 +0100 persistent-nodemap: drop the storage.revlog.nodemap.mode config
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Jan 2021 23:50:03 +0100] rev 46312
persistent-nodemap: drop the storage.revlog.nodemap.mode config We now have a new, better, higher level, option. So we can drop the older one as planned. Differential Revision: https://phab.mercurial-scm.org/D9763
Wed, 13 Jan 2021 23:41:37 +0100 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Jan 2021 23:41:37 +0100] rev 46311
persistent-nodemap: add a "abort" option to the slow-path config We make it the default, and document the behavior in the help for the main config option. Differential Revision: https://phab.mercurial-scm.org/D9762
Wed, 13 Jan 2021 23:07:41 +0100 persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Jan 2021 23:07:41 +0100] rev 46310
persistent-nodemap: add a "warn" option to the slow-path config And make it the default until we get an abort option. Differential Revision: https://phab.mercurial-scm.org/D9761
Wed, 13 Jan 2021 18:33:48 +0100 persistent-node: check the value of the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Jan 2021 18:33:48 +0100] rev 46309
persistent-node: check the value of the slow-path config We should probably provide some standard for this in config item, but this is a quest for another adventure. Differential Revision: https://phab.mercurial-scm.org/D9760
Thu, 14 Jan 2021 01:25:06 +0100 persistent-nodemap: add a revlog.storage.persistent-nodemap.slow-path option
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 01:25:06 +0100] rev 46308
persistent-nodemap: add a revlog.storage.persistent-nodemap.slow-path option As discussed during the sprint, we want to prevent user to get an unexpected performance regression when accessing a repository using "persistent-nodemap" without the associated Rust extension. We start by adding a config declaration and some documentation. Since "allow" is the current behavior, we don't need to add any code. The option possible value will come later. Note that we already have a `storage.revlog.nodemap.mode` option, but that option is a bit different. It does some warning and checking at revlog instantiation time. While we want something done at requirements checking time. Since we plan for new names and new config value names, we introduce a new option and will drop the old one later. Differential Revision: https://phab.mercurial-scm.org/D9758
Thu, 14 Jan 2021 01:12:42 +0100 persistent-nodemap: document storage.revlog.persistent-nodemap.mmap=no
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 01:12:42 +0100] rev 46307
persistent-nodemap: document storage.revlog.persistent-nodemap.mmap=no The feature is gaining public facing document, its options too. Differential Revision: https://phab.mercurial-scm.org/D9757
Wed, 13 Jan 2021 23:51:12 +0100 persistent-nodemap: rename the storage.revlog.nodemap.mmap option
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Jan 2021 23:51:12 +0100] rev 46306
persistent-nodemap: rename the storage.revlog.nodemap.mmap option Since the feature is publicly known as "persistent-nodemap" this seems better to reference it as "persistent-nodemap" in related config too. So we rename the option to `storage.revlog.persistent-nodemap.mmap`. Differential Revision: https://phab.mercurial-scm.org/D9756
Thu, 14 Jan 2021 00:56:27 +0100 persistent-nodemap: document the feature in `hg help config.format`
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 00:56:27 +0100] rev 46305
persistent-nodemap: document the feature in `hg help config.format` This is necessary before we advertise the feature more. Differential Revision: https://phab.mercurial-scm.org/D9755
Thu, 14 Jan 2021 00:37:36 +0100 persistent-nodemap: write down the sprint conclusion
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 00:37:36 +0100] rev 46304
persistent-nodemap: write down the sprint conclusion This write down the plan for turning feature that are only fast when the rust extension exists. Future changesets will implement it. Differential Revision: https://phab.mercurial-scm.org/D9754
Thu, 14 Jan 2021 00:33:40 +0100 persistent-nodemap: document the `devel.persistent-nodemap` option
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 00:33:40 +0100] rev 46303
persistent-nodemap: document the `devel.persistent-nodemap` option What it does is not obvious. Differential Revision: https://phab.mercurial-scm.org/D9753
Fri, 15 Jan 2021 23:47:16 +0100 copies: fix some comment in _filter
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Jan 2021 23:47:16 +0100] rev 46302
copies: fix some comment in _filter The scenario the comment describes match case 6, not case 2. Differential Revision: https://phab.mercurial-scm.org/D9793
Sat, 16 Jan 2021 00:54:33 +0100 discovery: move some debug output closer to were it belong
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 16 Jan 2021 00:54:33 +0100] rev 46301
discovery: move some debug output closer to were it belong I assume these debug output, increment and comment drifted over time. Differential Revision: https://phab.mercurial-scm.org/D9800
Sat, 16 Jan 2021 00:48:11 +0100 discovery: add a discovery.grow-sample.rate
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 16 Jan 2021 00:48:11 +0100] rev 46300
discovery: add a discovery.grow-sample.rate This allow to control the effect of the growth rate on the discovery process while doing analysis. Differential Revision: https://phab.mercurial-scm.org/D9799
Sat, 16 Jan 2021 00:29:17 +0100 discovery: add a `devel', b'discovery.grow-sample`
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 16 Jan 2021 00:29:17 +0100] rev 46299
discovery: add a `devel', b'discovery.grow-sample` That option make it possible to disable the "sample growing" behavior when doing analysis and comparison. Differential Revision: https://phab.mercurial-scm.org/D9798
Sat, 16 Jan 2021 00:21:54 +0100 discovery: document the `devel.discovery.randomize` option
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 16 Jan 2021 00:21:54 +0100] rev 46298
discovery: document the `devel.discovery.randomize` option Gratuitous improvement as I was passing by this config section to add more. Differential Revision: https://phab.mercurial-scm.org/D9797
Tue, 12 Jan 2021 09:11:15 -0800 shelve: move listshelves() to new ShelfDir class, so caller need not pass vfs
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Jan 2021 09:11:15 -0800] rev 46297
shelve: move listshelves() to new ShelfDir class, so caller need not pass vfs Differential Revision: https://phab.mercurial-scm.org/D9744
Tue, 12 Jan 2021 09:02:47 -0800 shelve: also create class representing whole directory of shelves
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Jan 2021 09:02:47 -0800] rev 46296
shelve: also create class representing whole directory of shelves It's a little annoying to have to create and pass in a vfs into `listshelves()`. This patch attempts to start addressing that by creating a class that represents a directory containing shelves (the directory can be either `.hg/shelved/` or `.hg/shelve-backup/`). Differential Revision: https://phab.mercurial-scm.org/D9743
Mon, 11 Jan 2021 23:08:37 -0800 shelve: add a method for deleting shelf to new shelf class
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Jan 2021 23:08:37 -0800] rev 46295
shelve: add a method for deleting shelf to new shelf class This is not necessary for my future changes, but it's more consistent to encapsulate the knowledge of the various files in the `Shelf` class. Differential Revision: https://phab.mercurial-scm.org/D9742
Mon, 11 Jan 2021 10:53:42 -0800 shelve: inline ".patch" constant now that it's only used in the Shelf class
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Jan 2021 10:53:42 -0800] rev 46294
shelve: inline ".patch" constant now that it's only used in the Shelf class Differential Revision: https://phab.mercurial-scm.org/D9741
Mon, 11 Jan 2021 23:06:45 -0800 shelve: use listshelves() in cleanupoldbackups()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Jan 2021 23:06:45 -0800] rev 46293
shelve: use listshelves() in cleanupoldbackups() With this patch, there are no more assumptions outside the `Shelf` class about which files (`.patch`, `.hg`, `.shelve`) make up a shelf. As such, this finishes the preparations for making phase-based shelve (perhaps optionally) not write the `.patch` and `.hg` files. Differential Revision: https://phab.mercurial-scm.org/D9740
Mon, 11 Jan 2021 23:02:20 -0800 shelve: make listshelves() list shelves in a given vfs
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Jan 2021 23:02:20 -0800] rev 46292
shelve: make listshelves() list shelves in a given vfs Differential Revision: https://phab.mercurial-scm.org/D9739
Tue, 12 Jan 2021 08:07:59 -0800 shelve: replace repo instance in Shelf class by vfs instance
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Jan 2021 08:07:59 -0800] rev 46291
shelve: replace repo instance in Shelf class by vfs instance I'd like to be able to teach the `Shelf` class to read shelves from `.hg/shelve-backup/` in addition to `.hg/shelved/`. That means that we'll have to pass in a vfs instead of the repo, so this patch does that preparation. Differential Revision: https://phab.mercurial-scm.org/D9738
Mon, 11 Jan 2021 10:35:52 -0800 shelve: use listdir() instead of readdir() when we don't need stat information
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Jan 2021 10:35:52 -0800] rev 46290
shelve: use listdir() instead of readdir() when we don't need stat information Differential Revision: https://phab.mercurial-scm.org/D9737
Fri, 08 Jan 2021 23:08:37 -0800 shelve: don't crash on file with unexpected extension in .hg/shelved/
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 Jan 2021 23:08:37 -0800] rev 46289
shelve: don't crash on file with unexpected extension in .hg/shelved/ We assumed that the files in the `.hg/shelved/` directory have an extension. That's a valid assumption except that users may put garbage in the directory. This patch fixes the crash by simply not assuming that the result of splittin a string at '.' yields an extension. We don't use the extension since the previous patch anyway. Differential Revision: https://phab.mercurial-scm.org/D9720
Mon, 11 Jan 2021 09:26:48 -0800 shelve: don't include invalid shelves in `hg shelve --list`
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Jan 2021 09:26:48 -0800] rev 46288
shelve: don't include invalid shelves in `hg shelve --list` Before this patch, if a shelved change is missing its `.hg` file, we still list it in `hg shelve --list`, but then `hg unshelve` crashes. This patch makes it so we only list valid shelved changes. This patch means that users who do `touch .hg/shelve/buy-milk.patch` as a form of TODO list will no longer see their TODO items in `hg shelve --list`. Differential Revision: https://phab.mercurial-scm.org/D9719
Thu, 07 Jan 2021 23:32:19 -0800 shelve: extract some repeated creation of shelf instances to variables
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 23:32:19 -0800] rev 46287
shelve: extract some repeated creation of shelf instances to variables This just looks cleaner to me; I'd be surprised if there's any measurable performance improvement. Differential Revision: https://phab.mercurial-scm.org/D9714
Thu, 07 Jan 2021 23:18:24 -0800 shelve: teach new shelf class to check if .shelve file exists
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 23:18:24 -0800] rev 46286
shelve: teach new shelf class to check if .shelve file exists This removes the only remaining use for `shelvedfile`, so the class now goes away. Differential Revision: https://phab.mercurial-scm.org/D9713
Thu, 07 Jan 2021 22:45:17 -0800 shelve: move method for creating backup to new shelf class
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 22:45:17 -0800] rev 46285
shelve: move method for creating backup to new shelf class Differential Revision: https://phab.mercurial-scm.org/D9712
Thu, 07 Jan 2021 23:09:04 -0800 shelve: make gennames() helper generate relative backup paths
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 23:09:04 -0800] rev 46284
shelve: make gennames() helper generate relative backup paths When I saw `gennames()`, I thought it was meant to take a relative filename as argument. Maybe it was or maybe it wasn't, but it seems simpler to pass it a relative path anyway, so that's what this patch does. That also makes the call to backupvfs.exists() more natural (I expect a relative path to be passed there too). Differential Revision: https://phab.mercurial-scm.org/D9711
Thu, 07 Jan 2021 22:38:19 -0800 shelve: use listshelves() in cleanup function
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 22:38:19 -0800] rev 46283
shelve: use listshelves() in cleanup function The point of this patch is to make it so all the callers of `shelvedfile.movetobackup()` look the same, so I can move it over to the new `Shelf` class next. Differential Revision: https://phab.mercurial-scm.org/D9710
Thu, 07 Jan 2021 16:08:30 -0800 shelve: inline shelvedfile.filename() since there are no callers outside class
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 16:08:30 -0800] rev 46282
shelve: inline shelvedfile.filename() since there are no callers outside class Differential Revision: https://phab.mercurial-scm.org/D9709
Thu, 07 Jan 2021 15:24:46 -0800 shelve: make listshelves() return shelf names instead of filenames
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 15:24:46 -0800] rev 46281
shelve: make listshelves() return shelf names instead of filenames All three callers now prefer the shelf name over the filename (already before my recent patches, two out of three callers preferred the shelf name). Differential Revision: https://phab.mercurial-scm.org/D9708
Thu, 07 Jan 2021 14:54:56 -0800 shelve: move method for getting stat (mtime) to new shelf class
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 14:54:56 -0800] rev 46280
shelve: move method for getting stat (mtime) to new shelf class Only the mtime was needed, so I made it restricted to that in the move. The new `Shelf` class expects its argument to be a shelf name (not a arbitrary filename like `shelvedfile` would accept), so only the shelf name is now passed in. Differential Revision: https://phab.mercurial-scm.org/D9707
Thu, 07 Jan 2021 15:24:15 -0800 shelve: open patch using new shelf class instead of open()
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 15:24:15 -0800] rev 46279
shelve: open patch using new shelf class instead of open() For some reason the existing code didn't use `shelvedfile().opener()` so here we migrate to `shelf().open_patch()` from the `open()` system call instead. Differential Revision: https://phab.mercurial-scm.org/D9706
Thu, 07 Jan 2021 14:48:57 -0800 shelve: move function for opening .patch file to new shelf class
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 14:48:57 -0800] rev 46278
shelve: move function for opening .patch file to new shelf class The `opener()` method was used specifically for the `.patch` file, and the new `Shelf` class deals with all files involved in a shelf, so I renamed the function in the process. Differential Revision: https://phab.mercurial-scm.org/D9705
Thu, 07 Jan 2021 13:57:21 -0800 shelve: move method for reading .hg to new shelf class
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 13:57:21 -0800] rev 46277
shelve: move method for reading .hg to new shelf class Differential Revision: https://phab.mercurial-scm.org/D9704
Thu, 07 Jan 2021 11:25:39 -0800 shelve: move method for writing bundle to new shelf class
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 11:25:39 -0800] rev 46276
shelve: move method for writing bundle to new shelf class Differential Revision: https://phab.mercurial-scm.org/D9703
Thu, 07 Jan 2021 11:28:41 -0800 shelve: move method for reading .shelve file to new shelf class
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 11:28:41 -0800] rev 46275
shelve: move method for reading .shelve file to new shelf class Differential Revision: https://phab.mercurial-scm.org/D9702
Thu, 07 Jan 2021 11:22:21 -0800 shelve: move method for writing .shelve to new shelf class
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 11:22:21 -0800] rev 46274
shelve: move method for writing .shelve to new shelf class Differential Revision: https://phab.mercurial-scm.org/D9701
Thu, 07 Jan 2021 11:07:21 -0800 shelve: introduce class representing a shelf
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 11:07:21 -0800] rev 46273
shelve: introduce class representing a shelf I'm about to make phase-based shelve not write `.hg` and `.patch` files. Having a class that represents a single shelf, regardless of which files it uses will help. I'm starting small with just a `.exists()` function. I plan to eventually remove the `shelvedfile` class once all functionality has been moved to the new class. By the way, I know that things you shelve are not typically themselves shelves. I still picked `Shelf` for the class because it's short (compared to e.g. `ShelvedChange`). Differential Revision: https://phab.mercurial-scm.org/D9700
Thu, 07 Jan 2021 12:26:32 -0800 shelve: raise more specific errors
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 12:26:32 -0800] rev 46272
shelve: raise more specific errors Differential Revision: https://phab.mercurial-scm.org/D9699
Thu, 07 Jan 2021 12:58:43 -0800 shelve: trust caller of shelvedfile.opener() to check that the file exists
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 12:58:43 -0800] rev 46271
shelve: trust caller of shelvedfile.opener() to check that the file exists The only place we call `shelvedfile.opener()` is when we're about to apply a bundle. The file should always exist. If it doesn't, the `.hg/` directory is corrupt and we don't provide any guarantees about supporting corrupt repos (besides, telling the user that the shelve doesn't exist when `hg shelve --list` lists it is not very helpful). Differential Revision: https://phab.mercurial-scm.org/D9698
Thu, 07 Jan 2021 12:22:39 -0800 shelve: rewrite check for unknown shelf to delete
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 12:22:39 -0800] rev 46270
shelve: rewrite check for unknown shelf to delete The code would try to delete the shelf's .patch file and if that raised an exception, it would convert it to an `error.Abort`. This patch rewrites it so the check is done upfront. I find it easier to read that way. It's now clear enough that I removed the comment explaining it as well. As Joerg pointed out during review, another differences is that the old code would move a `.hg` file without its `.patch` friend to backup before it realized that the `.patch` file was missing. The new code will error out earlier and not move the `.hg` file, which seems like an improvement. That should only matter on corrupt `.hg/shelved/` directories, however. Differential Revision: https://phab.mercurial-scm.org/D9697
Thu, 07 Jan 2021 12:37:14 -0800 shelve: remove a bundlerepo method
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Jan 2021 12:37:14 -0800] rev 46269
shelve: remove a bundlerepo method It was added in 43816070284e (shelve: add a bundlerepo method, 2014-10-10), but I haven't been able to find a place it was used. Differential Revision: https://phab.mercurial-scm.org/D9696
Fri, 08 Jan 2021 16:38:41 -0800 tests: add tests for corrupt .hg/shelved/ directory
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 Jan 2021 16:38:41 -0800] rev 46268
tests: add tests for corrupt .hg/shelved/ directory I don't care much how we behave in these cases, except that we should provide a way for the user to get out of the broken state. Differential Revision: https://phab.mercurial-scm.org/D9718
Wed, 13 Jan 2021 18:29:19 +0100 ui: add a "config_default" method
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Jan 2021 18:29:19 +0100] rev 46267
ui: add a "config_default" method This allow code to access the expected value for a config. This is useful in the context of dynamic default value, and short term it will be useful to write dynamically "correct" code. Differential Revision: https://phab.mercurial-scm.org/D9759
Thu, 14 Jan 2021 11:46:30 +0100 test: split tests/test-merge-combination.t into multiple parts
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 11:46:30 +0100] rev 46266
test: split tests/test-merge-combination.t into multiple parts That test is quite slow, lets split it in smaller bits. Differential Revision: https://phab.mercurial-scm.org/D9768
Thu, 14 Jan 2021 11:33:09 +0100 test: extract the `genmerges` out of test-merge-combination.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 11:33:09 +0100] rev 46265
test: extract the `genmerges` out of test-merge-combination.t This open the way to splitting this slow test in multiple ones. Differential Revision: https://phab.mercurial-scm.org/D9767
Fri, 15 Jan 2021 14:05:32 +0100 hghave: clarify `sqlite` requirements
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Jan 2021 14:05:32 +0100] rev 46264
hghave: clarify `sqlite` requirements We need more than the python module, we also need the sqlite3 command line. Differential Revision: https://phab.mercurial-scm.org/D9787
Fri, 15 Jan 2021 01:21:58 +0100 localrepo: fix comment typo
Joerg Sonnenberger <joerg@bec.de> [Fri, 15 Jan 2021 01:21:58 +0100] rev 46263
localrepo: fix comment typo Differential Revision: https://phab.mercurial-scm.org/D9782
Thu, 14 Jan 2021 11:53:55 -0800 error: use detailed exit code 10 for command errors
Martin von Zweigbergk <martinvonz@google.com> [Thu, 14 Jan 2021 11:53:55 -0800] rev 46262
error: use detailed exit code 10 for command errors Command errors (unknown or ambiguous commands, or bad command arguments or options) are handled in the `dispatch` module. Most other errors are handled in the `scmutil` module. This patch therefore has to duplicate a little bit of code from the `scmutil` module. It's just a few lines, however, so it seems fine to me. It's a pretty common category of errors, so it's important to have them respect `ui.detailed-exit-code`. Differential Revision: https://phab.mercurial-scm.org/D9777
Wed, 13 Jan 2021 22:37:21 -0800 errors: raise InputError when non-existent help section requested
Martin von Zweigbergk <martinvonz@google.com> [Wed, 13 Jan 2021 22:37:21 -0800] rev 46261
errors: raise InputError when non-existent help section requested Differential Revision: https://phab.mercurial-scm.org/D9776
Fri, 15 Jan 2021 12:56:25 -0500 revlog: migrate from PyEval_CallObject to PyObject_Call
Augie Fackler <augie@google.com> [Fri, 15 Jan 2021 12:56:25 -0500] rev 46260
revlog: migrate from PyEval_CallObject to PyObject_Call The former was deprecated in 3.9.0. Differential Revision: https://phab.mercurial-scm.org/D9791
Fri, 15 Jan 2021 12:52:52 -0500 fuzz: fix Makefile default PYTHON_CONFIG_FLAGS to be modern
Augie Fackler <augie@google.com> [Fri, 15 Jan 2021 12:52:52 -0500] rev 46259
fuzz: fix Makefile default PYTHON_CONFIG_FLAGS to be modern This is actually what we already do on oss-fuzz, so it's more correct as tests go. Differential Revision: https://phab.mercurial-scm.org/D9790
Thu, 14 Jan 2021 06:52:36 +0100 tests: wider work around matching in test-narrow-shallow.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 06:52:36 +0100] rev 46258
tests: wider work around matching in test-narrow-shallow.t Since issue6150 is still not fixed, we have to accommodate a larger array of possible results. Otherwise we get frequent flakiness of local and CI runs. Differential Revision: https://phab.mercurial-scm.org/D9766
Wed, 13 Jan 2021 15:44:24 -0500 fuzz: try and ensure fuzzer tests run against the right python-config
Augie Fackler <augie@google.com> [Wed, 13 Jan 2021 15:44:24 -0500] rev 46257
fuzz: try and ensure fuzzer tests run against the right python-config Also only under python 3. Differential Revision: https://phab.mercurial-scm.org/D9752
Fri, 08 Jan 2021 16:25:18 +0100 contrib: remove testing for `dirstate-tree` Rust feature
Raphaël Gomès <rgomes@octobus.net> [Fri, 08 Jan 2021 16:25:18 +0100] rev 46256
contrib: remove testing for `dirstate-tree` Rust feature This feature will be replaced in a few months, and served more as a proof-of-concept. Keeping it in CI when no one is using it anymore is just wasteful. Differential Revision: https://phab.mercurial-scm.org/D9716
Wed, 13 Jan 2021 17:21:51 +0100 perf: don't turn byte to string when formatting perfbranchmap
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Jan 2021 17:21:51 +0100] rev 46255
perf: don't turn byte to string when formatting perfbranchmap I am not sure why this `str` all is there is the first place. Differential Revision: https://phab.mercurial-scm.org/D9751
Fri, 18 Dec 2020 14:45:28 +0100 branchmap: avoid ancestor computations in absence of non-continous branches
Joerg Sonnenberger <joerg@bec.de> [Fri, 18 Dec 2020 14:45:28 +0100] rev 46254
branchmap: avoid ancestor computations in absence of non-continous branches The branchhead computation is one of the more heavy operations for bigger repositories as it has to scan all changesets and potentially involves the expensive computation of the ancestor sets. Redo the computation to handle the common cases directly and use tighter conditions for when the ancestor scan is necessary. Most importantly, avoid it completely if the non-continous branches are processed in one update as seen in the initial computation after a clone. For the Mercurial repository, it gives a small 2-3% performance boost. For the NetBSD test repository, it cuts the time in half. Differential Revision: https://phab.mercurial-scm.org/D9631
Tue, 12 Jan 2021 19:49:18 +0100 persistent-nodemap: also list related file as part of the store
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 12 Jan 2021 19:49:18 +0100] rev 46253
persistent-nodemap: also list related file as part of the store This make sure they are will be selected during upgrade, and copy based clone. Differential Revision: https://phab.mercurial-scm.org/D9749
(0) -30000 -10000 -3000 -1000 -120 +120 +1000 +3000 tip