test-subrepo-svn
113 lines
| 2.6 KiB
| text/plain
|
TextLexer
/ tests / test-subrepo-svn
Augie Fackler
|
r10178 | #!/bin/sh | ||
"$TESTDIR/hghave" svn || exit 80 | ||||
Patrick Mezard
|
r10198 | fix_path() | ||
{ | ||||
tr '\\' / | ||||
} | ||||
escapedwd=`pwd | fix_path` | ||||
# SVN wants all paths to start with a slash. Unfortunately, | ||||
# Windows ones don't. Handle that. | ||||
Mads Kiilerich
|
r10775 | expr "$escapedwd" : "\/" > /dev/null | ||
Patrick Mezard
|
r10198 | if [ $? -ne 0 ]; then | ||
Mads Kiilerich
|
r10775 | escapedwd="/$escapedwd" | ||
Patrick Mezard
|
r10198 | fi | ||
Benoit Boissinot
|
r10791 | escapedwd=`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$escapedwd"` | ||
Mads Kiilerich
|
r10775 | filterpath="s|$escapedwd|/root|" | ||
Brett Cannon
|
r10954 | filteroutofdate='s/ in transaction.*/ is out of date/;s/Out of date: /File /' | ||
filterexternal="s|Fetching external item into '.*/s/externals'|Fetching external item into 's/externals'|g" | ||||
Augie Fackler
|
r10178 | |||
echo % create subversion repo | ||||
SVNREPO="file://$escapedwd/svn-repo" | ||||
Mads Kiilerich
|
r10267 | WCROOT="`pwd`/svn-wc" | ||
Augie Fackler
|
r10178 | svnadmin create svn-repo | ||
Mads Kiilerich
|
r10775 | svn co "$SVNREPO" svn-wc | ||
Augie Fackler
|
r10178 | cd svn-wc | ||
Patrick Mezard
|
r10273 | mkdir src | ||
echo alpha > src/alpha | ||||
svn add src | ||||
mkdir externals | ||||
echo other > externals/other | ||||
svn add externals | ||||
Augie Fackler
|
r10178 | svn ci -m 'Add alpha' | ||
Patrick Mezard
|
r10273 | svn up | ||
cat > extdef <<EOF | ||||
Benoit Boissinot
|
r10791 | externals -r1 $SVNREPO/externals | ||
Patrick Mezard
|
r10273 | EOF | ||
svn propset -F extdef svn:externals src | ||||
svn ci -m 'Setting externals' | ||||
Augie Fackler
|
r10178 | cd .. | ||
echo % create hg repo | ||||
mkdir sub | ||||
cd sub | ||||
hg init t | ||||
cd t | ||||
echo % first revision, no sub | ||||
echo a > a | ||||
hg ci -Am0 | ||||
David Soria Parra
|
r10457 | echo % add first svn sub with leading whitespaces | ||
echo "s = [svn] $SVNREPO/src" >> .hgsub | ||||
Mads Kiilerich
|
r10775 | svn co --quiet "$SVNREPO"/src s | ||
Augie Fackler
|
r10178 | hg add .hgsub | ||
hg ci -m1 | ||||
echo % debugsub | ||||
Mads Kiilerich
|
r10775 | hg debugsub | sed "$filterpath" | ||
Augie Fackler
|
r10178 | |||
echo | ||||
echo % change file in svn and hg, commit | ||||
echo a >> a | ||||
echo alpha >> s/alpha | ||||
Patrick Mezard
|
r11142 | hg commit -m 'Message!' | sed "$filterexternal" \ | ||
| sed 's:Sending.*s/alpha:Sending s/alpha:g' | ||||
Mads Kiilerich
|
r10775 | hg debugsub | sed "$filterpath" | ||
Augie Fackler
|
r10178 | |||
echo | ||||
echo a > s/a | ||||
echo % should be empty despite change to s/a | ||||
hg st | ||||
echo | ||||
echo % add a commit from svn | ||||
Patrick Mezard
|
r10273 | cd "$WCROOT"/src | ||
Augie Fackler
|
r10178 | svn up | ||
echo xyz >> alpha | ||||
Patrick Mezard
|
r10273 | svn propset svn:mime-type 'text/xml' alpha | ||
Augie Fackler
|
r10178 | svn ci -m 'amend a from svn' | ||
Patrick Mezard
|
r10273 | cd ../../sub/t | ||
Augie Fackler
|
r10178 | echo % this commit from hg will fail | ||
echo zzz >> s/alpha | ||||
Brett Cannon
|
r10954 | hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate" | ||
Patrick Mezard
|
r10273 | svn revert -q s/alpha | ||
echo % this commit fails because of meta changes | ||||
svn propset svn:mime-type 'text/html' s/alpha | ||||
Brett Cannon
|
r10954 | hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate" | ||
Patrick Mezard
|
r10273 | svn revert -q s/alpha | ||
echo % this commit fails because of externals changes | ||||
echo zzz > s/externals/other | ||||
hg ci -m 'amend externals from hg' | ||||
svn revert -q s/externals/other | ||||
echo % this commit fails because of externals meta changes | ||||
svn propset svn:mime-type 'text/html' s/externals/other | ||||
hg ci -m 'amend externals from hg' | ||||
svn revert -q s/externals/other | ||||
Augie Fackler
|
r10178 | |||
echo | ||||
echo % clone | ||||
cd .. | ||||
Patrick Mezard
|
r10198 | hg clone t tc | fix_path | ||
Augie Fackler
|
r10178 | cd tc | ||
echo % debugsub in clone | ||||
Mads Kiilerich
|
r10775 | hg debugsub | sed "$filterpath" | ||
Brett Cannon
|
r10954 | |||
echo % verify subrepo is contained within the repo directory | ||||
python -c "import os.path; print os.path.exists('s')" | ||||