view tests/test-subrepo-svn @ 10505:b3311e26f94f stable

merge: fix --preview to show all nodes that will be merged (issue2043). Formerly, it omitted nodes that were not descendants of the least common ancestor of the two merge parents, even though those nodes contribute to the merge. The new algorithm uses revlog.findmissing() instead of ancestor() + nodesbetween().
author Greg Ward <greg-hg@gerg.ca>
date Mon, 15 Feb 2010 15:25:29 -0500
parents 4f38d03d4975
children c52057614c72
line wrap: on
line source

#!/bin/sh

"$TESTDIR/hghave" svn || exit 80

fix_path()
{
    tr '\\' /
}

escapedwd=`pwd | fix_path`
# SVN wants all paths to start with a slash. Unfortunately,
# Windows ones don't. Handle that.
expr $escapedwd : "\/" > /dev/null
if [ $? -ne 0 ]; then
    escapedwd='/'$escapedwd
fi
filterpath="sed s|$escapedwd|/root|"
filtersvn='s/ in transaction.*/ is out of date/;s/Out of date: /File /'

echo % create subversion repo

SVNREPO="file://$escapedwd/svn-repo"
WCROOT="`pwd`/svn-wc"
svnadmin create svn-repo
svn co $SVNREPO svn-wc
cd svn-wc
mkdir src
echo alpha > src/alpha
svn add src
mkdir externals
echo other > externals/other
svn add externals
svn ci -m 'Add alpha'
svn up
cat > extdef <<EOF
externals -r1 $SVNREPO/externals
EOF
svn propset -F extdef svn:externals src
svn ci -m 'Setting externals'
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

echo % add first svn sub with leading whitespaces
echo "s = [svn]       $SVNREPO/src" >> .hgsub
svn co --quiet $SVNREPO/src s
hg add .hgsub
hg ci -m1
echo % debugsub
hg debugsub | $filterpath

echo
echo % change file in svn and hg, commit
echo a >> a
echo alpha >> s/alpha
hg commit -m 'Message!'
hg debugsub | $filterpath

echo
echo a > s/a
echo % should be empty despite change to s/a
hg st

echo
echo % add a commit from svn
cd "$WCROOT"/src
svn up
echo xyz >> alpha
svn propset svn:mime-type 'text/xml' alpha
svn ci -m 'amend a from svn'
cd ../../sub/t

echo % this commit from hg will fail
echo zzz >> s/alpha
hg ci -m 'amend alpha from hg' 2>&1 | sed "$filtersvn"
svn revert -q s/alpha

echo % this commit fails because of meta changes
svn propset svn:mime-type 'text/html' s/alpha
hg ci -m 'amend alpha from hg' 2>&1 | sed "$filtersvn"
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

echo
echo % clone
cd ..
hg clone t tc | fix_path
cd tc
echo % debugsub in clone
hg debugsub | $filterpath