Symlinks corrupted when SVN-internal representation also exists as blob
SVN internally stores the destination of a symbolic link as a text file that contains the line link <destination>
.
If such a text file also exists as a regular file in the Subversion repository, then reposurgeon will create corresponding symlinks incorrectly with a destination link <destination>
(instead of <destination>
).
Example:
$ ls -l demo-repo-svn/
total 4
-rw-r--r-- 1 user users 8 Oct 9 15:00 bar # contains "link foo"
lrwxrwxrwx 1 user users 3 Oct 9 15:00 link_to_foo -> foo
$ ls -l demo-repo-git-migrated/
total 4
-rw-r--r-- 1 user users 8 Oct 9 15:00 bar
lrwxrwxrwx 1 user users 8 Oct 9 15:00 link_to_foo -> 'link foo' # WRONG
It is sufficient if such an "evil" file exists anywhere in the imported repository, neither branch nor path matters.
A sample repository for reproducing the problem is attached as demo-repo.dump.
Using reposurgeon version 4.19.