bookmarks: deactivate current bookmark if no name is given

f57f891eb88e added this help text to hg bookmark:

  If no NAME is given, the current active bookmark will be marked inactive.

But that was never actually the case.

Originally spotted by Idan Kamara <idankk86@gmail.com>.

--HG--
branch : stable
contrib: add a commit synthesizer for reproducing scaling problems

This adds two new commands:

- analyze examines an existing repo and writes out a statistical
  description of its properties that contains no identifying
  information.

- synthesize creates new commits based on the description generated
  by analyze.

The intention is that a repo constructed using synthesize will have
properties that are vaguely statistically similar to the originating
repo, but entirely random content.

This can be useful for forecasting performance as a repo grows, and
for developers who want to find bottlenecks in proprietary repos
to which they do not have access.
merge with crew-stable
test-dirstate: remove test with date larger than 32 bit

When running on a 32bit system or with a touch command that only accepts
32bit dates, the following happened:
$ touch -t 250001011200 a
touch: invalid date format `250001011200'
spelling: fix minor spell checker issues
run-tests: drop unused enumerate
branchcache: fetch source branchcache during clone (issue3378)

Recomputing branch cache on clone may be expensive,
therefore if possible we fetch it along with the data.

- If the clone is performed by copying, we just copy branchcache file.
- If we localrepo.clone and streaming then we follow the procedure:
  1. Fetch branchmap from the remote
  2. Fetch the actual data.
  3. Find the latest rev within branch heads (tip at the time of
     branchmap fetch)
  4. Update the cache for the revs in [remotetip+1, tip]

This way we ensure that the branchcache is correct even in case
of races with commits.

--HG--
extra : rebase_source : c49cbe58dc89863d17cd3606256f4469a6f1e6dd
run-tests: use more explicit criteria for detecting no-eol

Preparing for the situation where there could be unsalted lines not terminated
with \n.

--HG--
extra : rebase_source : 8c74563ba9bc11c0419483656e12439afe136666
run-tests: allow test output lines to be terminated with \r in addition to \n

str.splitlines could not be used in 546c76e5a3e6, but _now_ we would like to
have lines with other line endings than \n.

Some fine occurences of (esc) markup of \r is replaced with multiple lines
ending with '\r (no-eol) (esc)'.  That is no win but also no significant loss.

This change makes it possible to drop filtercr.py - _that_ is a win.

--HG--
extra : rebase_source : d5aa81edaad713c782abf1271ee416a981c877b4
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup

--HG--
extra : rebase_source : 3d4ea89662e6d184b23a7af27aed9d97e5965e3e
store: add a contains method to basicstore

Adds a __contains__ method to basicstore that checks if a file/dir is present in the store

--HG--
extra : rebase_source : 8ad4e0a0401d5e0da67b9964e778869affd3d245
store: add a contains method to fncachestore

Adds a __contains__ method to fncachestore to check for file/dir existence (using fncache.__contains__).
Also extends fncache.__contains__ to check for directories (by prefix matching)

--HG--
extra : rebase_source : f02cdf073fd3a5cff18f055aca337721f38ccb7e
log: speed up hg log for untracked files (issue1340)

'hg log' on untracked files tends to be fairly slow. The root cause is that we end up using the 'slowpath' when we can't find a revlog for the files listed. This could happen if the file in question is an untracked file, or it is a directory.
This diff tries to speed up 'hg log' (by avoiding the slowpath) for files if we can determine if that file is not (and was never) a directory. We use the previously added store.__contains__ methods to test if the directory exists (or existed) in the store.
To avoid changing any existing semantics, this 'optimization' kicks in only when none of the files listed as arguments to the hg log command exist in the store.

--HG--
extra : rebase_source : 35b2834ee2c56b672e04911114918d6d58f41be5
store: invoke "osutil.listdir()" via vfs

This patch invokes "osutil.listdir()" via vfs object.

The function added newly to "abstractvfs" is named not as "listdir()"
but as "readdir()", because:

  - "os.listdir()" seems to be more familiar as "listdir()" than
    "osutil.listdir()"

  - "osutil.listdir()" returns also type of each files like
    "readdir()" POSIX API: even though "d_type" field of "dirent"
    structure is defined mainly only on BSD/Linux

This patch invokes "osutil.listdir()" via "rawvfs" object to avoid
filename encoding, because the path passed to "osutil.listdir()"
shouldn't be encoded.

This patch also omits importing "osutil" module, because it is no
longer used.

--HG--
extra : rebase_source : ec214c50d822714ac565a3f199aa5dee25af72bb