Hi,
I just came across this issue. Assume we have two branches:
branches/A where a particular subdir exists
branches/B where this subdir was replaced by an svn:externals entry
Steps to create:
svn mkdir --parents $REPO_URL/trunk/main/external/subdir -m "Create main"
svn mkdir --parents $REPO_URL/trunk/external/subdir -m "Create external"
svn mkdir --parents $REPO_URL/branches -m "Create branches"
svn cp $REPO_URL/trunk $REPO_URL/branches/A -m "Without externals"
svn rm $REPO_URL/trunk/main/external -m "Remove subdir"
svn co $REPO_URL/trunk/main; cd main
svn propset svn:externals "external $REPO_URL/trunk/external" .
svn commit -m "Replace subdir with external"
svn cp $REPO_URL/trunk $REPO_URL/branches/B -m "With externals"
Now try to switch between these two branches.
First switch is no problem:
svn switch $REPO_URL/branches/A/main
svnversion
-> 7
Second switch is .. interesting.
The working copy appears "switched" but isn't:
svn switch $REPO_URL/branches/B/main
svnversion
-> 7S
svn st
-> X external
Now switch back:
svn switch $REPO_URL/branches/A/main
-> Skipped 'external' -- An obstructing working copy was found
-> Removed external 'external'
The "external" subdir is gone now.. but svn update brings it back and
everything looks good:
svn up
-> A external
-> E external/subdir
svnversion
-> 7
So there are two problems:
1) When switching from a WC with externals to a WC without externals,
the externals (even though to be removed) prevent a full update.
2) When switching from a WC without externals to a WC with externals,
the WC is inconsistent afterwards. The "switched" state remains and
additional commits introduce mixed revisions, preventing e.g. merges:
touch testfile
svn add testfile
svn commit -m "Add testfile"
svn up
svnversion
-> 7:8S
The only way to avoid this ist to switch with --ignore-externals and
update afterwards:
svn switch $REPO_URL/branches/A/main
svn up
svn switch $REPO_URL/branches/B/main --ignore-externals
svn up
svnversion
-> 8
Is this a known issue?
svn --version
-> svn, Version 1.7.9 (r1462340)
-Robert