merge with stable
largefiles: align rm warnings with warnings used in core
mq: don't fail when removing a patch without patch file from series file
obsolete: compute successors set

Successors set are an important part of obsolescence. It is necessary to detect
and solve divergence situation. This changeset add a core function to compute
them, a debug command to audit them and solid test on the concept.

Check function docstring for details about the concept.
obsolete: drop successors sets which are subset of another one

If both "(B,)" and "(B, C)" are successors set of "A", "(B,)" is dropped.
We won't be interrested in detection such divergence scenario.
obsolete: detect divergent changesets

Divergent changeset are final successors (non obsolete) of a changeset who
compete with another set of final successors for this same changeset.

For example if you have two obsolescence markers A -> B and A -> C, B and C are
both "divergent" because they compete to be the one true successors of A.

Public revision can't be divergent.

This function is used and tested in the next changeset.
obsolete: add revset and test for divergent changesets

This changesets add a new `divergent()` revset similar to `unstable()` and
`bumped()` one. Introducting this revset allows actuall test of the divergent
detection.
obsolete: add a divergent method on context

The same we have `unstable` and `bumped`. Convenient method to access troubles
information in general may land later.

This get actual use and testing in the next changesets.
obsolete: refuse to push divergent changeset

As other troubles `unstable` and `bumped`. Followup patches may simplify the
push code with unification of "obsolescence troubles" handling.
largefiles: commit directories that only contain largefiles (issue3548)

If we pass a directory to commit whose only commitable files
are largefiles, the core commit code aborts before finding
the largefiles.
So we do the following:
For directories that only have largefiles as matches,
we explicitly add the largefiles to the matchlist and remove
the directory.
In other cases, we leave the match list unmodified.

--HG--
branch : stable
dirstate: don't rename branch file if writing it failed

--HG--
branch : stable
dirstate: remove obsolete comment from setbranch

This comment should have been removed in b74361cf7c0a, when the call
to scmutil.checknewlabel was removed.

--HG--
branch : stable
extra : source : 1683bca3175285d482633c4c7ed2231b338f6738
tests: improve test-mv-cp-st-diff.t readability
commands: 'hg bookmark NAME' should work even with ui.strict=True

Before this patch, enabling strict command processing (ui.strict=True)
meant that 'hg bookmark NAME', as referenced several places in the
documentation, would not work. This adds 'bookmark' as an explicit alias
to 'bookmarks'.
merge with crew-stable
ancestor: move missingancestors doctest out into a separate file

This is in preparation for upcoming patches which will reuse the same graph
for tests.
perf: add command to test performance of membership in ancestor set

The new command, perfancestorset, takes an argument denoting which revset to
test the membership of.

Currently this runs through all the ancestors and converts them into a set.
The primary purpose of having this is to compare this approach, currently used
in several places, against the upcoming lazy approach.

--HG--
extra : amend_source : d945c80651340a8bc340cd673b3d0d625a747b1e
revlog.ancestors: add support for including revs

This is in preparation for an upcoming refactoring. This also fixes a bug in
incancestors, where if an element of revs was an ancestor of another it would
be generated twice.
transplant: replace incancestors uses with ancestors
revlog: remove incancestors since it is no longer used