[ I'm not sure if it's a known issue or not, but I *think* it isn't. ]
It seems that 'svn up' doesn't check whether an item is obstructed before
applying textual changes to it.
For example, the attached script causes one obstructed item to get a
textual conflict, and another to be silently become non-obstructed
(destroying local changes). I haven't found a way to cause it to modify
an unversioned file :-).
I ran across this when I symlinked one wc's svnadmin_tests.py into the
other wc (i.e., 'cd wc1; ln -sf ../wc2/svnadmin_tests.py svnadmin_tests.py')
and ran 'svn up'.
if true; then
rm -rf repos wc1 wc2
$svnadmin create repos
ln -s /bin/true repos/hooks/pre-revprop-change
$svn co -q $URL wc1
for i in iota iota2; do
$svn add -q wc1/$i
$svn ci wc1 -q -m "Add iota and iota2"
echo line1 > wc1/iota
echo line1 > wc1/iota2
$svn ci wc1 -q -m "Change iota and iota2"
# get wc2
$svn co -q $URL wc2
# create an obstruction
echo line1 > wc2/unversioned-file
echo "Conflicting line" > wc2/target
ln -sf target wc2/iota
ln -sf unversioned-file wc2/iota2
echo "=== wc2/iota* are obstructed:"
$svn st wc2/iota*
echo "=== Updating wc2 to r1:"
$svn up --accept=postpone -r 1 wc2
echo "=== Result: textual conflict on an obstructed object:"
$svn st wc2/iota
echo "=== Result: the new symlink at iota2 has been broken:"
echo "=== Result: unversioned-file has not been changed (good):"
=== wc2/iota* are obstructed:
wc2/iota: symbolic link to `target'
wc2/iota2: symbolic link to `unversioned-file'
=== Updating wc2 to r1:
Updated to revision 1.
Summary of conflicts:
Text conflicts: 1
=== Result: textual conflict on an obstructed object:
=== Result: the new symlink at iota2 has been broken:
=== Result: unversioned-file has not been changed (good):
Received on 2009-01-28 21:38:11 CET