Mercurial > hg
view tests/test-git-export.out @ 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 | 5a45c82fc7da |
children |
line wrap: on
line source
adding start adding new % new file diff --git a/new b/new new file mode 100644 --- /dev/null +++ b/new @@ -0,0 +1,1 @@ +new % copy diff --git a/new b/copy copy from new copy to copy % rename diff --git a/copy b/rename rename from copy rename to rename % delete diff --git a/rename b/rename deleted file mode 100644 --- a/rename +++ /dev/null @@ -1,1 +0,0 @@ -new adding src % chmod 644 diff --git a/src b/src old mode 100644 new mode 100755 % rename+mod+chmod diff --git a/src b/dst old mode 100755 new mode 100644 rename from src rename to dst --- a/src +++ b/dst @@ -3,3 +3,4 @@ 3 4 5 +a % nonexistent in tip+chmod diff --git a/src b/src old mode 100644 new mode 100755 % binary diff diff --git a/binfile.bin b/binfile.bin new file mode 100644 index 0000000000000000000000000000000000000000..37ba3d1c6f17137d9c5f5776fa040caf5fe73ff9 GIT binary patch literal 593 zc$@)I0<QguP)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-Uh9TW;VpMjwv0005-Nkl<ZD9@FWPs=e;7{<>W$NUkd zX$nnYLt$-$V!?uy+1V%`z&Eh=ah|duER<4|QWhju3gb^nF*8iYobxWG-qqXl=2~5M z*IoDB)sG^CfNuoBmqLTVU^<;@nwHP!1wrWd`{(mHo6VNXWtyh{alzqmsH*yYzpvLT zLdY<T=ks|woh-`&01!ej#(xbV1f|pI*=%;d-%F*E*X#ZH`4I%6SS+$EJDE&ct=8po ziN#{?_j|kD%Cd|oiqds`xm@;oJ-^?NG3Gdqrs?5u*zI;{nogxsx~^|Fn^Y?Gdc6<; zfMJ+iF1J`LMx&A2?dEwNW8ClebzPTbIh{@$hS6*`kH@1d%Lo7fA#}N1)oN7`gm$~V z+wDx#)OFqMcE{s!JN0-xhG8ItAjVkJwEcb`3WWlJfU2r?;Pd%dmR+q@mSri5q9_W- zaR2~ECX?B2w+zELozC0s*6Z~|QG^f{3I#<`?)Q7U-JZ|q5W;9Q8i_=pBuSzunx=U; z9C)5jBoYw9^?EHyQl(M}1OlQcCX>lXB*ODN003Z&P17_@)3Pi=i0wb04<W?v-u}7K zXmmQA+wDgE!qR9o8jr`%=ab_&uh(l?R=r;Tjiqon91I2-hIu?57~@*4h7h9uORK#= fQItJW-{SoTm)8|5##k|m00000NkvXXu0mjf{mKw4 % import binary diff applying b.diff % rename binary file diff --git a/binfile.bin b/renamed.bin rename from binfile.bin rename to renamed.bin % diff across many revisions diff --git a/dst2 b/dst3 rename from dst2 rename to dst3 % reversed diff --git a/dst3 b/dst2 rename from dst3 rename to dst2 % file created before r1 and renamed before r2 diff --git a/foo b/bar rename from foo rename to bar --- a/foo +++ b/bar @@ -1,2 +1,3 @@ a b +c % reversed diff --git a/bar b/foo rename from bar rename to foo --- a/bar +++ b/foo @@ -1,3 +1,2 @@ a b -c % file created in r1 and renamed before r2 diff --git a/foo b/bar rename from foo rename to bar --- a/foo +++ b/bar @@ -1,1 +1,3 @@ a +b +c % reversed diff --git a/bar b/foo rename from bar rename to foo --- a/bar +++ b/foo @@ -1,3 +1,1 @@ a -b -c % file created after r1 and renamed before r2 diff --git a/bar b/bar new file mode 100644 --- /dev/null +++ b/bar @@ -0,0 +1,3 @@ +a +b +c % reversed diff --git a/bar b/bar deleted file mode 100644 --- a/bar +++ /dev/null @@ -1,3 +0,0 @@ -a -b -c % comparing with the working dir % there's a copy in the working dir... diff --git a/created2 b/created3 rename from created2 rename to created3 % ...but there's another copy between the original rev and the wd diff --git a/created b/created3 rename from created rename to created3 % ...but the source of the copy was created after the original rev diff --git a/created3 b/created3 new file mode 100644 --- /dev/null +++ b/created3 @@ -0,0 +1,1 @@ + % created in parent of wd; renamed in the wd diff --git a/brand-new b/brand-new2 rename from brand-new rename to brand-new2 % created between r1 and parent of wd; renamed in the wd diff --git a/brand-new2 b/brand-new2 new file mode 100644 --- /dev/null +++ b/brand-new2 @@ -0,0 +1,1 @@ + % one file is copied to many destinations and removed diff --git a/brand-new2 b/brand-new3 rename from brand-new2 rename to brand-new3 diff --git a/brand-new2 b/brand-new3-2 copy from brand-new2 copy to brand-new3-2 % reversed diff --git a/brand-new3 b/brand-new2 rename from brand-new3 rename to brand-new2 diff --git a/brand-new3-2 b/brand-new3-2 deleted file mode 100644 --- a/brand-new3-2 +++ /dev/null @@ -1,1 +0,0 @@ - % there should be a trailing TAB if there are spaces in the file name diff --git a/with spaces b/with spaces new file mode 100644 --- /dev/null +++ b/with spaces @@ -0,0 +1,1 @@ +foo