- Apr 08, 2012
-
-
Matt Mackall authored
This allows us to avoid doing rev->node->rev lookups on silly instances like "0", which end up caching the whole nodemap.
-
Matt Mackall authored
-
- Apr 07, 2012
-
-
Matt Mackall authored
-
- Apr 06, 2012
-
-
Matt Mackall authored
-
Matt Mackall authored
-
Matt Mackall authored
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 authored
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.
-
- Apr 04, 2012
-
-
Patrick Mézard authored
-
Julien Cristau authored
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 authored
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) ...
-
- Apr 05, 2012
-
-
Katsunori FUJIWARA authored
'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'.
-
Katsunori FUJIWARA authored
'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 authored
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 authored
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 Mézard authored
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.
-
- Apr 03, 2012
-
-
Benoit Allard authored
This makes the client use the uncompressed protocol.
-
- Mar 28, 2012
-
-
Matteo Capobianco authored
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.
-
- Apr 05, 2012
-
-
Patrick Mézard authored
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 Mézard authored
-
- Apr 04, 2012
-
-
Thomas Arendsen Hein authored
Additionally add tests for empty revsets and unknown revisions.
-
Thomas Arendsen Hein authored
-
Thomas Arendsen Hein authored
Because hgmerge was meant to be adjusted to personal needs, there may be many remaining copies in people's $PATH.
-
Thomas Arendsen Hein authored
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.
-
- Apr 03, 2012
-
-
Thomas Arendsen Hein authored
-
Thomas Arendsen Hein authored
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 authored
-
Thomas Arendsen Hein authored
With this quoting tests will work e.g. in "/tmp/foo bar/mercurial/".
-
Thomas Arendsen Hein authored
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 authored
-
- Apr 02, 2012
-
-
Matt Mackall authored
-
Matt Mackall authored
This helps expose races
-
Javi Merino authored
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 authored
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 authored
-
Matt Mackall authored
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 authored
-
- Apr 01, 2012
-
-
Matt Mackall authored
-
Matt Mackall authored
-
Matt Mackall authored
-
Matt Mackall authored
-