Alexander Sauta <demosito@gmail.com> [Sat, 17 Dec 2011 20:21:52 +0300] rev 15729
i18n-ru: synchronized with
d976b1ef6760
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 24 Dec 2011 19:16:36 +0900] rev 15728
icasefs: add test for case preservation on case insensitive filesystem
"hg qpush" causes unexpected behavior, if case preservation on case
insensitive filesystem is not enough.
this patch adds the test using mixed-case filenames to reproduce this
problem on any case insensitive filesystems.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 25 Dec 2011 20:35:16 +0900] rev 15727
i18n: use "encoding.lower()" to normalize string in hgweb search query
some problematic encoding (e.g.: cp932) uses ASCII alphabet characters
in byte sequence of multi byte characters.
"str.lower()" on such byte sequence may treat distinct characters as
same one, and cause unexpected log matching.
this patch uses "encoding.lower()" instead of "str.lower()" to
normalize strings for compare.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 25 Dec 2011 20:35:16 +0900] rev 15726
i18n: use "encoding.lower()" to normalize specified string for revset
some problematic encoding (e.g.: cp932) uses ASCII alphabet characters
in byte sequence of multi byte characters.
"str.lower()" on such byte sequence may treat distinct characters as
same one, and cause unexpected log matching.
this patch uses "encoding.lower()" instead of "str.lower()" to
normalize strings for compare.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 25 Dec 2011 20:35:16 +0900] rev 15725
i18n: use "encoding.lower()" to normalize specified keywords for log searching
some problematic encoding (e.g.: cp932) uses ASCII alphabet characters
in byte sequence of multi byte characters.
"str.lower()" on such byte sequence may treat distinct characters as
same one, and cause unexpected log matching.
this patch uses "encoding.lower()" instead of "str.lower()" to
normalize strings for compare.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 25 Dec 2011 20:32:48 +0900] rev 15724
win32mbcs: allow win32mbcs extension to be enabled on cygwin platform
this patch allows win32mbcs extension to be enabled on cygwin platform
for problematic character encodings.
on recent cygwin platform, even though
"os.path.supports_unicode_filenames" is False, "os.listdir()" and
other path manipulation functions can return the result correctly
decoded in unicode for invocations with unicode arguments, if locale
is configured properly.
existing code to check "os.path.supports_unicode_filenames" is kept to
prevent win32mbcs from being enabled on unexpected platform.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 24 Dec 2011 19:05:35 +0900] rev 15723
windows: use normalized path as path to subrepo
path to subrepo is used to identify or check location of subrepo.
it should be normalized (in "/" delimiter form), because it is also
used with narrowmatcher which uses only normalized path even on
Windows environment.
this patch applies "util.pconvert()" on path to subrepo (called
"subpath") to normalize it.
for this patch, referers of below were checked.
- subrepo.state()
- subrepo.itersubrepos()
- subrepo.subrepo()
- context.sub()
- context.substate()
typical usecase is:
for subpath in ctx.substate:
sub = ctx.sub(subpath)
... ctx.substate[subpath] ....
in this case, normalization has no side effect, because keys given
from substate are used as key itself.
other cases shown below also seem to require subpath to be normalized.
- path components are joined by "/", in "commands.forget()":
for subpath in ctx.substate:
subforget[subpath + '/' + fsub] = (fsub, sub)
- normalized "file" is used to check below condition, in
"commands.revert()", "localrepository.commit()", and
"localrepository._checknested()"
file in ctx.substate
- substate.keys() is passed to dirstate.walk()/status() which use
only normalized pathes
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 24 Dec 2011 19:05:25 +0900] rev 15722
windows: use normalized path to check repository nesting
current "localrepository._checknested()" uses specified path itself to
compare against subrepo pathes.
it is invoked from "hgsubrepo.subrepo()" or pathauditor (as callback),
and both use "os.sep" as separator.
this causes unexpected nesting check result, if subrepo configuration
uses "/" as path separator for sub repo path.
this path uses "/" to join path components (or apply "util.pconvert()"
on path) to normalize.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 24 Dec 2011 19:01:07 +0900] rev 15721
windows: force specified path to be audited in localpath form
pathauditor is invoked not only for localpath form using "os.sep" as
separator, but also for normalized form using "/": for example, hg
internal path like "store/data" under ".hg", or ones normalized by
match object
this causes insufficient repository nesting check, because current
pathauditor implementation divides specified path into components by
"os.sep", and this causes to treat multiple path components joined by
"/" as single one on Windows environment.
this patch applies "util.localpath()" on specified path to force it to
be divided into components correctly.
in fact, root for pathauditor also uses multiple path separator on
Windows. but this does not affect audit itself, so "util.localpath()"
is not applied on it.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 24 Dec 2011 00:52:06 +0900] rev 15720
icasefs: rewrite comment to explain situtation precisely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 24 Dec 2011 00:51:14 +0900] rev 15719
icasefs: follow standard cache look up pattern
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 24 Dec 2011 00:50:56 +0900] rev 15718
icasefs: disuse length check against un-normcase()-ed filenames
this patch disuses length check against un-normcase()-ed filenames
gotten by "os.listdir()", because there is no assurance that
filesystem stores filenames normalized except in letter case, even
though some case insensitive filesystems (in some environment, for
some language setting) store them in such manner.
Matt Mackall <mpm@selenic.com> [Thu, 22 Dec 2011 15:56:27 -0600] rev 15717
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 22 Dec 2011 15:56:17 -0600] rev 15716
merge with i18n
Fabian Kreutz <fabian.kreutz@qvantel.com> [Wed, 21 Dec 2011 11:48:18 +0200] rev 15715
i18n-de: Translations and fixes until line 6000; more annotations
Fabian Kreutz <fabian.kreutz@qvantel.com> [Mon, 19 Dec 2011 14:11:37 +0200] rev 15714
i18n-de: New translations, mostly largefiles extension
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 22 Dec 2011 00:42:25 +0100] rev 15713
phases: do not exchange secret changesets
Any secret changesets will be excluded from pull and push. Phase data are
properly synchronized on pull and push if a changeset is seen as secret locally
but is non-secret remote side.
This patch does not handle the case of a changeset secret on remote but known
locally.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 22 Dec 2011 00:40:46 +0100] rev 15712
phases: test the new-commit option and proper inheritence of phase
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 16 Dec 2011 21:21:08 +0900] rev 15711
cygwin: add cygwin specific normcase logic
in cygwin environment, mount point part of path is treated as case
sensitive, even though underlying NTFS is case insensitive.
this patch preserves mount point part of specified path, only if it is
absolute one.
there is no easy way to get list of current mount points from python
program, other than to execute "mount" external command, because
cygwin does not store current mount points into Unix/Linux like
/etc/XXXtab file.
so, this patch introduces cygwinmountpoints variable to list mount
points to be preserved case.
this allows some other extensions to customize mount point
configuration.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 16 Dec 2011 21:09:40 +0900] rev 15710
icasefs: avoid path-absoluteness/existance check in util.fspath() for efficiency
'dirstate._normalize()', the only caller of 'util.fspath()', has
already confirmed exsistance of specified file as relative to root.
so, this patch omits path-absoluteness/existance check from
'util.fspath()'.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 16 Dec 2011 21:09:40 +0900] rev 15709
icasefs: retry directory scan once for already invalidated cache
some hg operation (e.g.: qpush) create new files after first
dirstate.walk()-ing, and it invalidates _fspathcache for fspath().
then, fspath() will fail to look up specified name in _fspathcache.
this causes case preservation breaking, because parts of already
normcase()-ed path are used as result at that time.
in this case, file creation and writing out should be done before
fspath() invocation, so the second invocation of os.listdir() has not
so much impact on runtime performance.
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 29 Sep 2011 17:20:04 +0200] rev 15708
push: propagate --new-branch and --ssh options when pushing subrepos
Up until now the all the push command options were ignored when pushing
subrepos. In particular, the fact that the --new-branch command was not passed
down to subrepos made it not possible to push a repo when any of its
subrepos had a new branch, even if you used the --new-branch option of the push
command.
In addition the error message was confusing since it showed the following hint:
"--new-branch hint: use 'hg push --new-branch' to create new remote branches".
However using the --new_branch flag did not fix the problem, as it was ignored
when pushing subrepos.
This patch passes the --new-branch and --ssh flags to every subrepo that is
pushed.
Issues/Limitations:
- All subrepo types get these flags, but only the mercurial subrepos use them.
- It is no longer possible to _not_ pass down these flags to subrepos when
pushing:
* An alternative would be to introduce a --subrepos flag that should be
used to pass down these flags to the subrepos.
* If we did this, it could make sense to make the --force flag respect this
new --subrepos flag as well for consistency's sake.
- Matt suggested that the ssh related flags could also be passed down to
subrepos during pull and clone. However it seems that it would be the "update"
command that would need to get those, since subrepos are only pulled on update.
In any case I'd prefer to leave that for a later patch.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 21 Dec 2011 23:56:15 +0100] rev 15707
phases: implement ``phase()`` and ``hidden()`` method for workingctx
Working ctx don't have revision number and need a dedicated implementation.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 20 Dec 2011 01:31:25 +0100] rev 15706
Add a phases.new-commit option to control minimal phase of new commit
this option is both intended for human and internal code usage.