Mercurial > public > mercurial-scm > hg
view tests/test-commit @ 11109:a2bc2f2d77a9
subrepo: normalize path part of URLs so that pulling subrepos from webdir works
For a "all projects at root" repo layout eg:
/main
/sub
Where subrepos are used such that a clone of main has this layout:
./main/
./main/.hgsub
./main/sub/
And the .hgsub content is:
sub = ../sub
This allows a pull from a hgweb where main and sub are exposed
at the root (or same directory level)
The current code doesn't normalize the path component of a pull
url. this results in trying to pull from
http://server.com/hg/main/../sub
Current hgweb implementation doesn't reduce the path component
so this results in a 404 error though everything is setup logically.
This patch adresses this 404 error on the puller side
normalizing the URLs used for pulling sub repos. For this
example, the URL would be reduced to http://server.com/hg/sub
Fix + test
author | Edouard Gomez <ed.gomez@free.fr> |
---|---|
date | Sat, 01 May 2010 23:05:19 +0200 |
parents | 8766fee6f225 |
children |
line wrap: on
line source
#!/bin/sh echo % commit date test hg init test cd test echo foo > foo hg add foo HGEDITOR=true hg commit -m "" hg commit -d '0 0' -m commit-1 echo foo >> foo hg commit -d '1 4444444' -m commit-3 hg commit -d '1 15.1' -m commit-4 hg commit -d 'foo bar' -m commit-5 hg commit -d ' 1 4444' -m commit-6 hg commit -d '111111111111 0' -m commit-7 echo % commit added file that has been deleted echo bar > bar hg add bar rm bar hg commit -d "1000000 0" -m commit-8 hg commit -d "1000000 0" -m commit-8-2 bar hg -q revert -a --no-backup mkdir dir echo boo > dir/file hg add hg -v commit -m commit-9 dir echo > dir.file hg add hg commit -m commit-10 dir dir.file echo >> dir/file mkdir bleh mkdir dir2 cd bleh hg commit -m commit-11 . hg commit -m commit-12 ../dir ../dir2 hg -v commit -m commit-13 ../dir cd .. hg commit -m commit-14 does-not-exist ln -s foo baz hg commit -m commit-15 baz touch quux hg commit -m commit-16 quux echo >> dir/file hg -v commit -m commit-17 dir/file # An empty date was interpreted as epoch origin echo foo >> foo hg commit -d '' -m commit-no-date hg tip --template '{date|isodate}\n' | grep '1970' cd .. echo % partial subdir commit test hg init test2 cd test2 mkdir foo echo foo > foo/foo mkdir bar echo bar > bar/bar hg add hg ci -d '1000000 0' -m commit-subdir-1 foo hg ci -d '1000001 0' -m commit-subdir-2 bar echo % subdir log 1 hg log -v foo echo % subdir log 2 hg log -v bar echo % full log hg log -v cd .. echo % dot and subdir commit test hg init test3 cd test3 mkdir foo echo foo content > foo/plain-file hg add foo/plain-file hg ci -d '1000000 0' -m commit-foo-subdir foo echo modified foo content > foo/plain-file hg ci -d '2000000 0' -m commit-foo-dot . echo % full log hg log -v echo % subdir log cd foo hg log . cd .. cd .. cd .. hg init issue1049 cd issue1049 echo a > a hg ci -Ama echo a >> a hg ci -mb hg up 0 echo b >> a hg ci -mc HGMERGE=true hg merge echo % should fail because we are specifying a file name hg ci -mmerge a echo % should fail because we are specifying a pattern hg ci -mmerge -I a echo % should succeed hg ci -mmerge cd .. echo % test commit message content hg init commitmsg cd commitmsg echo changed > changed echo removed > removed hg ci -qAm init hg rm removed echo changed >> changed echo added > added hg add added HGEDITOR=cat hg ci -A cd .. exit 0