The following scenario fails for me: delete a file, create a symlink with the 
same name, run "svn diff". Instead of displaying the diff, SVN tries to read 
the link content. If "NOWHERE" variable is set to the file name, the symlink 
refers to itself, showing another error.

Instead I would expect something with "-" and "+" markers. If you uncomment
#echo "link $NOWHERE" > $WC_PATH/trunk/file

and comment out "ln -s" call, the script will display approximately what I 
would expect (but without svn:special).

I'm not sure if this is a known bug, sorry for reporting something known if it 

Locally I also have similar scenario failing in another way: before reading 
the symlink it displays deletion of "trunk/trunk/symlink" (yes, unexpectedly 
double "trunk", in my local test the file is called "symlink"). But I think 
it's the same issue. If it will still fail after this one is fixed, I'll 
analyze why.



#1. Create an empty SVN repository.


svnadmin create "$REPOSITORY_PATH"

# 2. Add a file to the repository.


$SVN mkdir $WC_PATH/trunk

echo "content" > $WC_PATH/trunk/file

$SVN add $WC_PATH/trunk/file
$SVN commit -m "A file added." $WC_PATH

# 3. Replace the file with a symlink pointing to nowhere (or to itself --- for 
another kind of error)


rm $WC_PATH/trunk/file

ln -s $NOWHERE $WC_PATH/trunk/file

# By the way: uncomment the following line and comment out the previous one 
for comparison
#echo "link $NOWHERE" > $WC_PATH/trunk/file

# 4. Create diff between repository HEAD and working copy:


echo ""
echo ""
echo "-----------------------------------------"
echo "If you see something like"
echo "-content"
echo "+link $NOWHERE"
echo "And svn:special property set to '*'"
echo "Then consider test passed"
echo "-----------------------------------------"
Dmitry Pavlenko,
TMate Software,
http://subgit.com/ - git-svn bridge

Reply via email to