NTFS Symbolic Links in Version Control Systems

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:

  1. Migrate to Perforce 🙂
  2. Try to get rid of the symbolic link requirements (e.g. refactoring code or build scripts)
  3. 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.
  4. 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.

Advertisements

2 thoughts on “NTFS Symbolic Links in Version Control Systems

  1. It’s really a great and helpful piece of information. I am happy that you shared this helpful
    information with us. Please keep us informed like this. Thank you for sharing.

  2. Pingback: ClearCase Windows Quick Tip: Find all symbolic links | Adventures in SCM

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s