bug in svubversion 1.6.6: unmodified external directory is not deleted, when svn:externals is deleted.

Alexander Kitaev <[email protected]> Wed, 09 Dec 2009 18:57:40 +0100
Newsgroups gmane.comp.version-control.subversion.devel,gmane.comp.version-control.subversion.rapidsvn.devel
Organization TMate Software
Message-ID <[email protected]>
Hello,

There is a serious bug in 1.6.6 (and in 1.6.5), external directory is
not deleted when svn:externals property is deleted.

That means that subsequent updates from a certain revision without any
modifications made to the target working copy will fail:

svn up -rN   (svn:external set to "URL ext")

svn up -rN+1 (svn:external deleted)

svn up -rN+2 ("ext" directory added) - will fail because "ext" has not
been deleted!


Attached script reproduces the problem.

-- 
Alexander Kitaev,
TMate Software,
http://svnkit.com/ - Java [Sub]Versioning Library!
http://sqljet.com/ - Java SQLite Library!

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2428934

Please start new threads on the <[email protected]> mailing list.
To subscribe to the new list, send an empty e-mail to <[email protected]>.
test2.sh (application/x-shellscript, 1 KB)
#!/bin/sh

# The next line is the only line you should need to adjust.
SVNDIR=/home/builder/usr/svn-166/bin

SVN=${SVNDIR}/svn
SVNSERVE=${SVNDIR}/svnserve
SVNADMIN=${SVNDIR}/svnadmin

URL=file:///`pwd`/repos

rm -rf repos wc import-me

${SVNADMIN} create repos

echo "### Making a Greek Tree for import..."
mkdir import-me
mkdir import-me/dir
mkdir import-me/dir2

(cd import-me; ${SVN} import -q -m "Initial import." ${URL})

echo "### Checking out WC..."
${SVN} co ${URL} wc

echo "### Setting svn:externals property..."
${SVN} ps svn:externals "ext ${URL}/dir2" wc/dir
${SVN} ci wc -m "external property set"
echo "### Update: external should be added"
${SVN} up wc

echo "### Deleting svn:externals property..."
${SVN} pd svn:externals wc/dir
echo "### Update: external should be deleted"
${SVN} up wc
${SVN} ci wc -m "external property deleted"

echo "### Creating new directory named as removed external directory"
${SVN} mkdir ${URL}/dir/ext -m "directory added remotely"

echo "### Receiving update (new directory named as removed external directory)"
${SVN} up wc