view tests/test-diff-upgrade @ 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 e451e599fbcf
children 4484a7b661f2 9b3913baba0c
line wrap: on
line source

#!/bin/sh

echo "[extensions]" >> $HGRCPATH
echo "autodiff=$TESTDIR/autodiff.py" >> $HGRCPATH
echo "[diff]" >> $HGRCPATH
echo "nodates=1" >> $HGRCPATH

hg init repo
cd repo
echo '% make a combination of new, changed and deleted file'
echo regular > regular
echo rmregular > rmregular
touch rmempty
echo exec > exec
chmod +x exec
echo rmexec > rmexec
chmod +x rmexec
echo setexec > setexec
echo unsetexec > unsetexec
chmod +x unsetexec
echo binary > binary
python -c "file('rmbinary', 'wb').write('\0')"
hg ci -Am addfiles
echo regular >> regular
echo newregular >> newregular
rm rmempty
touch newempty
rm rmregular
echo exec >> exec
echo newexec > newexec
chmod +x newexec
rm rmexec
chmod +x setexec
chmod -x unsetexec
python -c "file('binary', 'wb').write('\0\0')"
python -c "file('newbinary', 'wb').write('\0')"
rm rmbinary
hg addremove

echo '% git=no: regular diff for all files'
hg autodiff --git=no

echo '% git=no: git diff for single regular file'
hg autodiff --git=yes regular

echo '% git=auto: regular diff for regular files and removals'
hg autodiff --git=auto regular newregular rmregular rmbinary rmexec

for f in exec newexec setexec unsetexec binary newbinary newempty rmempty; do
    echo '% git=auto: git diff for' $f
    hg autodiff --git=auto $f
done

echo '% git=warn: regular diff with data loss warnings'
hg autodiff --git=warn

echo '% git=abort: fail on execute bit change'
hg autodiff --git=abort regular setexec

echo '% git=abort: succeed on regular file'
hg autodiff --git=abort regular

cd ..