Anton Shestakov <av6@dwimlabs.net> [Sun, 06 Feb 2022 19:31:39 +0300] rev 48718
branchmap: don't add branch entries if there are no heads
We definitely don't want any empty entries to be present in repo.branchmap()
just for the sake of not breaking test-notify.t.
No test changes required because the previous patch made notify extension to
not raise any tracebacks in case of RepoLookupErrors.
Differential Revision: https://phab.mercurial-scm.org/D12135
Anton Shestakov <av6@dwimlabs.net> [Sun, 06 Feb 2022 19:14:51 +0300] rev 48717
notify: don't produce errors if a revision is not found
Notify extension has a way to only subscribe to a specific revset, such as
"branch(foo)". Before this patch, when there was no branch with that name, it
would produce a traceback saying "unknown revision: foo". With this patch it
would no longer do that, and instead it'll assume there are no revisions that
match this revset. I think this patch is an improvement in general, but there's
a reason I'm sending it now.
test-notify.t has a test case where it obsoletes the only revision on a branch,
and previously that wouldn't produce any complications, because head
computation wasn't obsolescence-aware. Now if the only revision on a branch is
obsolete, repo should not see that branch at all.
That branch will still be present in branchcache (with an empty list of
revisions) until the next patch.
Differential Revision: https://phab.mercurial-scm.org/D12134
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 03 Feb 2022 18:14:11 +0100] rev 48716
narrow: allow merging non-conflicting change outside of the narrow spec
We use the mergestate to carry information about these merge action and
reprocess them at commit time to apply the necessary update.
The dirstate itself is never affected and remains "pure", with content only in
the narrow-spec. This file involved in such merge are therefor not listed in `hg
status`.
The current testing is based on a modification of the previous testing, that
refused to do such merges. As a result it is a bit simple and more extensive
code and testing testing will have to be introduced later. I am planning to do
this extra testing, soon.
In addition, this only works for flat manifest. Support for tree manifest will
need more work. I am not currently planning to do this work.
Differential Revision: https://phab.mercurial-scm.org/D12119
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 30 Jan 2022 06:01:42 +0100] rev 48715
merge-actions: add some information about the "changes" the action do
This will be useful when processing merges action outside of the narrow-spec.
"support" outside of narrow file on commit
Differential Revision: https://phab.mercurial-scm.org/D12118
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 29 Jan 2022 06:21:32 +0100] rev 48714
merge-actions: have an attribute for narrow safetiness
This allow the core doing narrow filtering to process action without
explicitely listing all possible actions. This is important to make the actions
system more flexible in the future.
Differential Revision: https://phab.mercurial-scm.org/D12117
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 15:19:58 +0100] rev 48713
merge-actions: add an explicite "no_op" attribute
This make the MergeAction smarter and able to describe themself. This is useful
to help introducing more MergeAction object that better the complexity of the
situation.
Differential Revision: https://phab.mercurial-scm.org/D12116
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 19:46:37 +0100] rev 48712
merge-actions: gather all created action into a set
This is mostly to demonstrate we can do this before we start adding more
specialized set.
Differential Revision: https://phab.mercurial-scm.org/D12115
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 17:08:30 +0100] rev 48711
merge-actions: make merge action a full featured object
This open the way for having "smarter" value as action, making the usage code
simpler and more flexible.
We have to explicitly use __bytes__ call in a couple of place because Python2…
Differential Revision: https://phab.mercurial-scm.org/D12114
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 16:25:41 +0100] rev 48710
convert: use the merge action constant
The constant exists, lets use them. Otherwise we cannot make these constant more
powerful.
Differential Revision: https://phab.mercurial-scm.org/D12113
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 16:11:42 +0100] rev 48709
large-file: use the merge action constant
The constant exists, lets use them. Otherwise we cannot make these constant more
powerful.
Differential Revision: https://phab.mercurial-scm.org/D12112
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 16:41:45 +0100] rev 48708
merge: stop using merge action for pathconflict option
This is not the b'r' you are looking for.
Differential Revision: https://phab.mercurial-scm.org/D12111
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 14:25:51 +0100] rev 48707
merge: break up a not-so-one-liner for readability
Differential Revision: https://phab.mercurial-scm.org/D12110
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 14:25:45 +0100] rev 48706
merge: break up a not-so-one-liner for readability
Differential Revision: https://phab.mercurial-scm.org/D12109
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 14:25:39 +0100] rev 48705
merge: break up a not-so-one-liner for readability
Differential Revision: https://phab.mercurial-scm.org/D12108
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 14:25:32 +0100] rev 48704
merge: break up a not-so-one-liner for readability
Differential Revision: https://phab.mercurial-scm.org/D12107
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 14:25:05 +0100] rev 48703
merge: break up two not-so-one-liner for extra readability
Differential Revision: https://phab.mercurial-scm.org/D12106
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 14:24:41 +0100] rev 48702
merge: break up a not-so-one-liner for readability
Differential Revision: https://phab.mercurial-scm.org/D12105
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 14:24:30 +0100] rev 48701
merge: break up a not-so-one-liner for readability
(even if not fully satisfied this time)
Differential Revision: https://phab.mercurial-scm.org/D12104
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 14:23:56 +0100] rev 48700
merge: break up a not-so-one-liner for readability
Differential Revision: https://phab.mercurial-scm.org/D12103
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 14:23:49 +0100] rev 48699
merge: break up a not-so-one-liner for readability
Differential Revision: https://phab.mercurial-scm.org/D12102
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 14:23:37 +0100] rev 48698
merge: break up a not-so-one-liner for readability
Differential Revision: https://phab.mercurial-scm.org/D12101
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 03 Feb 2022 06:49:48 +0100] rev 48697
phabricator-refresh: add a magic value to skip it in the CI
When maintaining (light) fork, it is useful to be able to disable this.
Differential Revision: https://phab.mercurial-scm.org/D12133
Anton Shestakov <av6@dwimlabs.net> [Thu, 27 Jan 2022 20:04:56 +0300] rev 48696
interfaces: add missing caches kwarg of localrepo.updatecaches()
Added to localrepo: in 1337bfaa88ca, added to the interface: now.
Differential Revision: https://phab.mercurial-scm.org/D12092
Anton Shestakov <av6@dwimlabs.net> [Mon, 31 Jan 2022 18:05:36 +0300] rev 48695
obsolete: don't import from .node twice
See d55b71393907.
Differential Revision: https://phab.mercurial-scm.org/D12121
Anton Shestakov <av6@dwimlabs.net> [Mon, 31 Jan 2022 18:04:11 +0300] rev 48694
dagop: don't import nullrev from .node twice
See 59fa3890d40a.
Differential Revision: https://phab.mercurial-scm.org/D12120
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 27 Jan 2022 22:24:11 +0100] rev 48693
stream-clone: allow to change persistent-nodemap format during stream clone
Persistent nodemap affect the store format. However it is fairly isolated and
fast to generate locally. So not making it a fixed part of the stream clone is
useful.
This allow clients without persistent-nodemap support (default for client
without Rust enabled, or simply older client). So it make it possible to enable
persistent nodemap on client, where it can provide a massive boost. without too
much consequence.
To do so, we stop using it in the advertisement requirements for streaming and
let the client add/remove the necessary file depending of its configuration.
We still send the files as it seems like a small save to not regenerate them.
In addition, the way we match them will overlap with the changelog-v2/revlog-v2
so we can't simply skip the associated patterns.
Differential Revision: https://phab.mercurial-scm.org/D12096
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 27 Jan 2022 15:22:09 +0100] rev 48692
stream-clone: add 5000 changesets to test-clone-stream-format
This make sure the changelog is not inlined. We needs this to test coming
behavior change around persistent-nodemap.
Differential Revision: https://phab.mercurial-scm.org/D12095
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 27 Jan 2022 15:22:04 +0100] rev 48691
debugbuilddag: add a flag to allow running it from a non-empty repository
Allow that by default seems "dangerous", but having a flag to make it possible
will be useful to help building some repository incrementally. The newly introduced support is basic, but already useful.
Differential Revision: https://phab.mercurial-scm.org/D12094
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 27 Jan 2022 17:04:40 +0100] rev 48690
persistent-nodemap: properly delete all nodemap files on downgrade
Previously, we were only deleting the docket file…
Differential Revision: https://phab.mercurial-scm.org/D12093
Anton Shestakov <av6@dwimlabs.net> [Sat, 15 Jan 2022 09:08:41 +0300] rev 48689
destutil: if wdp is obsolete, update to the closest non-obsolete ancestor
As the original comments suggest, using prune as a model here was an existing
idea, and now this patch implements it.
I think it would be even better to do what solveobswdp() from evolve does (in
short, it allows to update to a successor of the closest ancestor even if that
ancestor is obsolete), but that is outside of this series' scope.
Differential Revision: https://phab.mercurial-scm.org/D12099