NTFS support for Symbolic Links was added when Windows Vista was released (2007). 7 years later, and the only major VCS which added ‘native’ support for source-controlling NTFS symbolic links is Perforce.
Most multi-platform VCS (svn, git, etc.) support UNIX-style symbolic links. Why is it so hard to add support for NTFS ones?
Even more confusing is why Microsoft’s own TFS doesn’t support NTFS symbolic links?
Why would I want to use symbolic links, you ask? There are many use cases for that – I’ll provide examples in a separate post, if people would be interested.
So, what do you do if your developers rely on symbolic links in their workspace? To be honest, not much. The alternatives are:
- Migrate to Perforce 🙂
- Try to get rid of the symbolic link requirements (e.g. refactoring code or build scripts)
- Develop a script which automatically re-creates all the required symbolic link in the given workspace, based on a version-controlled configuration file. When possible, configure the script to automatically trigger when a user creates or switches workspace.
- Use even stranger workarounds (such as saving the links as special text files, and write triggers that converts them to and from symbolic links).
Hopefully more tools will add support for this feature. As far as I know only Git is planned to include NTFS symbolic link support in the future.