tests: AIX can't handle negative date in test-dirstate.t

test-dirstate.t fails on AIX in the absurd date test. AIX touch errors on
any date prior to 1970. AIX mktime() gives an error on such dates, so the
problem is deeper than touch and attempts to work around touch in Python
failed.

Give up. Add an AIX test to hghave and skip the absurd date test on AIX.

--HG--
branch : stable
hgweb: fix empty navigation detection

For some obscure reason, changelog.node(0) returns nullid if changelog is empty.
this break empty navigation detection. We fix this code by using the length of
the changelog.

Using the length have some issue with revision filtering but this is a small
step in the right direction. Proper fix comes in later changeset.

--HG--
branch : stable
extra : rebase_source : b44d4877db10ed093e06edc20ee81eb2cb95351f
hgweb: handle filtered "0" rev in navigation

Before this changeset, navigation generation crashed if revision "0" was
filtered. We introduce a `_first` methods on revision navigation that return the
lowest unfiltered element and use it in two place were the "0" changeset was
explicitly referenced.

Test case are introduced.

--HG--
branch : stable
extra : rebase_source : 695d20759883352074e9855f9677e08ec61f309a
merge: increase safety of parallel updating/removing on icasefs

"merge.applyupdates()" sorts "actions" in removal first order, and
"workeractions" derived from it should be also sorted.

If each actions in "workeractions" are executed in serial, this
sorting ensures that merging/updating process is collision free,
because updating the file in target context is always executed after
removing the existing file which causes case-folding collision against
the former.

In the other hand, if each actions are executed in parallel, updating
on a worker process may be executed before removing on another worker
process, because "worker.partition()" partitions list of actions
regardless of type of each actions.

This patch divides "workeractions" into removing and updating, and
executes the former first.

This patch still scans "actions"/"workeractions" some times for ease
of patch review, even though large list may cost much in this way.
(total cost should be as same as before)

This also changes some tests, because dividing "workeractions" affects
progress indication.

--HG--
branch : stable
extra : rebase_source : 63e2b6092567fcffe1e70bac17d4e41d5f0003a5
push: factorise phase movement in a simple closure

Having all phases movement centralised will help to handle special case when the
local repo can not be locked as describe in issue 3684.

--HG--
branch : stable
push: make locking of source optional (issue3684)

Having the permission to lock the source repo on push is now optional. When the
repo cannot be locked, phase are not changed locally. A status message is issue
when some actual phase movement are skipped:

    cannot lock source repo, skipping local public phase update

A debug message with the exact reason of the locking failure is issued in all
case.

--HG--
branch : stable
dispatch: add doctests for _earlygetopt

--HG--
branch : stable
dispatch: add support for --option=value to _earlygetopt

This fixes a very confusing error message:

  $ hg --config=pager.enabled=off st
  abort: option --config may not be abbreviated!

--HG--
branch : stable