Matt Mackall <mpm@selenic.com> [Thu, 19 Aug 2010 17:33:46 -0500] rev 12002
bookmarks: fix long line
Matt Mackall <mpm@selenic.com> [Thu, 19 Aug 2010 17:29:13 -0500] rev 12001
merge with stable
Vishakh H <vsh426@gmail.com> [Fri, 13 Aug 2010 19:42:28 +0530] rev 12000
revlog: addgroup re-adds punched revisions for missing parents
While reading changegroup if a node with missing parents is encountered,
we add a punched entry in the index with null parents for the missing
parent node.
Vishakh H <vsh426@gmail.com> [Fri, 13 Aug 2010 19:41:51 +0530] rev 11999
revlog: generate full revisions when parent node is missing
The full revision is sent if the first parent, against which diff is calculated, is
missing at remote. This happens in the case of shallow clones.
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Fri, 20 Aug 2010 00:17:50 +0200] rev 11998
revlog.revision(): inline deltachain computation
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Fri, 20 Aug 2010 00:17:50 +0200] rev 11997
revlog.revision(): remove debug code
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Fri, 20 Aug 2010 00:17:50 +0200] rev 11996
revlog.revision(): don't use nullrev as the default value for the cache
I is probably a bug if the deltachain computation think there was a cache hit
at nullrev. Use None instead, this will never trigger a cache hit.
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Fri, 20 Aug 2010 00:17:50 +0200] rev 11995
revlog.revision(): minor cleanup
Rename some variables, making the name more obvious (in particular "cache" was
actually two different variable.
Move code around, moving the index preloading before the deltachain computation,
without that index preloading was useless (everything was read in deltachain).
David Soria Parra <dsp@php.net> [Thu, 19 Aug 2010 15:04:21 -0400] rev 11994
bookmarks: Check if the bookmark to delete exists on the remote
Patrick Mezard <pmezard@gmail.com> [Thu, 19 Aug 2010 23:13:20 +0200] rev 11993
Merge with stable
Patrick Mezard <pmezard@gmail.com> [Thu, 19 Aug 2010 22:51:09 +0200] rev 11992
win32: remove useless lstat() fallback in nlinks()
The fallback was introduced by
3b4f05ff3130 at the same time than
nlinks(). Apparently it only handles the case where target path
does not exist. Just raise IOError directly.
Patrick Mezard <pmezard@gmail.com> [Thu, 19 Aug 2010 22:51:09 +0200] rev 11991
win32: correctly break hardlinks on network drives (
issue761)
win32.nlinks() was often returning 1 instead of the correct
hardlinks count when reading from network drives. This made
commit or push to a repository on a network share to fail
breaking the hardlinks in the datastore, possibly causing
integrity errors in repositories linked locally on the remote
side.
Here is what the MSDN says about GetFileInformationByHandle():
Depending on the underlying network features of the operating
system and the type of server connected to, the
GetFileInformationByHandle function may fail, return partial
information, or full information for the given file.
In practice, we never got the correct hardlinks count when
reading from and to many combinations of Window XP, 2003, Vista
and 7, via network drives or RDP shares. It always returned 1
instead. The only setup returning an accurate links count was a
samba on Debian.
To avoid this, Mercurial now breaks the hardlinks unconditionally
when writing to a network drive.
Matt Mackall <mpm@selenic.com> [Thu, 19 Aug 2010 11:51:30 -0500] rev 11990
merge with stable
Steve Losh <steve@stevelosh.com> [Wed, 18 Aug 2010 18:56:44 -0400] rev 11989
aliases: provide more flexible ways to work with shell alias arguments
This patch changes the functionality of shell aliases to add more powerful
options for working with shell alias arguments.
First: the alias name + arguments to a shell alias are set as an HG_ARGS
environment variable, delimited by spaces. This matches the behavior of hooks.
Second: any occurrences of "$@" (without quotes) are replaced with the
arguments, separated by spaces. This happens *before* the alias gets to the shell.
Third: any positive numeric variables ("$1", "$2", etc) are replaced with the
appropriate argument, indexed from 1. "$0" is replaced with the name of the
alias. Any "extra" numeric variables are replaced with an empty string. This
happens *before* the alias gets to the shell.
These changes allow for more flexible shell aliases:
[alias]
echo = !echo $@
count = !hg log -r "$@" --template='.' | wc -c | sed -e 's/ //g'
qqueuemv = !mv "`hg root`/.hg/patches-$1" "`hg root`/.hg/patches-$2"
In action:
$ hg echo foo
foo
$ hg count 'branch(default)'
901
$ hg count 'branch(stable) and keyword(fixes)'
102
$ hg qqueuemv myfeature somefeature
Steve Losh <steve@stevelosh.com> [Wed, 18 Aug 2010 18:18:26 -0400] rev 11988
util: add an interpolate() function to for replacing multiple values
util.interpolate can be used to replace multiple items in a string all at once
(and optionally apply a function to the replacement), without worrying about
recursing:
>>> import util
>>> s = '$foo, $spam'
>>> util.interpolate(r'\$', { 'foo': 'bar', 'spam': 'eggs' }, s)
'bar, eggs'
>>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s)
'spam, foo'
>>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s, lambda s: s.upper())
'SPAM, FOO'
The patch also changes filemerge.py to use this new function.
Brodie Rao <brodie@bitheap.org> [Wed, 18 Aug 2010 10:53:52 -0400] rev 11987
convert: use encoding.encoding instead of locale.getpreferredencoding()
The latter may not return useful results in certain OS X environments.