fileset: add "tracked()" to explicitly select files in the revision
I'm going to rewrite filesets to be match predicates, which means basic
patterns such as '*' will no longer be "closed" to the subset constructed
from the ctx.
Good thing is that 'hg status "set:not binary()"' can include unknown files
out of the box, and fileset computation will likely to be faster as we won't
have to walk dirstate twice, for example. Bad thing is that we can't select
files at a certain revision by 'set:revs(REV, **)' since '**' is "open" to
any paths. So, this patch introduces "tracked()" as a replacement for the '**'
in the example above.
fileset: rewrite andset() to not use mctx.narrow()
New code is less efficient than the original, but it helps porting andset()
to matcher composition. This will be cleaned up later.
This effectively disables the fullmatchctx magic since mctx will never be
demoted to the matchctx. The fullmatchctx class will be removed later.
fileset: add helpers to make predicatematcher and nevermatcher
These functions will be used to compose a tree of matchers from a fileset
expression.
phases: remove excessive optimization from newheads() (
issue5939)
This function is intended to compute 'heads(::heads - roots::)', but it
failed because 'heads + parents(roots)' missed sibling branches of the roots.
That's why the public heads slipped down from D to B in the example added by
2a227782e754 "tests: add test demonstrating phase loss when cloning":
> E draft
> |\Z draft
> | Y draft
> D | public
> | X draft
> C/ public
> B public
> A public
where heads = {E, Z},
roots = {X}
rebase: remove unused variable "release" and an extra blank line
Differential Revision: https://phab.mercurial-scm.org/D3947
rebase: remove unnecessary confirm block
Removed unnecessary 'if confirm:' block as that thing is now
handled at 'finally'.
Differential Revision: https://phab.mercurial-scm.org/D3945
rebase: in --confirm option just abort if hit a conflict
Before this patch, it was prompting the user in both cases 1) when
there is no conflict 2) when there is at least one conflict. But
for simplicity we can just abort if we hit a conflict and no need to
prompt in that case.
Differential Revision: https://phab.mercurial-scm.org/D3944
pullbundle: fix handling of gzip bundlespecs
Differential Revision: https://phab.mercurial-scm.org/D3933
tests: add test demonstrating phase loss when cloning (
issue5939)
The added tests demonstrate that phases exchange when using the
listkeys based phases exchange fails to preserve public phase in
a certain scenario when a merge is a phase root. Both non-bundle2
and bundle2 prior to the binary phase data part are buggy.
Differential Revision: https://phab.mercurial-scm.org/D3932