Thu, 01 Oct 2020 09:29:49 +0200 copies: add a HASCOPIESINFO flag to highlight rev with useful data
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Oct 2020 09:29:49 +0200] rev 45671
copies: add a HASCOPIESINFO flag to highlight rev with useful data If some files changes that may impact copy tracing are detected, we set this flag. This helps the copy tracing algorithm to skip fetching possibly expensive data when unnecessary. Differential Revision: https://phab.mercurial-scm.org/D9139
Wed, 16 Sep 2020 21:00:02 +0200 salvaged: properly deal with salvaged file during copy tracing
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Sep 2020 21:00:02 +0200] rev 45670
salvaged: properly deal with salvaged file during copy tracing When salvaged files are encountered, the removal have been reverted and we should keep the rename information from the other side. The conditional was starting to be quite hairy, so we spell it out in multiple elif case for readability. This fixes the associated test cases introduced a while back. The changeset centric copy tracing is now (known) bug free. Differential Revision: https://phab.mercurial-scm.org/D9130
Tue, 15 Sep 2020 10:55:17 +0200 salvaged: persist the salvaged set on disk
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Sep 2020 10:55:17 +0200] rev 45669
salvaged: persist the salvaged set on disk With the new side data storage, this is trivial. Differential Revision: https://phab.mercurial-scm.org/D9129
Tue, 29 Sep 2020 22:47:54 +0200 changing-files: add clean computation of changed file for merges
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 29 Sep 2020 22:47:54 +0200] rev 45668
changing-files: add clean computation of changed file for merges This is "a tad more complicated" than the previous cases. See inline documentation for details (have fun). Differential Revision: https://phab.mercurial-scm.org/D9128
Tue, 29 Sep 2020 22:46:29 +0200 changing-files: add clean computation of changed files for linear changesets
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 29 Sep 2020 22:46:29 +0200] rev 45667
changing-files: add clean computation of changed files for linear changesets The `files` field is not reliable, so we need to compute things from scratch. We deal with the second simplest case, linear changesets. We diff the current manifest with the parent manifest. This reveal the file added, changed and removed. Differential Revision: https://phab.mercurial-scm.org/D9127
Tue, 29 Sep 2020 22:38:08 +0200 changing-files: add clean computation of changed files for roots
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 29 Sep 2020 22:38:08 +0200] rev 45666
changing-files: add clean computation of changed files for roots The `files` field is not reliable, so we need to compute things from scratch. We start with the simplest case root changesets. In the beginning they was nothing, then user said "let there be files" and there were added files. Differential Revision: https://phab.mercurial-scm.org/D9126
Wed, 30 Sep 2020 09:21:33 +0200 changing-files: add a debug command display changed files
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 30 Sep 2020 09:21:33 +0200] rev 45665
changing-files: add a debug command display changed files The binary output from sidedata is useful to verify the underlying data do not get corrupted. However having a human readable version is much simpler for debuging the changed files data itself. So we add a debug command to dump this information and we use it in the tests. Differential Revision: https://phab.mercurial-scm.org/D9125
Tue, 29 Sep 2020 23:16:09 +0200 side-data: add a test to check sidedata upgrade
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 29 Sep 2020 23:16:09 +0200] rev 45664
side-data: add a test to check sidedata upgrade We want to make sure that sidedata computed at commit time and during upgrade are the same. To do so, we upgrade the repository in `test-copies-chain-merge.t` since the file is checking all the special case that we need to catch. The sidedata content in both case should be the same. Differential Revision: https://phab.mercurial-scm.org/D9124
Tue, 29 Sep 2020 22:19:46 +0200 changing-files: split the changing files computation from encoding
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 29 Sep 2020 22:19:46 +0200] rev 45663
changing-files: split the changing files computation from encoding The side data encoding is already in its own function, now we move the changing files computation in it own function, it will receive more updates in the coming changesets. Differential Revision: https://phab.mercurial-scm.org/D9123
Mon, 14 Sep 2020 23:47:42 +0200 salvaged: record salvaged in ChangingFiles at commit time
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Sep 2020 23:47:42 +0200] rev 45662
salvaged: record salvaged in ChangingFiles at commit time The new code is a simple but effective way to detect this information. We might be able to move it inside the various conditionnal above, but I want to focus on simplicity until we have a full working stack. It is worth noting that if we record the information in the ChangingFiles object, it is not persisted yet. This will comes with later changesets. Differential Revision: https://phab.mercurial-scm.org/D9120
Mon, 14 Sep 2020 23:46:38 +0200 salvaged: track removal-candidates in more cases
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Sep 2020 23:46:38 +0200] rev 45661
salvaged: track removal-candidates in more cases If we want to use this information for copy tracing, then we need to be able to record it. First we unlock the recording of deletion candidates, and we will actually record the data in the next changeset. Differential Revision: https://phab.mercurial-scm.org/D9119
Wed, 30 Sep 2020 12:46:49 +0200 salvaged: explicitly skip salvaged file while encoding
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 30 Sep 2020 12:46:49 +0200] rev 45660
salvaged: explicitly skip salvaged file while encoding This is a temporary measure to avoid diverging test cases (between commit time sidedata and upgraded sidedata) while we implement salvaged tracking in the different cases. This will be dropped soon. Differential Revision: https://phab.mercurial-scm.org/D9122
Mon, 14 Sep 2020 23:46:21 +0200 changing-files: add a "salvaged" set to track file that were not removed
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Sep 2020 23:46:21 +0200] rev 45659
changing-files: add a "salvaged" set to track file that were not removed We need this set for the copy tracing algorithm. See documentation for details about this set. Differential Revision: https://phab.mercurial-scm.org/D9118
Thu, 08 Oct 2020 23:14:41 -0700 tests: back out accidentally queued changeset 0627cd03b1e9
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 23:14:41 -0700] rev 45658
tests: back out accidentally queued changeset 0627cd03b1e9 I accidentally queued other people's patches on top of my own and pushed mine along with theirs.
Tue, 06 Oct 2020 15:23:10 -0700 tests: update test-copies-chain-merge.t to not use empty files
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Oct 2020 15:23:10 -0700] rev 45657
tests: update test-copies-chain-merge.t to not use empty files Merging empty files is not very interesting or realistic.
Thu, 08 Oct 2020 10:07:19 +0200 tests: only diff the `Cargo.lock` in `test-check-cargo-lock.t`
Raphaël Gomès <rgomes@octobus.net> [Thu, 08 Oct 2020 10:07:19 +0200] rev 45656
tests: only diff the `Cargo.lock` in `test-check-cargo-lock.t` While not perfect (you could be running tests while developing with a justified modification to `Cargo.lock`), that use-case is small enough that I don't think it's really going to be an issue. This stops the test from failing for unrelated changes when running it locally. Differential Revision: https://phab.mercurial-scm.org/D9170
Wed, 07 Oct 2020 13:24:03 +0530 tests: update/remove outdated comments in test-copies-chain-merge.t
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 07 Oct 2020 13:24:03 +0530] rev 45655
tests: update/remove outdated comments in test-copies-chain-merge.t 1b8fd4af3318 fixed the test case but missed updating the comments mentioning the bug. Thanks for @martinvonz who spotted these outdated comments. Differential Revision: https://phab.mercurial-scm.org/D9168
Mon, 21 Sep 2020 12:36:17 +0900 churn: leverage logcmdutil to filter revisions by --date
Yuya Nishihara <yuya@tcha.org> [Mon, 21 Sep 2020 12:36:17 +0900] rev 45654
churn: leverage logcmdutil to filter revisions by --date
Thu, 10 Sep 2020 18:57:31 +0900 cmdutil: remove remainder of old walkchangerevs() implementation
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 18:57:31 +0900] rev 45653
cmdutil: remove remainder of old walkchangerevs() implementation
Thu, 10 Sep 2020 18:01:43 +0900 cmdutil: rewrite walkchangerevs() by using logcmdutil functions
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 18:01:43 +0900] rev 45652
cmdutil: rewrite walkchangerevs() by using logcmdutil functions cmdutil.walkchangerevs() now takes (revs, makefilematcher) in place of (match, opts), and only provides the "windowing" functionality. Unused classes and functions will be removed by the next patch. "hg grep --follow" (--all-files) is still broken since there is no logic to follow copies while traversing changelog, but at least, it does follow the DAG.
Thu, 10 Sep 2020 17:14:03 +0900 grep: filter target files by matcher
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 17:14:03 +0900] rev 45651
grep: filter target files by matcher Prepares for the migration to logcmdutil's logic, where cmdutil.walkchangerevs() won't always build an exact set of paths to be scanned.
Thu, 10 Sep 2020 16:14:48 +0900 cmdutil: make walkchangerevs() call prepare with matcher instead of filenames
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 16:14:48 +0900] rev 45650
cmdutil: make walkchangerevs() call prepare with matcher instead of filenames Prepares for migrating walkchangerevs() to logcmdutil's logic, which provides matcher-based interface.
Thu, 10 Sep 2020 18:40:01 +0900 grep: add option for logcmdutil.makewalker() to not filter revs by file pats
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 18:40:01 +0900] rev 45649
grep: add option for logcmdutil.makewalker() to not filter revs by file pats This is needed to implement "grep --all-files".
Thu, 01 Oct 2020 09:48:41 +0200 rust-parsers: use in-place mutation instead of allocating a new `Vec`
Raphaël Gomès <rgomes@octobus.net> [Thu, 01 Oct 2020 09:48:41 +0200] rev 45648
rust-parsers: use in-place mutation instead of allocating a new `Vec` This is not done for the `dirstate-tree` feature, since it lacks `iter_mut`. Differential Revision: https://phab.mercurial-scm.org/D9136
Tue, 06 Oct 2020 02:21:14 +0200 revlog: pre-compute null revlog item for pure version
Joerg Sonnenberger <joerg@bec.de> [Tue, 06 Oct 2020 02:21:14 +0200] rev 45647
revlog: pre-compute null revlog item for pure version The dynamically created tuple shows up in memory profiles and the use of nullid prevents the normal constant building to work. Differential Revision: https://phab.mercurial-scm.org/D9154
Sun, 04 Oct 2020 22:17:52 -0700 packaging: normalize - to _ in WiX Id values
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 Oct 2020 22:17:52 -0700] rev 45646
packaging: normalize - to _ in WiX Id values - is not a valid identifier character in WiX Ids. So let's normalize accordingly. I discovered this issue after a subsequent change which introduces a directory with a - in its name. Differential Revision: https://phab.mercurial-scm.org/D9147
Sat, 03 Oct 2020 14:44:11 -0700 contrib: install Rust 1.46.0
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Oct 2020 14:44:11 -0700] rev 45645
contrib: install Rust 1.46.0 Let's use the latest/greatest version of Rust in the automation environment. Differential Revision: https://phab.mercurial-scm.org/D9146
Sat, 03 Oct 2020 19:52:52 -0700 contrib: install latest versions of Python
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Oct 2020 19:52:52 -0700] rev 45644
contrib: install latest versions of Python Let's keep our build environment modern. We upgrade 3.5-3.8 on Linux. Just 3.7 and 3.8 on Windows because we don't use <3.7 on Windows. Differential Revision: https://phab.mercurial-scm.org/D9145
Wed, 30 Sep 2020 00:33:53 -0700 help: extract logic for listing commands and topics
Ludovic Chabant <ludovic@chabant.com> [Wed, 30 Sep 2020 00:33:53 -0700] rev 45643
help: extract logic for listing commands and topics Differential Revision: https://phab.mercurial-scm.org/D9134
Fri, 25 Sep 2020 15:05:08 +0200 copies: directly pass a changes object to the copy tracing code
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Sep 2020 15:05:08 +0200] rev 45642
copies: directly pass a changes object to the copy tracing code The object contains all the data we need. For example, the `is_merged` callback can now use the associated precomputed data. This will be useful again soon when the `salvaged` set will be introduce to solve the issue with delete file reverted during a merge. See 4b582a93316a and 14be07d5603c for details. Differential Revision: https://phab.mercurial-scm.org/D9117
Fri, 25 Sep 2020 14:54:43 +0200 copies: no longer change the sidedata flag
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Sep 2020 14:54:43 +0200] rev 45641
copies: no longer change the sidedata flag With the new sidedata storage that include data about all file changes, every revision has one, so the sidedata flag is not longer a good way to spot changeset with copy information. So we drop this check to simplify the code We optimisation itself provided an interesting speedup, so we will likely reintroduce something similar, with a dedicated flag, in the future. Differential Revision: https://phab.mercurial-scm.org/D9116
Fri, 25 Sep 2020 14:52:34 +0200 copies: use dedicated `_revinfo_getter` function and call
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Sep 2020 14:52:34 +0200] rev 45640
copies: use dedicated `_revinfo_getter` function and call We want to return data in a different form, so we need different revinfo function. At that point it make sense to have different getter. Differential Revision: https://phab.mercurial-scm.org/D9115
Fri, 25 Sep 2020 14:39:04 +0200 copies: make two version of the changeset centric algorithm
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Sep 2020 14:39:04 +0200] rev 45639
copies: make two version of the changeset centric algorithm They are two main ways to run the changeset-centric copy-tracing algorithm. One fed from data stored in side-data and still in development, and one based on data stored in extra (with a "compatibility" mode). The `extra` based is used in production at Google, but still experimental in code. It is mostly unsuitable for other users because it affects the hash. The side-data based storage and algorithm have been evolving to store more data, cover more cases (mostly around merge, that Google do not really care about) and use lower level storage for efficiency. All this changes make is increasingly hard to maintain de common code base, without impacting code complexity and performance. For example, the compatibility mode requires to keep things at different level than what we need for side-data. So, I am duplicating the involved functions. The newly added `_extra` variants will be kept as today, while I will do some deeper rework of the side data versions. Long terms, the side-data version should be more featureful and performant than the extra based version, so I expect the duplicated `_extra` functions to eventually get dropped. Differential Revision: https://phab.mercurial-scm.org/D9114
Tue, 15 Sep 2020 10:55:30 +0200 changing-files: retrieve changelogrevision.files from the sidedata block
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Sep 2020 10:55:30 +0200] rev 45638
changing-files: retrieve changelogrevision.files from the sidedata block The `files` field is know to have issue, using a list with fixed, and fixable, computation can only help. For example, using a fixes `files` field would be enough to fix issue6219 once this feature get usable in production. We focus on having thing working for now, we will deal with performance later. Right now we have a ironic situation were we parse sorted value from disk to turn them into a set and then having to sort it again. Differential Revision: https://phab.mercurial-scm.org/D9092
Tue, 15 Sep 2020 10:49:50 +0200 changing-files: drop the now useless changelogrevision argument
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Sep 2020 10:49:50 +0200] rev 45637
changing-files: drop the now useless changelogrevision argument Since all filename are now included in the sidedata block, we no longer need to decode the `files` from the revision. Differential Revision: https://phab.mercurial-scm.org/D9091
Tue, 15 Sep 2020 10:55:17 +0200 changing-files: rework the way we store changed files in side-data
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Sep 2020 10:55:17 +0200] rev 45636
changing-files: rework the way we store changed files in side-data We need to store new data so this is a good opportunity to rework this fully. 1) We directly store the list of affected file in the side data: * This avoid having to fetch and parse the `files` list in the revision in addition to the sidedata. Making the data more self sufficient. * This work around situation where that `files` field contains wrong information, and open the way to other bug fixing (eg: issue6219) * The format (fixed initial index, sorted files) allow for fast lookup of filename within the structure. * This unify the storage of affected files and copies sources and destination, limiting the number filename stored redundantly. * This prepare for the fact we should drop the `files` as soon as we do any change affecting the revision schema. * This rely on compression to avoid a significant increase of the changelog.d. More testing on this will be done before we freeze the final format. 2) We can store additional data: * The new "merged" field, * A future "salvaged" set recording files that might have been deleted but have were still present in the final result. Differential Revision: https://phab.mercurial-scm.org/D9090
Mon, 05 Oct 2020 10:33:52 +0200 py3: use native string when comparing with a function's argspec
Raphaël Gomès <rgomes@octobus.net> [Mon, 05 Oct 2020 10:33:52 +0200] rev 45635
py3: use native string when comparing with a function's argspec I only found two such bugs in `contrib/perf.py` Differential Revision: https://phab.mercurial-scm.org/D9149
Fri, 02 Oct 2020 10:29:22 +0200 test: try to unflaky test-profile.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Oct 2020 10:29:22 +0200] rev 45634
test: try to unflaky test-profile.t That test rely on timing measurement, because it is about timing measurement. We try to filter out the most common source of flakyness (slow disk stating)
Fri, 02 Oct 2020 18:40:39 +0530 merge: check for conflicting actions irrespective of length of bids
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Oct 2020 18:40:39 +0530] rev 45633
merge: check for conflicting actions irrespective of length of bids We should for whether bids contain a combination of actions which conflict with each other. Since right now we only have couple of such combination, and combinations also consist of two actions, we were checking for them only when length of bids is 2. Let's check that irrespective of the length of bids.
Fri, 02 Oct 2020 07:56:01 -0700 branching: merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Fri, 02 Oct 2020 07:56:01 -0700] rev 45632
branching: merge with stable
Thu, 10 Sep 2020 17:44:34 +0900 log: extract function that builds (revs, makefilematcher) from walkopts
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 17:44:34 +0900] rev 45631
log: extract function that builds (revs, makefilematcher) from walkopts "hg grep" and "hg churn" will use this interface.
Sat, 12 Sep 2020 22:42:58 +0900 log: move --graph and topo sort options to walkopts
Yuya Nishihara <yuya@tcha.org> [Sat, 12 Sep 2020 22:42:58 +0900] rev 45630
log: move --graph and topo sort options to walkopts This is the last opts.get() found in getrevs(). It might be better to define an enum, but for now, it is just a string.
Sat, 12 Sep 2020 22:03:53 +0900 log: move miscellaneous filter/matcher options to walkopts
Yuya Nishihara <yuya@tcha.org> [Sat, 12 Sep 2020 22:03:53 +0900] rev 45629
log: move miscellaneous filter/matcher options to walkopts Maybe this is the most uninteresting patch. I want to remove the dependency on untyped/unlabeled opts dict at all. I thought --no-merges and --only-merges could be merged into a single enum value, but actually they both can be set to filter out everything.
Sat, 12 Sep 2020 21:54:58 +0900 log: map --removed to walkopts.force_changelog_traversal
Yuya Nishihara <yuya@tcha.org> [Sat, 12 Sep 2020 21:54:58 +0900] rev 45628
log: map --removed to walkopts.force_changelog_traversal This is the flag to forcibly enable the slowpath. I'm not sure if the slowpath parameter should be merged with this flag, so let's keep it as an immutable flag for now. I'll add another flag to support "grep --all-files". These two will be the flags which aren't directly mapped from the command-line options.
Fri, 25 Sep 2020 14:33:05 +0200 copies: rename some function to the new naming scheme
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Sep 2020 14:33:05 +0200] rev 45627
copies: rename some function to the new naming scheme We are about to introduce more function and more variants, it seems better to align everything on the new scheme, allowing `_` for clarify. We do this aligned in a dedicated changeset to make the next changesets simpler. Differential Revision: https://phab.mercurial-scm.org/D9113
Mon, 28 Sep 2020 12:26:09 +0200 changing-files: cache the various property
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 28 Sep 2020 12:26:09 +0200] rev 45626
changing-files: cache the various property We are going to start using them more having some basic caching would be good. The focus is not about performance yet, however avoid some easy N² trap seems reasonable. Differential Revision: https://phab.mercurial-scm.org/D9112
Fri, 25 Sep 2020 14:16:35 +0200 changing-files: always use `mark_touched` to update the touched set
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Sep 2020 14:16:35 +0200] rev 45625
changing-files: always use `mark_touched` to update the touched set We use this function internally too because that will make cache invalidation simpler. Differential Revision: https://phab.mercurial-scm.org/D9111
Fri, 02 Oct 2020 08:57:43 +0200 changing-files: fix docstring
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Oct 2020 08:57:43 +0200] rev 45624
changing-files: fix docstring As pointed by Pulkit Goyal. Differential Revision: https://phab.mercurial-scm.org/D9143
Thu, 01 Oct 2020 09:09:35 -0700 rust: move rustfmt.toml to repo root so it can be used by `hg fix`
Martin von Zweigbergk <martinvonz@google.com> [Thu, 01 Oct 2020 09:09:35 -0700] rev 45623
rust: move rustfmt.toml to repo root so it can be used by `hg fix` `hg fix` runs the formatters from the repo root so it doesn't pick up the `rustfmt.toml` configs we had in each the `hg-core`, `hg-cpython`, and `rhg` packages, which resulted in warnings about `async fn` not existing in Rust 2015. This patch moves the `rustfmt.toml` file to the root so `hg fix` will use it. By putting the `rustfmt.toml` file in a higher-level directory, it also applies to the `chg` and `hgcli` packages. That makes `test-check-rust-format.t` fail, so this patch also applies the new formatting rules to those packages. Differential Revision: https://phab.mercurial-scm.org/D9142
Wed, 30 Sep 2020 18:07:21 +0530 merge: if CHANGED_DELETED and KEEP_NEW are actions, choose CHANGED_DELETED
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 30 Sep 2020 18:07:21 +0530] rev 45622
merge: if CHANGED_DELETED and KEEP_NEW are actions, choose CHANGED_DELETED ACTION_KEEP_NEW and ACTION_CHANGED_DELETED are conflicting actions as one says that file is new while other says that file was present earlier and has changed-delete conflicts. Let's do changed-delete which will lead to conflicts and make user choose the right way.
Wed, 30 Sep 2020 17:51:40 +0530 tests: fix a typo in `desc()` revset in test-merge-criss-cross.t
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 30 Sep 2020 17:51:40 +0530] rev 45621
tests: fix a typo in `desc()` revset in test-merge-criss-cross.t I was looking into fixing the broken behavior only to find out that we had a typo in the commit message and merge was not performed.
Wed, 30 Sep 2020 15:46:54 +0530 merge: if DELETED_CHANGED and GET are in actions, choose DELETED_CHANGED
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 30 Sep 2020 15:46:54 +0530] rev 45620
merge: if DELETED_CHANGED and GET are in actions, choose DELETED_CHANGED ACTION_GET represents that either the file is created on remote or it's newer on the remote side. However, since we have a ACTION_DELETE_CHANGED too, it means the file is not present locally and ACTION_GET is representing that file was created on remote. Having both ACTION_GET and ACTION_DELETED_CHANGED is conflicting because one says that file was created on remote and other says file has delete-changed conflicts. Let's choose ACTION_DELETED_CHANGED which will result in conflicts and make user choose the right way forward.
Wed, 30 Sep 2020 15:09:25 +0530 tests: add newfilenode test case in test-merge-changedelete.t
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 30 Sep 2020 15:09:25 +0530] rev 45619
tests: add newfilenode test case in test-merge-changedelete.t
Thu, 01 Oct 2020 09:49:33 +0200 rust: leverage improved match ergonomics
Raphaël Gomès <rgomes@octobus.net> [Thu, 01 Oct 2020 09:49:33 +0200] rev 45618
rust: leverage improved match ergonomics Differential Revision: https://phab.mercurial-scm.org/D9137
Mon, 28 Sep 2020 15:08:02 +0200 rust: update minimum supported Rust compiler version
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Sep 2020 15:08:02 +0200] rev 45617
rust: update minimum supported Rust compiler version Debian stable backported `rustc 1.41.1` for a Firefox release that needed it, so we can finally update the compiler version to something that isn't more than a year old. This means that (among other things [1]), `async await` syntax is usable! Differential Revision: https://phab.mercurial-scm.org/D9138
Fri, 25 Sep 2020 11:29:19 +0200 changing-files: add a utility to compute the merged files post-commit
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Sep 2020 11:29:19 +0200] rev 45616
changing-files: add a utility to compute the merged files post-commit We will need it in `_getsidedata` as soon as we start persisting that set. Differential Revision: https://phab.mercurial-scm.org/D9089
Fri, 25 Sep 2020 02:01:32 +0200 changing-files: record merged files at commit time
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Sep 2020 02:01:32 +0200] rev 45615
changing-files: record merged files at commit time The data is easy to gather at commit time, and we need it for changeset centric copy tracing. Right now, it is not persisted so we cannot use it. However we will fix this part very soon, gathering something to persist was necessary first. Differential Revision: https://phab.mercurial-scm.org/D9088
Thu, 24 Sep 2020 09:50:09 +0200 changing-files: add the ability to track merged files too
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 24 Sep 2020 09:50:09 +0200] rev 45614
changing-files: add the ability to track merged files too The set of merged files is used when doing changeset centric copy tracing (cf `is_merged` in `mercurial/copies.py`. So tracking (and persisting) this set will be useful. We start with adding the attribute on the new object. Differential Revision: https://phab.mercurial-scm.org/D9087
Wed, 30 Sep 2020 18:10:29 +0200 rust: start plugging the dirstate tree behind a feature gate
Raphaël Gomès <rgomes@octobus.net> [Wed, 30 Sep 2020 18:10:29 +0200] rev 45613
rust: start plugging the dirstate tree behind a feature gate The previous patch added the `dirstate-tree` feature gate to enable the two dirstate implementations to co-habit while the tree-based one gets better. This patch copies over the code that differs, be it because the algorithm changed or because the borrowing rules are different. Indeed, `DirstateTree` is not observationally equivalent to the std `HashMap` in the APIs we use: it does not have the `Entry` API (yet?) and its iterator returns owned values instead of references. This last point is because the implementation needs to be changed to a more clever and efficient solution. Differential Revision: https://phab.mercurial-scm.org/D9133
Wed, 30 Sep 2020 18:10:53 +0200 rust: introduce `dirstate-tree` cargo feature
Raphaël Gomès <rgomes@octobus.net> [Wed, 30 Sep 2020 18:10:53 +0200] rev 45612
rust: introduce `dirstate-tree` cargo feature This feature gates (at compile-time) the use of the newly-added dirstate tree. The motivation for this is that the dirstate tree is currently *very* slow; replacing the current hashmap-based dirstate is not a viable solution in terms of performance... and why would you be using the Rust implementation if not for performance? The feature will also help reviewers better understand the differences that will slowly appear as the dirstate tree gets better. Differential Revision: https://phab.mercurial-scm.org/D9132
(0) -30000 -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 tip