[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: "svn diff" doesn't work correctly if a file is replaced with a symlink locally

From: Dmitry Pavlenko <pavlenko_at_tmatesoft.com>
Date: Wed, 11 Jul 2018 16:13:06 +0200

Hello.
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
is.

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.

#!/bin/sh

SVN=svn

#1. Create an empty SVN repository.

REPOSITORY_PATH="$PWD/svn.repo"

svnadmin create "$REPOSITORY_PATH"

# 2. Add a file to the repository.

WC_PATH="/tmp/wc"
REPOSITORY_URL="file://$REPOSITORY_PATH"

$SVN co $REPOSITORY_URL $WC_PATH
$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)

NOWHERE="changed/path"
#NOWHERE="file"

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:

$SVN diff --git $REPOSITORY_URL $WC_PATH

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
Received on 2018-07-11 16:13:28 CEST

This is an archived mail posted to the Subversion Dev mailing list.