What is the best source control product for Visual Studio development? - visual-studio

I work in a Visual Studio/.NET shop which is still using VSS 2005 for source control. We are looking to upgrade to VS Team Foundation Server and use it's source control system, but I'm curious if that's really the best option. The creators of StackOverflow use Subversion but comment that it's a pain to merge code forks back into the main product (discussed in podcast #52). Joel mentioned that Mercurial is used at Fog Creek. Knowing that Joel is something of a software snob and he chose Mercurial over anything from Microsoft, I thought I would pose the quesiton to the StackOverflow audience: which source control product is the best for Visual Studio developers?

We switched from VSS to SVN, using only TortoiseSVN for a long time. Recently we began using the VisualSVN plugin for VS (unfortunately not free).
I must say, after getting over the initial pain of not having source control integration in VS, I really liked the level of control I had over all my source control operations. I highly recommend this route.
If you go with Subversion and must have source control integration, I highly recommend VisualSVN.
If you want to give SVN a try, you can install the very free (and very easy to setup) VisaulSVN Server product and have SVN running in just a few minutes on a Windows server.

My recommendation is for SourceGear Vault. It's close enough to Visual Source(un)Safe to feel "comfortable" with right away, it's rock-solid (built on SQL Server which solves your backup hassles, too), it's very reliable, has great support for branching and merging - all around good stuff.
It's free for teams up to 2 devs and reasonably priced for larger teams - much less $$$ than Team System (also it's only a Source Control, of course - not a whole team dev system). We use it in conjunction with Fogbugz bug and issue tracker and that combo gives up all the bang we need for much less buck.
Highly recommended.
Marc

I've worked with VSS, CVS, SVN, and TFS.
VSS: Skip it. I've lost too many changes that literally have just vanished.
CVS: Great solution. Has one feature SVN is missing with a visual of the merging.
SVN: Great solution. You can get add-ins to integrate if you need them. I have only one complaint: merging between branches could be better. But, the product is bomber and very affordable.
TFS: Where I was working, they didn't do much with it. They only used the source control. I was excited to use it, especially the shelving, but I couldn't merge the changes to a branch. I would say it's pretty much what VSS should be. Sometimes MS tries too hard to do things for you that you just have to do for yourself. Also, the UI isn't intuitive.
So, I'd stick with SVN. Though, the new open source standard seems to be GIT (can't comment on it though).

It seems that you want to have VS integration but I question the reason for that.
A good source control product has many more features than just VS integration.
You can get subversion to integrate with VS ( Ankh svn and visualsvn ) and I've also used vault which is stable and integrated with VS but I use source control for other things other than just vs work.
So I prefer to work with source control out of the product. You should try it.

The source control is only part of VS Team Foundation Server, which is a complete project management system.
I used both SVN and TFS, and both of them are more stable, robust than VSS.

Coming from VSS any system would be an improvement;-)
Perforce is probably the best mainstream tool I have used. Rational Apex was even better, but unless you're writing Ada that information is of no use to you.
ClearCase is pretty powerful, but I found it pretty hard to use (admittedly I only used it for a couple of weeks, so I possibly didn't give it a fair trial).
For the cost (free) SVN is excellent. The Tortoise shell add-in makes it very easy to use in Windows.
EDIT.
I see I just got an upvote from this ancient answer :-) This caused me to revisit and I find I need to update my answer.
I now use TFS at work and I really like it, it's a big beast and not appropriate for home projects perhaps, but it's a commercial tool and worth a look if you really value VS integration. I'm sure Perforce and Clear Case are still great products too, but I am out of touch with those now.
For smaller projects or personal work at home I now use Git. I don't particularly care about VS integration though, I just use it from the command line, but at home I switch between several different environments so VS integration is not a priority.

I've had much luck with Ankhsvn. I'm able to use it interchangeably with TortoiseSVN and it does a great job of tightly integrating itself with Visual Studio and the project layout.
http://ankhsvn.open.collab.net/

We use plasticscm at work, it's less known, but very well integrated into VS, you have all the options and graphs inside vs itself.

+1 to forget about VS integration.
Many of the best source control tools have great command line interfaces. I've been happily using Git for VS projects for almost a year. The downside is that Git requires a bash shell and it is not very Windows friendly. I'm willing to pay the 'cost' of not having VS integration in order to get all the advanced features that make life really easier.
I would suggest giving Mercurial a try.
I have to add that this advice is more suited for a personal choice of source control. If you are looking for a source control standard for a big company with lots of developers, I would go with a more 'standard' choice like Team System, SVN or Vault.

SVN is better and faster than VSS. We switched from VSS to SVN 2 years ago because VSS was on servers in New York and the operations on VSS seemed too slow for developers in India. SVN is faster because it was meant for WAN as opposed to VSS which is for LAN. Refer this link
You can use windows explorer to perform SVN operations or you can use AnkhSVN to be able to perform SVN operations from VS.Net IDE.
You can prefer locking files before editing if you find merging them later to be a hazzle. But IMHO merging is really not tht painful, because you get to see the clear distinction between your and your collegues code before you go ahead with the merge.
Advantages of SVN can be found here on stack overflow.

I prefer TFSVC as it is integrated with all the other services in Team Foundation Server. But it depends on what you want to do. If you want an ALM solution, this is the way to go. I have the ability to set check in policies, integrated builds, and associate with work items. I like the way it does branching and merging. I can have my testers submit bug work items associated with the code in TFSVC. I have traceability to see who is checking in and breaking the builds. I can run reports and get good visibility into the project. Everything works together.
I hope this helps.
John

We use vault, Its good. But use Team System if you can b/c it's from Microsoft. They know how to deal with their own problems/bugs/wayofthinking.

My vote is for TFS. VSS is more than a pain. I have used SVN outside of VS and I would have to see it work along with it.
Working with source control out of the product? Sounds like more work than necessary. Just because it integrates with VS doesn't mean you can't use it for other things. If I am in VS I want to stay in there and not have to go over to another client application to get my source. I like that VS can check out directly.

It depends are you looking free or commercial version control system.
Subversion
Using Subversion you have great, free, open-source ankhsvn plugin which integration Subversion with Visual Studio. Integration is really fantastic!
Mercurial
If you need distributed version control choose Mercurial with VisualHG plugin. Mercurial, in contract to the Git, was developed with native Windows support and also Visual Studio integration is much better.
PlasticSCM
The best Visual Studio integration I have ever seen had PlasticSCM which is the simple consequence that PlasticSCM is windows-background version control system. It works really well.

I can't believe no-one has mentioned Assembla! It's free for unlimited repositories, unlimited users and 1GB of space!
www.assembla.com

Perhaps you should ask yourself what scm is best for your project.
I like svn cause its free and kind of standard(perhaps a little bit bold to say).

I use both Vault and TFS at work. We used VSS and others had issues with it, so the lead at the time decided to switch to Vault. I have had no issues with Vault, but others had some with merge and branch.
I started using TFS Trial and like it as much as Vault. I do not use many of the extras, such as the bug and work item tracking just yet, but plan to.
Since you did not mention cost and the comapny is already looking at moving to TFS, I would think that will satisfy your need of getting a product better then VSS and allow you to grow into it in the future.

I've used Visual Source Safe (2005) and I wouldn't recommend it. Being a file file based solution leads to the risk of your repository being more easily corrupted. I've used Source Off-Site a SourceGear product that enables remote VSS check-in and checkout over the internet and it worked well, but still had the disadvantage that it was built on top of VSS and the flat file architecture.
SourceGear also make Vault which is my preferred solution. It's a SQL Server based repository so it's not subject to issues with the Windows File System. Restores and backups can be configured just like any other SQL Server database and you can restore to a point in time, not just to your last backup date.
I've also used Source Anywhere (version 2.2) and I found it lacking in features compared to VSS and Vault. But it was a SQL Server solution, which made the backups more reliable.
I'm interested in trying Subversion and if there was a version of Subversion that used SQL Server as the repository I think it would be a reasonable solution. If you're running on another operating system, Subversion is probably your best choice, but if you're running on Windows Server I would recommend a SQL Server solution.

Related

SVN workflow/lifecycle using VisualSVN server, TortoiseSVN, Ankhsvn plugin

I have just started getting svn to my life.
I was told that a good start is to go the triplet "VisualSVN server, TortoiseSVN, Ankhsvn plugin" for VS development.
After spending some time with them i am still at confusion over the workflow.
I can do all my work from within Visual Studio and VisualSVN server. So why do i need a svn client like Tortoisesvn? And if i have to use them together what is the proper use for each of them?
I have solutions that rely on other projects "layers" (DAL,Business layer). I reference these projects directly to my UI solution. Do i have to change that strategy to accommodate for better svn management?
why do i need a svn client like Tortoisesvn?
If you don't know how it works under the hood, you can't identify, diagnose and describe problem smartly. It's just more reliable way to have knowledge about processes at the lower level, than "black-boxed" VS+Ankhsvn ("project","press button","select in menu"), i.e about Subversion-specific aspects (working copy, properties, basic operations).
In order to have this possibilities, you have to have any standalone SVN-client, TortoiseSVN is just good choice for it's power and GUI for CLI-powerless Windows users
Do i have to change that strategy to accommodate for better svn management?
If you know, how these references reflected at ordinary file-level, you can have own answer (I have not any VS experience and can't predict it)

Select an effective revision control

We are a company, working on small and some huge project. Sometimes on one project are more developers 5, 10, 20 etc.
We are searching for an effective revision control system with best optional properties:
Performance issues – one file size, complex directory structure
Scalability – support for 5, 10, 25 developers, 10, 50, 200 projects
Merging of branches
Revisioning and marking of code changes
Statistics and report for developers, leaders, vendors, leader development, customer etc.
Supporting the development of various technologies- .NET, JAVA, PHP, Oracle, Delhpi, ABAP / SAP.
At this moment we are deciding between SVN, VSS, Rational rose, ClearCase and JIRA. Does some of this solutions support bug tracing and knowledge base repository?
Maybe someone has experiences on this topic and could give proposals.
Thanks in advance.
Best regards.
I have worked on SVN, VSS and clearcase in various companies which I have worked with. I have always felt SVN is the best among these. However there are some better distributed version control tools(like mercurial, git, bazaar) available in the these days which you might want to consider too.
Here are my views primaryly on SVN/clearcase:
Performance issues
SVN: I have seen that subversion can handle things up to a single file size of 2GB. Complex directory structure does not matter for subversion as it is
Clearcase: I have seen performance/network problems in clearcase in handling huge files/repositories. In my case it was a NFS mount in my windows system and it had made things terribly slow while perfoming builds.
Scalability
Both SVN & clearase have good scalability options. However svn has pretty good community and support over the internet which lacks for clearcase. However in case of clearcase you will have a paid support and quick resolution for any scalability problems.
Merging of branches
Clearcase is a clear winner in this case. Clearcase for a while has a pretty good merge capablities. SVN is still improving on this front, but there has been a major contribution to the svn merge feature in the recent past.
Revisioning and marking of code changes
IMO, its pretty much the same between clearase and svn. But the conventions are a little different.
Statistics and report
clearcase has good reporting capabilities, better than svn. However I have felt clearcase is a over killer in this case. SVN has a lot of simple reporting tools(like glassfish) which are capable of providing neat reports.
Supporting the development of various technologies
I have worked on most of the technologies above but I believe both the tools have decent support for all possible environment( like Visual Studio, eclipse, etc)
BTW, rational rose is a UML tool, not related to versioning. JIRA is a bug tracking tool, it integrates well with SVN. I would recommend you look at trac for integrating with svn.
Hope the above helps
We have very good experience with SVN. It has good control on the codebase, and it is easy to see what has happened on the files.
It also has good Visual Studio interation via 3rd party plugins. We use VisualSVN, which is not free but is very good.
VSS is not good. It is very easy to mess up things.
ClearCase is quite good, but licenses are very expensive. It has generally very strict control on the code base, but should something go wrong it is very difficult to fix it.
Whatever it takes, dont use VSS. Never.
As far as I know, Jira is is not a version control system, but a bug / issue tracking system (and a very good one).
As said in other answers, SVN is a very good solution, used by a lot of projects with success. Newer distributed solutions include Git, Mercurial (Hg), Bzr, ... but I would not use a distributed version control system in a non distributed team. There is a real initial cost to undertand DVCS.
And did I already said : dont use VSS, under no circonstance.
The list above contains mostly old-school revision control. I would avoid VSS at all costs as it locks files exlusivly - only one user can change or even check-out a file at a time.
If you still want single localized repository I would recommend SVN. it's easy to use and has good Visual Studio interation via 3rd party tools.
If you need a fully integrated solution for Microsoft technology (bug tracking, source control, continuous integration etc.) I recommend using TFS.
Check out mercurial/GIT for a distrubutes source control if you plan on a lot of branching/merging.
Clearcase is good only if you know how to use it, and it is very expensive
TFS doesn't perform well. It's slow as hell.
SVN doesn't do good branching. As a side note, all major OSS projects abandoned it already towards Git or Mercurial
Avoid VSS as hell
I'd definitely go for Jira + Plastic SCM
Hg and Git are EXCELLENT options but you need to be a command lover most of the times

Using Source Control [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I am a very new programmer, I have made a couple basic applications, however I was told that it would be good to get used to using "source control" at the near the beginning of learning so I get accustomed to it. I have gathered that source control is what is used to manage programs with multiple programmers and that it is somehow connected directly to my projects in Visual studio. I also believe there are two primary versions, "TFS" and "SVN". Past that I am fairly lost, I am not sure what I need to actually implement this, specifically how I would do so on my personal projects. Also I don't know what program(s) are needed.
Should I use TFS or SVN?
What program(s) do I need to install?
How do I implement them in Visual Studio?
Is it a good habit to get into for my personal programming or would you disagree?
Please go ahead and open up wikipedia, you have a bit of reading to do:
Revision control
Subversion
With that reading done, you should have a better understand of what source control is. As a programmer, I'm pretty sure you'll find it makes sense to "save" what you're working on, making changes incrementally and being able to go back to those changes.
In a nutshell, revision control is the ability to go back in time, so that you can read code you have written at that moment.
Ok first there are many source control products other than the two you have mentioned but I would get used to SVN first.
TFS is expensive and tied into the Microsoft stack.
I'd start with reading this:
http://svnbook.red-bean.com/
Specifically the chapter on fundamental concepts
Yes this book is tied in to svn but it covers the basics too.
When you have read that download TortoiseSVN. This is an svn client that hooks into your windows shell. Only when you are comfortable with using this would I then move on to an integrated svn client. (I actually don't use one) AknhSVN is free.
The source control system is separate from your IDE. You can use it from the command line, or from a graphical client as well as from your IDE.
What you should know about a source control system is this:
you save your increment changes to the SCM (source code management), and each save receives an unique id/revision
you can retrieve any revision on any time, therefore changes are never lost
this gives you the liberty to delete unused code, debug info, or to refactor existing functionalities
and most importantly, it gives these functionalities to all members of a team, so that the team can work at the same time on the same code base, from their own development machines
You could start with svn, as it's very popular (especially for open source projects) with widespread support. You can gen the command line client from here:
http://subversion.tigris.org/
This is a nice graphical interface (windows):
http://tortoisesvn.net/
This is a free book to help you start with svn:
http://svnbook.red-bean.com/
If you need to setup a server on your development machine, this tutorial should help:
http://blogs.vertigosoftware.com/teamsystem/archive/2006/01/16/Setting_up_a_Subversion_Server_under_Windows.aspx
check out Git and think about hosting your projects on https://github.com/ - also, check out linus talk on git: http://www.youtube.com/watch?v=4XpnKHJAok8
there are many different source control providers including TFS, Subversion (SVN), Perforce, CVS and Visual Source Safe to name but a few. It is also one of those areas that people tend to get semi-religous on, so I'll tread carefully!
I think most people would agree that Visual Source Safe is not the way to. It is fairly simple as a source control system but would do little to teach you about source control in general. TFS, SVN and Perforce tend to get pretty good feedback from their users.
Out of these, SVN is the only one that is free, so if you are planning to do this as a learning exercise, I'd be inclined to start there [actually I believe you can get a free 2 user license for Perforce too, but I'm not 100% sure on that). You can learn all the basics with this, as well as more advanced areas such as branching and merging.
If you do give it a go, I recommend you download SVN itself, and the TortoiseSVN client for Windows Explorer (I'm assuming you are on Windows here as you mention Visual Studio). You may also want to look at source control integration into Visual Studio, in which case I use VisualSVN (there is a free trial), but there is another popular one whose name eludes me (someone will hopefully add it as a comment).
Additionally there is a great, free, e-book for SVN, available (here)
Overall - to answer your specific questions:
Should I use TFS or SVN?
SVN
What program(s) do I need to install?
SVN itself (the server) and TortoiseSVN
How do I implement them in Visual
Studio?
Use VisualSVN or another SVN for Visual Studio client. You don't need this to learn source control, but it is well worth trying it out from in the IDE.
Is it a good habit to get into for my
personal programming or would you
disagree?
Yes, definitely!
Good luck, and hope you enjoy getting into source control.
Of the source control systems I've used Subversion with Tortoise is my preferred choice (I've used VSS, Subversion (SVN) and TFS).
Subversion has some excellent documentation on how it works and also on the general concepts of version control so that you actually understand what you are doind and why.
If you want to set up Subversion on a Windows stack then by far the easiest way is with VisualSVN which is free. The client side plug in to Visual Studio, however, is not free. But there are many free alternatives such as Tortoise.
You should not usually host your own subversion/git/whatever server. It is time consuming and error prone. For small projects subversion and git hosting can be found for free, and give you offsite backup, the ability to work from anywhere and the ability to add offsite programmers to a project with ease. If your needs grow, you can pay a small monthly fee.
You can use a google search to find candidates. The one I use is http://unfuddle.com.
I found this article to be very clear. (It recommends SVN).

Getting into Source Control

So I've decided it's probably best if I get some Source Control solution going to keep my hard work safe, and to help eradicate bugs between versions.
I'm familiar with SVN as far as checking stuff out, but I have NFI about the committing side of things.
What is a good Source Control solution, keeping in mind that I develop in Visual Studio on Windows? Should I get a hosted solution, or host it myself on my own server (running Windows Server '03)
I'd suggest using git and get Git Extensions for better Windows integration.
If you're just getting started and are looking to self-host, I suggest VisualSVN. It's a lightweight, extremely easy-to-use SVN server, and free. I've used it for small projects at work and home. It includes security, with folder- and file-level ACLs based on local or Windows users.
You may decide later to move to more powerful servers or an externally-hosted solution; you can just dump the repository from VisualSVN with the standard svnadmin tools and load it into something else very easily.
For the client side of things, I use TortoiseSVN and love it, and I understand Ankh has gotten better since last I used it.
Use git.
One workflow that git does really well:
Have an idea for some feature you want to implement
Create a new branch for that feature
Write code, commit like crazy
When you're done implementing, squeeze all the crazy commits into one big patch
Commit that patch against your main branch
Delete the for-that-one-feature branch.
This is wonderful to have. You can have multiple parallel branches for this, and it's really easy.
As an additional feature, if your project goes public and you use git, people who check out your code will have an easy time making their own changes to (their copy of) your code, version-controlled and all, and it'll easy to track upstream at the same time.
If not git, try some other distributed source control system and see if it does good branching and local commits as well.
We are a small team (seven people) we have been using a hosted solution (hosted-projects.com) for more than one year. It's cheap and has worked very well for us. We use tortoiseSVN for the clients.
The main advantages of a hosted solution are:
no need to worry about server setup and maintenance
remote hosting means we have a complete and up to date backup of our code on a remote location
very fast
I recently did a team development thing and we just hosted subversion on one of our workstations and it worked... passably. We used visual svn on the server, and tortoiseSVN on all of the clients (and I occasionally connected my macbook using Versions, SVNX, or the command line). Merging is the really hard part... we had a lot of trouble with that (resolved, once again, with some command line skill). I also set up my own subversion server on my linux workstation for personal use, which worked better (merges were smoother, only one developer). Overall, it has been fairly easy and merging is probably the largest problem you'll face.
If your new to source code then I would recommend you read Eric Sink's series on Source Control. It doesn't really cover distributed source control but it's still a very good primer.
I personally use Perforce. They allow up to two uses for free for home and small business use. It is a little expensive compared to others but there is reasons why companies like Google and Symantec use it. It has ok to good Visual Studio support.
I really like hosted solution because often comes with other tools like trac to manage your project timeline and bugs control.
I recommend projectlocker or codespaces

Visual Sourcesafe server for practice

I there a Visual SourceSafe server running somewhere that I can connect to for practice? I have a couple of things that I would like to test before buying the VSS server but I don't want to download the whole app for testing.
Best regards
short answer: save your time and don't buy. Use SVN, git or if you are all for an ms solution then use Team Foundation Server.
There are lots of people who love to hate on VSS, and honestly I can't blame them (much). VSS has a reputation for being unstable, corruptable, and idiosyncratic. This reputation, in some cases, is well deserved, in others it's a case of improper management, improper administration, or improper too choice for the job.
VSS is not the tool for everyone, but it is an adequate tool for a large number of people, and it's got very good integration with Visual Studio.
VSS these days is pretty stable, but you don't want to use it over an unstable network (unless you're using the HTTP based server approach) because it can corrupt files. It should only use the file-based version control inside a reliable on-site network. If you're going to do any off-site ore distributed development, then you need to use the HTTP model, or choose a different product.
VSS has some quirks. Branching doesn't work the way most people want it to. This is not necessarily VSS's fault, as it was designed to operate a little different from other Version Control of the time (remember, it's 20 year old product). People that choose it, expecting it to work differently than it's designed to have chosen the wrong tool for the job.
I've successfully used VSS in monster sized repositories. One of the keys is that you need to run the analysis and fix tools on it regularly to head off potential problems before they become corrupting problems.
You also don't want to use VSS in any situation where you need security, because VSS's security is application based. Being that you need direct file read/write access, anyone can go into the files and fiddle with them by hand if they want. Again, this is different if you're using the HTTP server component. (For what it's worth, this is similar to many kinds of version control of that era, such as RCS and SCCS, so it's not like this was unheard of)
Now, having said all this, to answer your question, if you've got download access to VSS (such as through MSDN), just download it.. it's not that big. It's only 100MB.
If you have to implement a source control system. Start with SVN or Git, hands down. Take a look at VisualSvn server with AnkhSvn and TortoiseSvn for client tools. They are all FREE.
Try Accurev (www.accurev.com) or Perforce (www.perforce.com) or PlasticSCM (www.plasticscm.com)

Resources