Add support for symbolic links in TFS
Dave B commented
Yes I know there all sorts of reasons why not but caveat emptor should rule. SourceSafe has it, Clear Case has it. We have 2 particular case where I wish to have linked files 1) Web site that has same pages in a ordinary and secure folder 2) Same base file used to install database scripts in multiple places. I am sure there is a devaious workaround but basically coming from Clear Case we DON'T WANT TO.
Michael Jozwik commented
I was completely surprised to find out that symbolic links were not currently supported in TFS. This would be an excellent feature to add.
With the "primitive" MS Visual Source Safe (VSS) I was able to create links between different projects, thus avoiding duplicated identical items (that never or seldom changed). That way on run-time it is available (on disk) to different projects that shared the same structure and some of the files.
Now, with the much more Intelligent TFS 2012 it seems that the only way is to duplicate these items using branch and then having to remember to merge it every time there is a change.
In order to overcome this limitation, my idea was to create a symbolic link to solve this problem and store it in TFS, but again - this option is also not supported.
I think MS urgently have to either support TFS links or even better, support storage of symbolic links (soft-links) in TFS, which are MS standard for quite many years already.
Many Thanks, Nissim
Martin Ullrich commented
Our company would also benefit from being able to store symbolic links in TFS. Our main problem is multi-platform development (.NET, Android, iOS) with a central source control (TFS). Especially iOS depends heavily on symbolic links when using "framework bundles" (dynamic or static library + header files).
A framework bundle can contain multiple versions and the linking system relies on this structure (arrow means symblic link):
MyFramework -> Versions/Current/MyFramework
Resources -> Versions/Current/Resources
Current -> A
Currently, checking in and checking out these frameworks disrupt the build process, a quick but dirty fix is to run a shell-script that restores these links before build.
Richard Odenweller commented
To me a symbolic link (symlink) allows for a parse point in the TFS namespace to redirect to another parse point within the namespace. The target parse point should allow pointing to "latest" of some earlier version. For instance, take a team that works on AppA and uses an internal SDK. AppA wants to pin the version of the SDK they receive when getting their workspace while the SDK team continues development. After some time, the SDK team says a new version is ready for general consumption. AppA's team then just needs to update the symlink to point to the new version. Of course this could be worked around by modifying workspaces and making sure everyone makes the same changes. An even more useful case is when dealing with third party code. In this case there is no history between versions. You'll end up storing it in TFS as v1.0, v1.5, etc. A symlink could be used to simply get "latest" to a workspace for projects that want latest and still allow for the actual versioned drop to also be addressed.
Danny B. Kjær commented
Dear Visual Studio ALM Team, I am in deep need of this feature too.
In many cases at my company, we have source code, which is used in multiple solutions.
When I change the source code in one solution and check in the changes it is important that the other solutions are updated with these changes.
I have been researching the subject and found that "branching" almost does this, except that it does not automatically merge other branches on check in, and on check out of files, they are not locked in the other branches.
If branching could be extended with this sort of symbolic link functionality, it would be a great solution to the problem.
Danny B. Kjær
Visual Studio ALM Team commented
Thanks for taking the time adding the suggestion. Based on the description above, we do not have enough information.
Could you please clarify what your suggestion is? What is for you a symbolic link?