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.