Issue with Symlinks (relative made absolute)

11 views
Skip to first unread message

Vincent Belaïche

unread,
Feb 16, 2026, 6:16:18 AM (2 days ago) Feb 16
to TortoiseSVN
* What steps led to the issue:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MSWindows 10,
Tortoise SVN
Activate developper mode on MSWindows
with gpedit.msc, give the use the right to create symlinks
Reboot
Open an MSDos console
Run the reproduction batch script given in the sequel

* The expected outcome:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expeted outcome is that symlinks that are relative shall remain relative symlinks when added and checked it
* The actual outcome:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Here is the output of the batch script
============================
This script will create a directory svn-ecm under the current directory. Proceed (Y/N) ? y
Cleanup existing .\svn-ecm (Y/N) ? y
svn, version 1.14.5 (r1922182)
   compiled Nov 30 2024, 08:20:48 on x86-microsoft-windows

Copyright (C) 2024 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository access (RA) modules are available:

* ra_svn : Module for accessing a repository using the svn network protocol.
  - with Cyrus SASL authentication
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - using serf 1.3.10 (compiled with 1.3.10)
  - handles 'http' scheme
  - handles 'https' scheme

The following authentication credential caches are available:

* Wincrypt cache in C:\Users\myusername\AppData\Roaming\Subversion

 ======================================================================
Adding         svn-proj-init\toto.txt
Committing transaction...
Committed revision 1.
A    svn-proj-work-area\toto.txt
Checked out revision 1.
Lien symbolique créé pour titi.txt <<===>> toto.txt
Lien symbolique créé pour tutu.txt <<===>> .\toto.txt
A         titi.txt
A         tutu.txt
Adding         titi.txt
Adding         tutu.txt
Transmitting file data ..done
Committing transaction...
Committed revision 2.
Updating '.':
At revision 2.
 ======================================================================
------------------------------------------------------------------------
r2 | myusername | 2026-02-15 17:29:03 +0100 (dim., 15 févr. 2026) | 1 line

Add symlinks
------------------------------------------------------------------------
 ======================================================================
Index: titi.txt
===================================================================
--- titi.txt (nonexistent)
+++ titi.txt (revision 2)
@@ -0,0 +1 @@
+link C:/the/current/directory/svn-ecm/svn-proj-work-area/toto.txt
\ No newline at end of file

Property changes on: titi.txt
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tutu.txt
===================================================================
--- tutu.txt (nonexistent)
+++ tutu.txt (revision 2)
@@ -0,0 +1 @@
+link C:/the/current/directory/svn-ecm/svn-proj-work-area/toto.txt
\ No newline at end of file

Property changes on: tutu.txt
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property

============================
* Subversion client version: …
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
See script output (1.14.5 (r1922182))
* Subversion server version: …
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

N/A using a local report on an external NTFS hard drive

* If you built Subversion yourself, compiler and configuration options used: …
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

N/A, installed witth the download 64bit installer
* Any customizations which could be relevant:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

N/A
* Your operating system:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Édition Windows 10 Professionnel
Version 22H2
Installé le ‎25/‎02/‎2025
Build du système d’exploitation 19045.6466
* Any similar bugs already in the issue tracker: …
I don't know, I could not find the issue tracker
* Any other details you believe are relevant: …
* Reproduction script:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo off

:check_agreement
set /P "answer=This script will create a directory svn-ecm under the current directory. Proceed (Y/N) ? "

if "%answer%"=="N" (goto :EOF)
if "%answer%"=="n" (goto :EOF)
if "%answer%"=="Y" (goto :agreed)
if "%answer%"=="y" (goto :agreed)
echo Invalid answer ^(%answer%^), expect Y or N
goto :check_agreement
:agreed
if NOT EXIST .\svn-ecm (goto :proceed)
:check_agreement0
set /P "answer=Cleanup existing .\svn-ecm (Y/N) ? "
if "%answer%"=="N" (goto :EOF)
if "%answer%"=="n" (goto :EOF)
if "%answer%"=="Y" (goto :agreed0)
if "%answer%"=="y" (goto :agreed0)
echo Invalid answer ^(%answer%^), expect Y or N
goto :check_agreement0
:agreed0
rmdir /S /Q .\svn-ecm
:proceed
svn --version
echo. ======================================================================
mkdir .\svn-ecm
cd .\svn-ecm
mkdir .\svn-root
set "root_path=%CD%\svn-root"
set "root_path=%root_path:\=/%"
svnadmin create "%root_path%"
mkdir .\svn-proj-init
echo. >  .\svn-proj-init\toto.txt
svn import -m "Initial import"  .\svn-proj-init "file:///%root_path%/toto/trunk"
svn co "file:///%root_path%/toto/trunk" .\svn-proj-work-area
cd .\svn-proj-work-area
mklink titi.txt toto.txt
mklink tutu.txt .\toto.txt
svn add titi.txt
svn add tutu.txt
svn ci -m "Add symlinks" titi.txt tutu.txt
svn up .
echo. ======================================================================
svn log -l 1 -c 2
echo. ======================================================================
svn diff -c 2
cd ..\..
:: End of File
* End of bug report
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 Thank you for providing Tortoise SVN !

   Vincent Belaïche

Stefan

unread,
Feb 16, 2026, 1:16:09 PM (2 days ago) Feb 16
to TortoiseSVN
Sorry, but Subversion does not support symlinks on Windows.
However, you might be able to use externals instead:

Vincent Belaïche

unread,
Feb 17, 2026, 6:52:03 AM (yesterday) Feb 17
to TortoiseSVN
Dear Stefan,
Thank you for your reply. Actually externals won't help, as I needed symlinks inside the same project.
I guess that probably this is not the right forum to raise this question, and this has more to do with the core SVN project.
BR,
   Vincent.

PS : FYI my use of symlinks is that I have written a LaTeX package (makegobbler), the related project contains a test bench and I have several tests test-A test-B and test-C corresponding to several ways to produce the same output. I am using a LaTeX reference file tref-A to generate the expected output of test-A in order to test that the package works properly, and for test-B and test-C, as exactly the same output is expected, the tref-B and tref-C references are just symlinks on tref-A. Have a look ? : svn checkout https://svn.gnu.org.ua/sources/latex-makegobbler/trunk ./makegobbler

Daniel Sahlberg

unread,
Feb 17, 2026, 5:12:47 PM (15 hours ago) Feb 17
to TortoiseSVN
Dear Vincent,

I believe you would actually be able to do a "file external", see the reference to the SVN book already provided by Stefan. You might want to pin this to a specific revision and/or make sure to update the URL if you want to create a branch in the repository.

That said, proper symlink support on Windows is very much a feature that would improve Subversion on Windows. I know it require specific permissions and Git already has some support for it but I have not looked into the details. If this is something you would like to look into, d...@subversion.apache.org is the proper place to bring it up.

Kind regards,
Daniel
Reply all
Reply to author
Forward
0 new messages