BUG: Delete svn:special property on symlink; hilarity ensues.
From: Karl Fogel <kfogel_at_red-bean.com>
Date: Thu, 30 Aug 2018 00:22:16 -0500
There are possibly two bugs here, one of them supremely weird. The attached script shows the recipe, with commentary.
(This is all with svn version 1.10.2 (r1835932) as packaged in Debian GNU/Linux for x86_64-pc-linux-gnu.)
The rest of this mail will assume you've run, or at least examined, the reproduction script.
I looked in the bug tracker and https://issues.apache.org/jira/browse/SVN-2622 shows another way to reach the first (and less serious) of the two bugs demonstrated in the attached script. No other tickets seem to be related.
I'll tentatively propose the following new behavior:
When someone does
$ svn propdel svn:special some_version_controlled_symlink
maybe Subversion should not only delete the property, but also replace the symlink with a regular file containing "link <destination_text>" (i.e., the file-content portion of the repository's representation of a symlink). The user should be able to commit at this point and everything would Just Work.
If the person doesn't commit, and instead does
$ svn propset svn:special '*' some_version_controlled_symlink
then it would go back to being a symlink as before (and would appear unmodified).
This implies that if one creates a regular file containing just the text "link <destination_text>", commits it, and then does
$ svn propset svn:special '*' that_file
then the working file should transform into the appropriate symlink automagically, which could then be committed as a symlink (whether a broken link or not doesn't matter).
You may agree or disagree with the above-proposed new behavior -- I'm still a bit tentative about it myself! But I think the current behavior, as demonstrated in the attached script, cannot be right. I haven't filed an issue, though, because I wanted to discuss here first and make sure.
Please keep me CC'd, as I'm not on the mailing list.
This is an archived mail posted to the Subversion Dev mailing list.