patch: be more tolerant with "Parent" header (issue3356)

Here is how export and mq write the "Parent" header:

  mq:     # Parent XXXXX
  export: # Parent  XXXXX

then import expects exactly 2 spaces while mq tolerates one or more. So "hg
import --exact" truncates mq generated patches header by one character and
fails. This patch aligns import "Parent" header parsing on mq one. I do not
expect spaces in parent references anytime soon.

Reported by Stefan Ring <stefanrin@gmail.com>

--HG--
branch : stable
fetch: remove confusing reference to "authoritative" changes

--HG--
branch : stable
bdiff.bdiff: release the GIL before doing expensive diff operations

This means that threaded webservers will have more of a chance of
doing something useful while the C extension is busy computing a
delta. Not doing this was causing problems for Google Code with a 25
meg text file that takes O(7 minutes) to deltify.

--HG--
branch : stable
icasefs: make case-folding collision detection as rename aware (issue3370)

if the file in target context causes case-folding collision against
one in working context, current implementation aborts merging with it,
even thouhg collding one (in target) is the file renamed from collided
one (in working).

this patch uses file copy information to know whether colliding file
is renamed from collided one or not: if so, collision between them is
ignored.

this patch also avoids collision detection between current context and
target context, if working context is clean (with --check/-c) or will
be clean (with --clean/-C).

--HG--
branch : stable
merge default into stable for 2.2 code freeze

--HG--
branch : stable
Makefile: be more careful when cleaning up pure/ components

The recent introduction of pure/__init__.py causes
mercurial/__init__.py to get clobbered by make clean.

--HG--
branch : stable
Added tag 2.2-rc for changeset d9e2f09d5488

--HG--
branch : stable
Added signature for changeset d9e2f09d5488

--HG--
branch : stable
factotum: rename mount and path configuration entries

The factotum extension used mount and path entries which were too
generic. These have been replaced by mountpoint and executable
(respectively) to match existing conventions.

--HG--
branch : stable
convert/svn: clarify svn_source.latest() stop arg default value

stop=0 could pass for a valid default value at first sight.

--HG--
branch : stable
convert/svn: refactor svn_source.latest() with a nested function

We will call it more than once for reasons detailed later.

--HG--
branch : stable
convert/svn: do not try converting empty head revisions (issue3347)

Subversion conversion works by picking trunk and branches heads, computing a
revision graph from them and converting the selected commits. By design we fail
to convert empty revisions so we have to be careful when discovering the
revision graph. In this particular issue, the source svn repository was a
partial mirror made by svnsync. The funny part is svnsync preserves all
revisions including empty ones. Also, we trusted ra.stat(path,
stop).created_rev to give us the latest revision with changes in path history
up to stop. This assumption broke at least when path is '', that is the
repository root, which always returned 'stop' revision despited being empty.

The workaround is to first trust ra.stat() but if the returned revision appear
empty, search the whole path history from stop to r1 until some changes are
found.

--HG--
branch : stable
revset: fix O(n**2) behaviour of bisect() (issue3381)

--HG--
branch : stable
revert: show warning when reverting subrepos that do not support revert

The warning is similar to the warning that was shown before hgsubrepo revert
support was added, with the exception that now the subrepo type is shown.

For example, when trying to revert a git subrepo located in "include/mygitsub",
the warning message would be:

include/mygitsub: reverting git subrepos is unsupported

--HG--
branch : stable
i18n: show localized messages for commands/extensions in hgweb help top (issue3383)

in hgweb help top page, help topics are localized, but abstracts of
commands and extensions are not, although these are already
translated.

it is because localized messages for them should be explicitly looked
up by original ones.

this patch looks localized messages up for each commands/extensions.

--HG--
branch : stable
commands: add missing wlock to backout

--HG--
branch : stable
commands: add missing wlock to branch

--HG--
branch : stable
dirstate: write branch file atomically

--HG--
branch : stable
commands: add missing wlock to graft

--HG--
branch : stable
pure/osutil: use Python's msvcrt module (issue3380)

As proposed by Christophe Gouiran <christophe.gouiran@eurocopter.com>

--HG--
branch : stable