3

We are looking for a Version Control System to change our current Source Safe one. We are using it along with Visual Studio. We've failed so far - and the main reason for it is that all the alternatives we see doesn't support one or more features of VSS, especially one that we use widely - file share! What's up with that?

Alternatives like Source Gear claim to support them, but I gotta tell you that they do that very poorly. Not to mention that they are way slower than Source Safe, and have even more bugs.

What alternatives we do have to source version systems that do support file share? Or is there a reason to not use features like this? Please share your experience and support your comments.

EDIT:

By Share File I mean that I can checkout a file from any project that is sharing it, do some changes and then all get the latest version. It is very useful when working with C++ projects, or even C# Web Projects. I want to be able to share a file without the need to make another library for that.

Cœur
  • 37,241
  • 25
  • 195
  • 267
Ivan Zlatanov
  • 5,146
  • 3
  • 29
  • 45
  • 3
    It would help if you would describe what the "file share" does, and why you want it. I'm pleased to say it's been a long time since I've had to work with VSS... it's clearly not a feature I've missed :) – Jon Skeet Sep 29 '09 at 12:31
  • What do you mean file share? Please elaborate. All SCM systems let you share files. In fact I recall VSS as being on that enforces exclusive locks. – Preet Sangha Sep 29 '09 at 12:33
  • I think he's talking about this feature: http://msdn.microsoft.com/en-us/library/y90e01b4%28VS.80%29.aspx – fretje Sep 29 '09 at 12:37
  • Basically: You can 'share' a codefile amongst different projects, so you only have to change it in one place, and it gets changed in the other projects as well (when you 'get a latest'). – fretje Sep 29 '09 at 12:38
  • 4
    Just to add: this is a very dangerous feature (IMHO) as a check-in on one place of a shared file can break the build of the other projects where the file is shared... – fretje Sep 29 '09 at 12:40
  • I agree with fretje, doing it could be very dangerous. Though I did link a post on how to do it in TFS if it is a must have for you. – pete blair Sep 29 '09 at 12:45
  • To John Skeet - I've updated my notes. – Ivan Zlatanov Sep 29 '09 at 12:52

5 Answers5

5

From MSDN:

Sharing Files or Projects

Visual SourceSafe has a Share command that allows sharing of files or projects. For use of the command, see How to: Share an Item.

When you request file sharing, Visual SourceSafe creates a shared link between the versions of the file in the projects that share the file. When you check in the file to one of the projects, your changes are automatically checked in to all the sharing projects. All the projects that share a specific file are listed in the Links tab for the file.

When you share a Visual SourceSafe project, you create a completely new duplicate project under the current project. All the files in the new project are shared with the corresponding file copies in the shared project, and changes in one are reflected in the other during check-ins to the Visual SourceSafe database.

Other tools do have similar concepts, though not always with the same name or exactly the same semantics. Off the top of my head:

  • Subversion externals
  • MKS SI (shudder) calls them shared sub-projects

I tend to avoid them because it indicates there are some other issues with my project. If the resources are needed across many projects, I package them as a library and set my other projects to depend upon that artifact (using a dependency management tool such as Maven or Ivy to manage the dependencies)

Community
  • 1
  • 1
Rich Seller
  • 83,208
  • 23
  • 172
  • 177
  • But not exactly a file share, isn't it? Sounds like virtual file directory in the repository? – Ivan Zlatanov Sep 29 '09 at 12:59
  • @Ivan I did say the semantics are not always exactly the same, the end result is that the files are shared into a project though, and this is often a bad thing in my experience – Rich Seller Sep 29 '09 at 13:24
3

In Subversion, you can share a whole folder (and its subfolders of course) with the svn:external property.

And since version 1.6 you can also share files.

In Git, those are called "submodules" - not sure if they work for single files though.

Stefan
  • 43,293
  • 10
  • 75
  • 117
1

This post http://blogs.msdn.com/ericlee/archive/2006/07/20/sharing-files-in-team-foundation-server.aspx shows how you can accomplish the same thing with Visual Studio and TFS.

pete blair
  • 1,607
  • 1
  • 17
  • 14
0

In StarTeam you can share files across projects.

Henrik
  • 23,186
  • 6
  • 42
  • 92
0

I apologize if this is not really addressing the original question but depending on your will to "change mindset" for which version control system to use I would strongly suggest moving to a distributed one such as Mercurial or Git. There are plug-ins for Windows Explorer and Visual Studio for both.

As to specific features such as VSS-style file sharing I suggest setting up a Continous Integration environment like TeamCity and configure it appropriately.

It's a steep curve at first but awesome and time-efficient once your staff and servers know what to do.

Toft
  • 167
  • 2
  • 8