qnew: omit meaningless and harmful putting subrepositories into target list

Before this patch, qnew puts updated subrepositories into target list
forcibly, if any of -I, -X or patterns are specified.

But this is meaningless and harmful, because:

  - putting subrepositories into target list doesn't affect the result
    of "localrepository.status()"

    "dirstate.status()" invoked via "localrepository.status()" always
    omits subrepositories from the result of it

  - any -I/-X opts and empty "pats" causes unexpected failure

    when any -I/-X opts are specified, "inclsubs" are always added to
    "pats", even if "pats" is empty.

    but this changes meaning of "pats" from "including all to be
    included" to "including only listed subrepositories"

    this may exclude ".hgsub" and cause unexpected exception raising
    ("can't commit subrepos without .hgsub" ).

  - qnew at other than repository root (with -I, -X or any patterns)
    causes unexpected failure

    "scmutil.match()" treats pattern without syntax type as 'relpath'
    type (= one rooted at cwd).

    but qnew puts subrepository paths rooted at the repository root,
    and it causes unexpected exception raising ("SUBREPO not under
    root ROOT" in "pathutil.canonpath()"), if "hg qnew" is executed at
    other than repository root with -I, -X or any patterns.

This patch omits meaningless and harmful putting subrepositories into
target list.

This omitting doesn't miss including updated subrepositories, because
subrepositories are specified to "scmutil.matchfiles()" directly, to
get "match" object for "localrepository.commit()".
mq: omit ".hgsubstate" from qnew/qrefresh target list for consistent node hash

Before this patch, even if specified file patterns and -I/-X options
cause listing ".hgsubstate" up in the target list, qnew/qrefresh put
".hgsubstate" into the target list individually and forcibly.

This changes how many times ".hgsubstate" appear in the target list
according to run-time conditions, and causes inconsistent node hash,
even though revision content is same, because node hash calculation
uses the specified target list directly (without duplication check or
so).

This patch always omits ".hgsubstate" from qnew/qrefresh target list
for consistent node hash.

This omitting doesn't miss including ".hgsubstate" changes, because:

  - "localrepository.commit()" puts ".hgsubstate" into the target list
    for "commitctx()" forcibly if needed

  - "mq.putsubstate2changes()" puts ".hgsubstate" into the target list
    for "patch.diff()" if it is not yet listed up
config: backout 77f1f206e135 - 743daa601445 removed the only use of overlay

--HG--
extra : rebase_source : 8af2825f4386d202608f7df9719749021f038e7e
config: give a useful hint of source for the most common command line settings

'hg showconfig --debug' will instead of:
  none: ui.verbose=False
give the better hint:
  --verbose: ui.verbose=False

--HG--
extra : rebase_source : 7c3e9f785feffc210ffdbbf3a90e8c22e22cf8cc
config: don't set source when no source is specified - don't overwrite with ''

This prevents ui.fixconfig from overwriting the source of paths and it will
thus show up in showconfig --debug.

--HG--
extra : rebase_source : 88aae69cac3da8c93cc6b8db329d6517b934a221
config: set a 'source' in most cases where config don't come from file but code

Some extensions set configuration settings that showed up in 'hg showconfig
--debug' with 'none' as source. That was confusing.

Instead, they will now tell which extension they come from.

This change tries to be consistent and specify a source everywhere - also where
it perhaps is less relevant.

--HG--
extra : rebase_source : aa8c611cfa3b915eb3a4977891922b46ce2305e4
backout: improve confusing 'cannot backout change on a different branch' abort

These days 'branch' usually refer to a named branch.

Instead, abort with 'cannot backout change that not is an ancestor'.

--HG--
extra : rebase_source : 0443aab5d18bcb063784144849841bb2cd6afd40
merge: mark mergestate as dirty when resolve changes _state

Correctness - no visible difference so far.

--HG--
extra : rebase_source : f5093a7c4f8e0c278b19e1ee3268d4016cf70aaa
tests: small refactoring of run-tests' handling of tests list

--HG--
extra : rebase_source : aba7f6b3d5549a658b704bc838a9697c48df38c8
sshpeer: only print out 'running ssh' messages in debug mode (BC)

Previously, if another command was run with --verbose, and for whatever reason
that invoked sshpeer, we'd get a 'running ssh' message from sshpeer. This extra
line would interfere with that command's output and cause dumb parsers to
break.

For example, hg annotate can be run with --verbose to get full usernames. This,
combined with the third-party remotefilelog extension which can cause ssh
connections to be created, leads to an extra 'running ssh' line that breaks
most parsers.

This patch is (BC) because hg pull --verbose will no longer print out exactly
what ssh command it is running.

No tests are affected by this change.

--HG--
extra : rebase_source : 3068f2a462c480de35ce23d8e04ca52199825c38
convert: more clear documentation of the 'include' default of a 'include .'

At first glance it can be confusing that adding a superfluous include directive
will exclude more files.

--HG--
branch : stable
merge with stable