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
Test the CIA extension
$ cat >> $HGRCPATH <<EOF
> [extensions]
> hgcia=
>
> [hooks]
> changegroup.cia = python:hgext.hgcia.hook
>
> [web]
> baseurl = http://hgserver/
>
> [cia]
> user = testuser
> project = testproject
> test = True
> EOF
$ hg init src
$ hg init cia
$ cd src
$ echo foo > foo
$ hg ci -Amfoo
adding foo
$ hg push ../cia
pushing to ../cia
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
<message>
<generator>
<name>Mercurial (hgcia)</name>
<version>0.1</version>
<url>http://hg.kublai.com/mercurial/hgcia</url>
<user>testuser</user>
</generator>
<source>
<project>testproject</project>
<branch>default</branch>
</source>
<body>
<commit>
<author>test</author>
<version>0:e63c23eaa88a</version>
<log>foo</log>
<url>http://hgserver/rev/e63c23eaa88a</url>
<files><file uri="http://hgserver/file/e63c23eaa88a/foo" action="add">foo</file></files>
</commit>
</body>
<timestamp>0</timestamp>
</message>
$ cat >> $HGRCPATH <<EOF
> strip = 0
> EOF
$ echo bar > bar
$ hg ci -Ambar
adding bar
$ hg push ../cia
pushing to ../cia
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
<message>
<generator>
<name>Mercurial (hgcia)</name>
<version>0.1</version>
<url>http://hg.kublai.com/mercurial/hgcia</url>
<user>testuser</user>
</generator>
<source>
<project>testproject</project>
<branch>default</branch>
</source>
<body>
<commit>
<author>test</author>
<version>1:c0c7cf58edc5</version>
<log>bar</log>
<url>http://hgserver/$TESTTMP/cia/rev/c0c7cf58edc5</url>
<files><file uri="http://hgserver/$TESTTMP/cia/file/c0c7cf58edc5/bar" action="add">bar</file></files>
</commit>
</body>
<timestamp>0</timestamp>
</message>