Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 15 Apr 2012 00:27:31 +0200] rev 16447
tests: add tests for matching keyword
This adds a couple of tests for the revset "matching" keyword:
1. Test that the 2nd parameter is optional
2. Test that all the 1st argument can be a revset and that all the supported
fields of the 2nd argument work.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 14 Apr 2012 01:41:03 +0200] rev 16446
revset: speedup matching() by first matching fields that take less time to
match
This patch sorts the fields that are passed to the matching function so that it
always starts by matching those fields that take less time to match.
Not all fields take the same amount of time to match. I've done several
measurements running the following command:
hg --time log -r "matching(1, field)"
on the mercurial repository, and where 'field' was each one of the fields
accepted by match. In order to avoid the print overhead (which could be
different for different fields, given the different number of matches) I used a
modified version of the matching() function which always returns no matches.
These tests showed that different fields take wildly different amounts of time
to match. Particulary the substate field takes up to 25 seconds to match on my
machine, compared to the 0.3 seconds that takes to match the phase field or the
2 seconds (approx) that takes to match most fields. With this patch, matching
both the phase and the substate of a revision takes the same amount of time as
matching the phase.
The field match order introduced by this patch is as follows:
phase, parents, user, date, branch, summary, files, description, substate
An extra nice thing about this patch is that it makes the match time stable.
Angel Ezquerra <angel.ezquerra@gmail.com> [Fri, 13 Apr 2012 13:46:49 +0200] rev 16445
revset: speedup matching() by stopping the match early if a field does not match
Rather than getting all the fields that are being matches from every revision
and then comparing them to those of the target revision, compare each field one
by one and stop the match as soon as there is a match failure.
This can greatly reduce the match time when matching multiple fields.
The impact on match time when matching a single field seems negligible
(according to my measurements).
Angel Ezquerra <angel.ezquerra@gmail.com> [Fri, 13 Apr 2012 13:35:45 +0200] rev 16444
revset: make matching keyword not match summary when matching for description
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 22 Mar 2012 21:12:15 +0100] rev 16443
fileset: add "subrepo" fileset symbol
This new fileset symbol returns a list of subrepos whose paths match a given
pattern. If the argument has no pattern type set, an exact
match is performed.
If no argument is passed, return a list of all subrepos.
Steven Stallion <sstallion@gmail.com> [Sun, 15 Apr 2012 23:47:46 -0700] rev 16442
plan9: finalize documentation for next release
Alain Leufroy <alain.leufroy@logilab.fr> [Mon, 16 Apr 2012 10:56:37 +0200] rev 16441
localrepo: do not complain about missing journal files
Alain Leufroy <alain.leufroy@logilab.fr> [Mon, 16 Apr 2012 10:33:18 +0200] rev 16440
repair: fix missing import
introduced by:
b5c0c7d0f83fe56240ce7a919581f1cbff4f5ee5
Na'Tosha Bard <natosha@unity3d.com> [Mon, 16 Apr 2012 17:03:39 +0200] rev 16439
largefiles: fix cat for largefiles (
issue3352)
This is a fix to largefiles so that 'hg cat' will work correctly when a
largefile is specified.
As per discussion on Issue 3352:
1) The file will be printed regardless if it is binary or large.
2) The file is downloaded if it is not readily available (not found in
the system cache), so that it can be printed. If the download fails,
then we abort.
Steven Stallion <sstallion@gmail.com> [Mon, 16 Apr 2012 08:50:40 -0700] rev 16438
pure: quiesce build warnings
The following patch fixes the following warning when building pure:
package init file 'mercurial/pure/__init__.py' not found (or not a regular file)
Matt Mackall <mpm@selenic.com> [Mon, 16 Apr 2012 11:26:00 -0500] rev 16437
util.h: replace ntohl/htonl with get/putbe32
Wolfgang Treutterer <Wolfgang.Treutterer@ipp.mpg.de> [Fri, 13 Apr 2012 10:08:08 +0200] rev 16436
scmutil: fix systemrcpath regression introduced in
f5dd179bfa4a
Changeset
f5dd179bfa4a introduced a 'root' path component to look for
hgrc files, which is used both as an absolute path and a path relative
to the <install-root>.
The latter one was broken since 'root' was set to an absolute location
and the subsequent os.path.join discarded the <install-root> path prefix.
Patrick Mezard <patrick@mezard.eu> [Fri, 13 Apr 2012 10:14:59 +0200] rev 16435
revlog: fix partial revision() docstring (from
d7d64b89a65c)
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 11:27:11 +0200] rev 16434
graphlog: fix --follow FILE and relative paths
The situation is complicated because filelog() revset uses a match object in
relpath mode while follow() revset interprets the filename as a manifest entry.
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 11:16:57 +0200] rev 16433
graphlog: reduce duplication in --follow code
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 10:44:13 +0200] rev 16432
graphlog: add all log options to glog command
glog and log -G should be equivalent.
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 10:30:38 +0200] rev 16431
graphlog: implement --hidden
Angel Ezquerra <angel.ezquerra@gmail.com> [Wed, 28 Mar 2012 11:42:17 +0200] rev 16430
revert: add support for reverting subrepos without --no-backup and/or --all
When a subrepo is reverted but --no-backup is not set, call revert on the
subrepo that is being reverted prior to updating it to the revision specified
in the parent repo's .hgsubstate file.
The --all flag is passed down to the subrepo when it is being reverted. If the
--all flag is not set, all files that are modified on the subrepo will be
reverted.
Angel Ezquerra <angel.ezquerra@gmail.com> [Wed, 28 Mar 2012 11:42:17 +0200] rev 16429
revert: add support for reverting subrepos
Reverting a subrepo is done by updating it to the revision that is selected on
the parent repo .hgsubstate file.
* ISSUES/TODO:
- reverting added and removed subrepos is not supported yet.
- reverting subrepos is only supported if the --no-backup flag is used (this
limitation will be removed on another patch).
- The behavior of the --all flag has been changed. It now reverts subrepos as
well. Note that this may lead to data loss if the user has a dirty subrepo.
Matt Mackall <mpm@selenic.com> [Sat, 14 Apr 2012 01:39:35 -0500] rev 16428
merge with stable
Bryan O'Sullivan <bryano@fb.com> [Fri, 13 Apr 2012 11:01:07 -0700] rev 16427
commands: move bundle type validation earlier
Checking the bundle type late in the command's execution can mean
that we do work for a long time before complaining about incorrect
user input and aborting. Guess how I discovered this.
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:55:46 -0500] rev 16426
changegroupsubset: optimize function lookup in prune
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:55:46 -0500] rev 16425
changegroup: optimize gennodelist
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:55:46 -0500] rev 16424
revlog: drop some unneeded rev.node calls in revdiff
Bryan O'Sullivan <bryano@fb.com> [Thu, 12 Apr 2012 20:26:33 -0700] rev 16423
revlog: avoid an expensive string copy
This showed up in a statprof profile of "hg svn rebuildmeta", which
is read-intensive on the changelog. This two-line patch improved
the performance of that command by 10%.
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:55:46 -0500] rev 16422
changegroupsubset: avoid setdefault in inner loop
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:55:40 -0500] rev 16421
changegroupsubset: drop repeated len() calls
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:27:29 -0500] rev 16420
changegroup: reduce progress overhead
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:23:45 -0500] rev 16419
changegroupsubset: renest inner loop
The mdata list should generally be shorter than changedfiles
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 21:35:48 -0500] rev 16418
revlog: increase readahead size
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 15:32:49 -0500] rev 16417
revset: avoid demandimport bug
Apparently the "import x as xy" doesn't manage to update xy in the
current scope's dictionary after load, which causes nodemod.nullrev to do a huge amount of demandload magic in the inner loop.
Patrick Mezard <patrick@mezard.eu> [Fri, 13 Apr 2012 15:07:13 +0200] rev 16416
mq: replace hasattr() with util.safehasattr(), update check-code.py
Matt Mackall <mpm@selenic.com> [Thu, 12 Apr 2012 20:52:39 -0500] rev 16415
merge with stable
Bryan O'Sullivan <bryano@fb.com> [Thu, 12 Apr 2012 14:05:59 -0700] rev 16414
parsers: use base-16 trie for faster node->rev mapping
This greatly speeds up node->rev lookups, with results that are
often user-perceptible: for instance, "hg --time log" of the node
associated with rev 1000 on a linux-2.6 repo improves from 0.3
seconds to 0.03. I have not found any instances of slowdowns.
The new perfnodelookup command in contrib/perf.py demonstrates the
speedup more dramatically, since it performs no I/O. For a single
lookup, the new code is about 40x faster.
These changes also prepare the ground for the possibility of further
improving the performance of prefix-based node lookups.
Matt Mackall <mpm@selenic.com> [Thu, 12 Apr 2012 20:22:18 -0500] rev 16413
check-code: avoid false-positive on ++
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:37:13 +0200] rev 16412
graphlog: cleanup before code move
- Avoid revset module aliasing
- Mark makefilematcher() private
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:32:00 +0200] rev 16411
graphlog: correctly handle calls in subdirectories
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:29:12 +0200] rev 16410
context: revert workingctx.ancestors() followfirst option
It was introduced by mistake in
352053e6cd8e.
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:25:34 +0200] rev 16409
graphlog: fix --follow-first --rev combinations
This solves a similar problem than the previous --follow/--rev patch. This time
we need changelog.ancestors()/descendants() filtering on first parent.
Duplicating the code looked better than introducing keyword arguments. Besides,
the ancestors() version was already implemented in follow() revset.
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:22:40 +0200] rev 16408
graphlog: fix --follow --rev combinations
The previous behaviour of --follow was really a subset of what is really
happening in log command:
- If --rev is not passed, default to '.:0'
- Resolve --rev into a revision list "revs"
- Set the starting revision to revs[0]
- If revs[1] > revs[0] keep descendants(revs[0]) in revs, otherwise keep
ancestors.
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:17:26 +0200] rev 16407
graphlog: support changeset identifiers in --branch
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:14:07 +0200] rev 16406
graphlog: pass changesets to revset.match() in changelog order
Running:
$ time hg debugrevspec 'user(mpm)' | wc
on Mercurial repository takes 1.0s with a regular version and 1.8s if
commands.debugrevspec() is patched to pass revisions to revset.match() from tip
to 0.
Depending on what we expect from the revset API and caller wisdom, we might
want to push this change in revset.match() later.
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:07:30 +0200] rev 16405
graphlog: refactor revset() to return revisions
When --follow and --rev are passed, --follow actual behaviour depends on the
input revision sequence defined by --rev. If --rev is not passed, the default
revision sequence depends on the presence of --follow. It means the revision
sequence generation is part of log logic and must be wrapped. The issue
described above is fixed in following patches.
Bryan O'Sullivan <bryano@fb.com> [Thu, 12 Apr 2012 15:21:54 -0700] rev 16404
store: speed up read and write of large fncache files
In my tests of an fncache containing 300,000 entries, this improves
read time from 567ms to 307, and write time from 1328ms to 533.
These numbers aren't so great, since the fncache file is only 17MB
in size, but they're an improvement.
Bryan O'Sullivan <bryano@fb.com> [Thu, 12 Apr 2012 15:21:52 -0700] rev 16403
perf: time fncache read and write performance
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 01 Apr 2012 14:12:14 +0200] rev 16402
revset: add "matching" keyword
This keyword can be used to find revisions that "match" one or more fields of a
given set of revisions.
A revision matches another if all the selected fields (description, author,
branch, date, files, phase, parents, substate, user, summary and/or metadata)
match the corresponding values of those fields on the source revision.
By default this keyword looks for revisions that whose metadata match
(description, author and date) making it ideal to look for duplicate revisions.
matching takes 2 arguments (the second being optional):
1.- rev: a revset represeting a _single_ revision (e.g. tip, ., p1(.), etc)
2.- [field(s) to match]: an optional string containing the field or fields
(separated by spaces) to match.
Valid fields are most regular context fields and some special fields:
* regular fields:
- description, author, branch, date, files, phase, parents,
substate, user.
Note that author and user are synonyms.
* special fields: summary, metadata.
- summary: matches the first line of the description.
- metatadata: It is equivalent to matching 'description user date'
(i.e. it matches the main metadata fields).
Examples:
1.- Look for revisions with the same metadata (author, description and date)
as the 11th revision:
hg log -r "matching(11)"
2.- Look for revisions with the same description as the 11th revision:
hg log -r "matching(11, description)"
3.- Look for revisions with the same 'summary' (i.e. same first line on their
description) as the 11th revision:
hg log -r "matching(11, summary)"
4.- Look for revisions with the same author as the current revision:
hg log -r "matching(., author)"
You could use 'user' rather than 'author' to get the same result.
5.- Look for revisions with the same description _AND_ author as the tip of the
repository:
hg log -r "matching(tip, 'author description')"
6.- Look for revisions touching the same files as the parent of the tip of the
repository
hg log -r "matching(p1(tip), files)"
7.- Look for revisions whose subrepos are on the same state as the tip of the
repository or its parent
hg log -r "matching(p1(tip):tip, substate)"
8.- Look for revisions whose author and subrepo states both match those of any
of the revisions on the stable branch:
hg log -r "matching(branch(stable), 'author substate')"
Steven Stallion <sstallion@gmail.com> [Tue, 10 Apr 2012 23:40:20 -0700] rev 16401
plan9: add execute permissions to 9diff
Steven Stallion <sstallion@gmail.com> [Tue, 10 Apr 2012 23:24:12 -0700] rev 16400
transplant: permit merge changesets via --parent
This change permits the transplant extension to operate on merge
changesets by way of --parent. This is particularly useful for
workflows which cherrypick branch merges rather than each commit
within a branch.
Matt Mackall <mpm@selenic.com> [Thu, 12 Apr 2012 20:22:18 -0500] rev 16399
help: fix indentation on cacert (
issue3350)
The parser doesn't really handle nesting, so reorder so the nested bit
is last.
Matt Mackall <mpm@selenic.com> [Thu, 12 Apr 2012 20:22:18 -0500] rev 16398
stream_in: avoid debug calls when debug is disabled
Matt Mackall <mpm@selenic.com> [Thu, 12 Apr 2012 20:22:18 -0500] rev 16397
util: create bytecount array just once
This avoids tons of gettext calls on workloads that call bytecount a lot.
Patrick Mezard <patrick@mezard.eu> [Sun, 08 Apr 2012 11:14:56 +0200] rev 16396
revset: avoid set duplication in roots()
Patrick Mezard <patrick@mezard.eu> [Sun, 08 Apr 2012 11:13:06 +0200] rev 16395
revset: retrieve a bit less parents in roots()
Patrick Mezard <patrick@mezard.eu> [Sun, 08 Apr 2012 11:11:30 +0200] rev 16394
revset: do not ignore input revisions in roots()
0329d3b12d8e is also partially reverted to use the 'narrow' parameter again and
make less changesets parents lookups.
Matt Mackall <mpm@selenic.com> [Tue, 10 Apr 2012 16:53:29 -0500] rev 16393
util.h: more Python 2.4 fixes
Bryan O'Sullivan <bryano@fb.com> [Mon, 09 Apr 2012 13:48:45 -0700] rev 16392
dispatch: add support for statprof as a profiler
This can be selected using the config variable profiling.type or
the environment variable HGPROF ("ls" for the default, "stat" for
statprof). The only tuneable is the frequency, profiling.freq,
which defaults to 1000 Hz.
If statprof is not available, a warning is printed.
Steven Stallion <sstallion@gmail.com> [Mon, 09 Apr 2012 14:36:16 -0700] rev 16391
ui: optionally quiesce ssl verification warnings on python 2.5
Some platforms, notably Plan 9 from Bell Labs are stuck on older
releases of Python. Due to restrictions in the platform, it is not
possible to backport the SSL library to the existing Python port.
This patch permits the UI to quiesce SSL verification warnings by
adding a configuration entry named reportoldssl to ui.
Bryan O'Sullivan <bryano@fb.com> [Mon, 09 Apr 2012 22:16:26 -0700] rev 16390
scmutil: speed up revrange
This improves the performance of "hg log -l1" from 0.21 seconds to
0.07 on a Linux kernel tree.
Ideally we could use xrange instead of range on the most common
path, and thus avoid a ton of allocation, but xrange doesn't support
slice-based indexing.
Matt Mackall <mpm@selenic.com> [Tue, 10 Apr 2012 12:49:12 -0500] rev 16389
graft: add --dry-run support (
issue3362)
Idan Kamara <idankk86@gmail.com> [Fri, 06 Apr 2012 16:18:33 +0300] rev 16388
repair: allow giving strip backup a different name
So the user can differentiate amend backups from the rest.
Matt Mackall <mpm@selenic.com> [Tue, 10 Apr 2012 12:07:18 -0500] rev 16387
encoding: add fast-path for ASCII lowercase
Matt Mackall <mpm@selenic.com> [Tue, 10 Apr 2012 12:07:16 -0500] rev 16386
perf: add case collision auditor perf
Matt Mackall <mpm@selenic.com> [Tue, 10 Apr 2012 12:07:14 -0500] rev 16385
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com> [Tue, 10 Apr 2012 12:07:09 -0500] rev 16384
util.h: move Py_ssize_t bits from mpatch.c
Steven Stallion <sstallion@gmail.com> [Sun, 08 Apr 2012 12:43:41 -0700] rev 16383
plan9: initial support for plan 9 from bell labs
This patch contains support for Plan 9 from Bell Labs. A README is
provided in contrib/plan9 which describes the port in greater detail.
A new extension is also provided named factotum which permits the
factotum(4) authentication agent to provide credentials for HTTP
repositories. This extension is also applicable to other POSIX
platforms which make use of Plan 9 from User Space (aka plan9ports).
Matt Mackall <mpm@selenic.com> [Sun, 08 Apr 2012 22:17:51 -0500] rev 16382
util.h: add a typedef for Py_ssize_t with Python 2.4
Matt Mackall <mpm@selenic.com> [Sun, 08 Apr 2012 12:38:26 -0500] rev 16381
log: bypass file scan part of fastpath when no files
This avoids loading dirstate parents, looking up p1 rev, and loading
p1 manifest to match against an empty matcher.
Matt Mackall <mpm@selenic.com> [Sun, 08 Apr 2012 12:38:24 -0500] rev 16380
cmdutil: use context instead of lookup
Matt Mackall <mpm@selenic.com> [Sun, 08 Apr 2012 12:38:23 -0500] rev 16379
scmutil: use context instead of lookup
Matt Mackall <mpm@selenic.com> [Sun, 08 Apr 2012 12:38:10 -0500] rev 16378
localrepo: lookup now goes through context
Matt Mackall <mpm@selenic.com> [Sun, 08 Apr 2012 12:38:08 -0500] rev 16377
context: use rev for changelog lookup
Faster when we're doing numeric scanning
Matt Mackall <mpm@selenic.com> [Sun, 08 Apr 2012 12:38:07 -0500] rev 16376
context: internalize lookup logic
This allows us to avoid doing rev->node->rev lookups on silly
instances like "0", which end up caching the whole nodemap.
Matt Mackall <mpm@selenic.com> [Sun, 08 Apr 2012 12:38:02 -0500] rev 16375
revlog: allow retrieving contents by revision number
Matt Mackall <mpm@selenic.com> [Sat, 07 Apr 2012 15:43:18 -0500] rev 16374
revlog: add hasnode helper method
Matt Mackall <mpm@selenic.com> [Fri, 06 Apr 2012 15:18:14 -0500] rev 16373
merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 06 Apr 2012 15:17:50 -0500] rev 16372
merge with crew
Matt Mackall <mpm@selenic.com> [Fri, 06 Apr 2012 15:16:30 -0500] rev 16371
tags: defer tag validation until repo.tags() is called
Before, we were validating all tags for any tag operation, which meant
building a (nearly) full node->tag lookup tree for most operations.
Bryan O'Sullivan <bryano@fb.com> [Fri, 06 Apr 2012 00:28:36 -0700] rev 16370
parsers: fix a memleak, and add a clearcaches method to the index
This change also fixes a nasty memory leak: previously, self->caches
was not being freed.
The new clearcaches method lets us benchmark with finer granularity,
as it lets us separate the cost of loading a revlog index from those
of populating and accessing the cache data structures.
Patrick Mezard <patrick@mezard.eu> [Wed, 04 Apr 2012 15:59:56 +0200] rev 16369
hghave: remove symlink test made useless by
ac0da5caebec
Julien Cristau <julien.cristau@logilab.fr> [Wed, 04 Apr 2012 13:55:11 +0200] rev 16368
tests: disable progress estimate in test-debugbuilddag.t
If the command takes long enough, including 'estimate' in the format
will add some more data to the progress bar output, and make the test
fail. See e.g.
https://buildd.debian.org/status/fetch.php?pkg=mercurial&arch=kfreebsd-amd64&ver=2.1.2-2&stamp=
1333493711
Kevin Bullock <kbullock@ringworld.org> [Wed, 04 Apr 2012 12:46:54 -0500] rev 16367
ui: swallow EBADF on stderr
ui.write_err already swallows EPIPE and EIO if a write to stderr fails.
On Mac OS X at least, a write to a closed file descriptor results in
EBADF. Before this patch, hg would exit with status 1 if a write to
stderr failed during startup (e.g. while trying to print a warning about
not finding an extension):
$ ./hg --config extensions.foo= version 2>&-; echo $?
1
With this patch, it correctly swallows stderr and continues to run the
command:
$ ./hg --config extensions.foo= version 2>&-
Mercurial Distributed SCM (version 2.1)
...
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 05 Apr 2012 23:52:55 +0900] rev 16366
mq: use list of already known target files instead of matching object for diff
'hg qnew' passes matching object to 'patch.diff()' to specify target
filenames, and it causes 'dirstate.walk()' via 'repo.status()' in
'patch.diff()'.
but target files are already known before 'patch.diff()' invocation.
to avoid useless 'dirstate.walk()' invocation, this patch uses
'changes' argument to pass already known target files to
'patch.diff()' instead of 'match' argument.
'changes' argument of 'patch.diff()' should have lists for modified,
added and removed files separately, so this patch saves status of
'.hgsubstate' before commit, and put it into appropriate list in
'changes'.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 05 Apr 2012 23:52:06 +0900] rev 16365
mq: use exact matching in the second dirstate walking for efficiency of 'qnew'
'hg qnew' with pattern/-I/-X creates matching object with them, and
uses it twice for 'dirstate.walk()': via 'repo.status()' and
'repo.commit()'.
this may cause full manifest scan in the second 'dirstate.walk()',
even though mq already knows complete target filenames at the first
'dirstate.walk()'.
this patch creates exact matching object also in this case, and use it
at 'repo.commit()' invocation to avoid full manifest scan in the
second 'dirstate.walk()'.
even though 'inclsubs' is added to 'pats' for original matching
object, it is also passed to exact matching object, because
subrepositories are deleted from result of 'dirstate.walk()' at the
end of it.
Jim Hague <jim.hague@acm.org> [Thu, 05 Apr 2012 12:31:21 +0100] rev 16364
tests: avoid test-hup hanging on AIX
test-hup hangs on AIX. Under ksh89 on AIX (the default shell),
echo Hello; while [ ! -s not-there ]; do true; done
produces no output while the loop executes. Replacing 'true' with 'sleep 0'
fixes, as does using a less broken shell. ksh93 is fine.
Update check-code.py to look for this, and make same change in test-serve.t.
In fact test-serve works fine, probably because of additional commands between
echo and the loop, but that's a subtlety not easy to test for.
Bryan O'Sullivan <bryano@fb.com> [Thu, 05 Apr 2012 13:00:35 -0700] rev 16363
parsers: incrementally parse the revlog index in C
We only parse entries in a revlog index file when they are actually
needed, and cache them when first requested.
This makes a huge difference to performance on large revlogs when
accessing the tip revision or performing a handful of numeric lookups
(very common cases). For instance, "hg --time tip --template {node}"
on a tree with 300,000 revs takes 0.15 before, 0.02 after.
Even for revlog-intensive operations (e.g. running "hg log" to
completion), the lazy approach is about 1% faster than the eager
parse_index2.
Patrick Mezard <patrick@mezard.eu> [Thu, 05 Apr 2012 15:39:07 +0200] rev 16362
mdiff: fix diff header generation for files with spaces (
issue3357)
diff ---/+++ should end filenames with a TAB when they contain spaces. Current
code failed to do so when only the +++ file had spaces. This only happened with
git renames from a name without space to one with space.
Benoit Allard <benoit@aeteurope.nl> [Wed, 04 Apr 2012 00:00:47 +0200] rev 16361
protocol: Add the stream-preferred capability
This makes the client use the uncompressed protocol.
Matteo Capobianco <m.capobianco@gmail.com> [Wed, 28 Mar 2012 16:06:20 +0200] rev 16360
templates/filters: extracting the user portion of an email address
Currently, the 'user' filter is using util.shortuser(text) (which clearly
doesn't extract only the user portion of an email address, even though the
help text says it does).
The new 'emailuser' filter uses the new util.emailuser(text) function which,
instead, does exactly that.
The help text on the 'user' filter has been modified accordingly.
Patrick Mezard <patrick@mezard.eu> [Thu, 05 Apr 2012 19:15:23 +0200] rev 16359
context: make changectx.mutable() benefit from .phase() logic
This fixes "hg qimport -r null". Previous versions used to:
- Traceback because null revision mutability was not defined
- Add an empty -1.diff patch to the series
The error message:
abort: revision -1 is not mutable
is symptomatic of a deeper problem in phase command revision handling. It could
be fixed easily in the command itself but I feel a better fix must be done in
phase API which raises the issue of phase updates atomicity: aborting in
phases.advanceboundary/retractboundary requires a better rollback behaviour to
avoid partial changes.
Patrick Mezard <patrick@mezard.eu> [Thu, 05 Apr 2012 19:23:04 +0200] rev 16358
patch: remove useless variable assignment
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 04 Apr 2012 12:31:31 +0200] rev 16357
export: catch exporting empty revsets (
issue3353)
Additionally add tests for empty revsets and unknown revisions.
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 04 Apr 2012 11:19:09 +0200] rev 16356
merge with stable
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 04 Apr 2012 11:18:42 +0200] rev 16355
test-merge-types: allow different output with existing hgmerge (
issue3346)
Because hgmerge was meant to be adjusted to personal needs, there may be
many remaining copies in people's $PATH.
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 04 Apr 2012 10:57:48 +0200] rev 16354
inotify: catch SignalInterrupt during shutdown (
issue3351)
When inotify.repowatcher.shutdown() is called, mercurial.error.SignalInterrupt
exception is thrown by mercurial.dispatch._runcatch.catchterm(), therefore
socketlistener.shutdown() is not called.
Catching this allows cleanup action (removing the socket file) to proceed.
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 03 Apr 2012 22:02:04 +0200] rev 16353
merge with stable
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 03 Apr 2012 22:01:28 +0200] rev 16352
clone: always close source repository (
issue2491)
This is especially needed for cloning from bundles as a temporary
bundlerepository is created which needs to be deleted after clone has
finished.
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 03 Apr 2012 21:02:00 +0200] rev 16351
merge with stable
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 03 Apr 2012 19:06:35 +0200] rev 16350
tests: make tests work if directory contains special characters
With this quoting tests will work e.g. in "/tmp/foo bar/mercurial/".
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 03 Apr 2012 16:36:25 +0200] rev 16349
test-gpg: replace
825565136235 by md5sum check
The call to 'hg identify' would have needed '--cwd "$TESTDIR' to make it work
anyway, but by using a checksum this test can work outside a repository.
Matt Mackall <mpm@selenic.com> [Tue, 03 Apr 2012 11:35:04 -0500] rev 16348
config: discard UTF-8 BOM if found
Matt Mackall <mpm@selenic.com> [Mon, 02 Apr 2012 17:02:50 -0500] rev 16347
merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 02 Apr 2012 17:02:03 -0500] rev 16346
tests: shorten post-test sleeps
This helps expose races
Javi Merino <cibervicho@gmail.com> [Mon, 02 Apr 2012 22:25:55 +0100] rev 16345
tests: don't run test-gpg if not in a working directory
test-gpg has to be run in a mercurial working directory as it uses
that to verify that it hasn't modified the trustdb.gpg file. Skip the
test if it is running in an exploded tarball.
Matt Mackall <mpm@selenic.com> [Mon, 02 Apr 2012 16:46:58 -0500] rev 16344
tests: avoid zombie lockup with test-hup
The 'while kill -0' recipe can cause a livelock if the process we're waiting
to die is a normal child process. If it becomes a zombie that the shell
doesn't reap (shell bug?), it will continue to be able to accept
signals. So instead, we just wait(1).
Matt Mackall <mpm@selenic.com> [Mon, 02 Apr 2012 16:09:29 -0500] rev 16343
merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 02 Apr 2012 16:04:07 -0500] rev 16342
tests: make test-hup more race-proof
We need to wait until a journal exists AND is non-empty before
aborting a transaction to get stable output. We move the kill wait
outside the fifo block to avoid potential deadlock.
Matt Mackall <mpm@selenic.com> [Mon, 02 Apr 2012 15:06:36 -0500] rev 16341
tests: re-silence test-bad-pull log messages
Matt Mackall <mpm@selenic.com> [Sun, 01 Apr 2012 15:57:04 -0500] rev 16340
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Apr 2012 15:54:29 -0500] rev 16339
tests: really add blacklist for vfat on Linux
Matt Mackall <mpm@selenic.com> [Sun, 01 Apr 2012 15:35:12 -0500] rev 16338
tests: fix one more sed -i
Matt Mackall <mpm@selenic.com> [Sun, 01 Apr 2012 15:34:22 -0500] rev 16337
merge stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Apr 2012 15:31:07 -0500] rev 16336
Added signature for changeset
b9bd95e61b49
Matt Mackall <mpm@selenic.com> [Sun, 01 Apr 2012 15:31:04 -0500] rev 16335
Added tag 2.1.2 for changeset
b9bd95e61b49
Matt Mackall <mpm@selenic.com> [Sun, 01 Apr 2012 14:23:55 -0500] rev 16334
tests: fix shutdown race in test-bad-pull
Matt Mackall <mpm@selenic.com> [Sun, 01 Apr 2012 14:01:10 -0500] rev 16333
check-code: check for sed -i
Matt Mackall <mpm@selenic.com> [Sun, 01 Apr 2012 13:59:11 -0500] rev 16332
tests: remove sed -i from test-record
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 01 Apr 2012 18:18:48 +0900] rev 16331
tests: fix portability of sed usage in test-mq
on some platform (Mac OS X and Solaris, at least), to insert new text
line, sed function 'i' should be followed by:
- backslash('\'),
- new-line,
- text to be inserted and
- new-line
GNU sed on Linux can recognize both previous and new ones as same
modification request.
in addition to it, this patch avoids to use '-i' option for sed,
because it is not so portable, as noted in WritingTests wiki page.
Augie Fackler <durin42@gmail.com> [Sat, 31 Mar 2012 15:39:44 -0500] rev 16330
zsh completion: fix error in qfinish completions from
88a82069be4a
The actual flag is --applied, not --all.
Matt Mackall <mpm@selenic.com> [Sat, 31 Mar 2012 14:05:10 -0500] rev 16329
merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 31 Mar 2012 14:04:39 -0500] rev 16328
record: fix up test issues
sed on BSD requires an arg to -i
sed failing exposed an uninitialized variable issue