[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: Julian Foad <julianfoad_at_apache.org>
Date: Mon, 16 Jul 2018 11:22:01 +0100

Thanks for the report. It would be great if you could file an issue and write a test for this problem.

- Julian

Dmitry Pavlenko wrote on 2018-07-11:
> 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 "-----------------------------------------"
Received on 2018-07-16 12:22:11 CEST

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