What are the differences between TFS, SVN and GIT? [closed] - visual-studio

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I use Microsoft Visual SourceSafe for version control. I would like to change this approach and use newer software for this work. What are the differences between these three applications? Which one is better?
Are these solutions integrated with visual studio?

TFS is an Application Life-cycle Management solution, SVN and Git are source control only.
TFS does source control as well as issue tracking, document management, reporting, continuous integration, virtual labs for testing etc.
TFS's Source Control & SVN are centralized source control, Git is distributed.
There have been many discussion on Stackoverflow about TFS vs SVN.
TFS is the most tightly integrated into Visual Studio.
SVN has a few third party options for integrating into Visual Studio and they are quite nice, but not as tightly integrated as TFS.
Git has GitExtensions which allows for a low level of integration within Visual Studio.

Better is a big discussion, but along the same lines you have to factor in cost.
SVN is free, where as TFS isn't. However; if you have your Visual Studio through an MSDN subscription and this is of high enough level, then you will get TFS2010 for free through your MSDN subscription downloads when released. This may be a factor which tips the balance.
As for the integration with Visual Studio, you can't beat Team Explorer for TFS. However, I have used Anhk with SVN and that works well too. I think the rest of this has been said :-)
Hope this helps.

The question is rather old, however in case someone stumbles on it: since January 2013, git has been integrated into TFS (announcement: http://www.visualstudio.com/en-us/news/2013-jan-30-vso#git support). What it means is that the team can now use git as the source control tool (instead of, but not alongside, the "built-in" TFS version control system) while still using the rest of TFS for activities such as continuous integration, issues tracking, and so on.
Original discussion on MSDN: http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/30/getting-started-with-git-in-visual-studio-and-team-foundation-service.aspx
StackOverflow has a large set of relevant discussions (https://stackoverflow.com/search?q=tfs+git), cannot point to anything specific.

I can only speak to Visual Studio integration for SVN. I've used both VisualSVN and AnkhSVN. They both have pretty tight integration and allow you to perform various operations from the Solution Explorer menu the way you would have normally done it with VSS. Version 2+ of Ankh (one I currently use) has been very stable for me and worlds better than the older versions.
This looks like a fairly detailed discussion of using Git with Visual Studio.

This is in addition to the other answers, not a full answer as Michael Shimmins satisfied most of what I would say
TFS (especially 2010) is incredibly approachable for implementing source control techniques that you would have been terribly hard-pressed to execute with VSS. Branching and merging is much easier with TFS than SVN to start and follow over time. I would say the same thing about Git from an user interaction perspective, but those tools are getting better slowly.
Git is a great tool if you spend the ramp up time and the techniques that community take as standard practice are well worth the effort in any version control system. You're still going to run into conflicts with SLN and CSProj/VBProj files in teams of > 2. This is a result of the way those files are structured and managed.

Related

Visual Studio 2008/2010 - Professional vs Team System

Ok, I know this isnt a programming question, but I think its really important to understand the differences to be a more productive developer...so please don't close this question!! And yes, I do feel stupid for asking this question! Have only ever worked with the Prof edition of VS 2005/2008.
Now that we have a team of 6 people, I would like to what benefits Team System would offer us over 6 licenses of VS Professional? Also, what advantages does Team Foundation Server offer?
TFS can be good if you use work items and are interested in associating source changes with these work items. Otherwise, using it for a couple of weeks at a customer (that was not using work items) just made me want to run back to subversion.
Merging UI is not very good (to be polite), the VS plug-in always wants to contact the TFS server to check for any changes of the files you're using, there are false warnings of conflicts...
Note that I am the guy that usually defends Microsoft against the Java/PHP guys, so it is very strange for me to write this...
TFS is a great source control tool for every organization. And is much advance than Visual Source Safe. It also has work item management (for tasks) simmilar to Rational software. We are using it for years and not just for .Net languages.
With the Team System version you already have a Team Explorer wherein your users can access the source control. Also Team System consists of different sub products that targets specific job functions such as Team System for Development Edition (For developers), Team System Database Edition (For database architect), Team System Architect Edition (For System Architect), and Team System Test Edition (For testers). All those subversions are included on the Team Suite edition.
For the Professional version it could also benefit to the TFS source control system if the machine is installed with Team Explorer.
The major difference between Professional & Team System is Team Foundation Server. Team Foundation Server is the massive overhaul/replacement of Visual SourceSafe. But TFS also gives you other functionality such as work item tracking and other features to manage the complete development life cycle.
Hey, thanks to all for the answers so far! I have never worked in a team/collaborative environment before, so this is a tad bit new to me. We are in the midst of acquiring a "Microsoft Visual Studio 2008 Professional Edition with MSDN Premium subscription". I know that this package gets updated to "Visual Studio 2010 Premium with MSDN" on March 22 2010.
Will I still be able to leverage collaborative efforts using this package? Is it worth the $2970 additional cost?
EDIT: We are applying for the Empower for ISVs subscription. We work mainly on SaaS/RIA solutions. Am I understanding the term "Work Item" correctly - that is if I wish to task Developer 1 with say XHTML/CSS, Developer 2 with a certain functional module, and Developer 3 with another functional module - each of these is considered a work item that can be easily tracked with VSTS?
Team system, even without team foundation server has code analysis capabilities and metrics for your code that actually quantifies how maintainable it is. For a project manager this is nirvana when trying to find out who does a great job on their code and for a developer it gives him hard facts about where to improve his code.
That being said I think Team Foundation Server might be overkill for a team of 6 people except if you are building an extremely large system.
If you are comfortable with Subversion or a different version control manager,
you are dont mind using Nunit (or alternative unit test tool) and you are
familiar with or can find the open source (or fee based) code metric tools,
and you have bug tracker in place you can save quite a bit of money on the licensing.
I have worked a lot with Team System, and at some clients, just the Pro Version.
While some of the integration TS offers is slick, I am so used to nUnit and
Subversion that I actually miss them at times when working in TS.
Now in 2010, the Ultimate edition does offer some great UML diagramming and code analysis
tools that I will miss in lower versions.

Cheaper alternative to VS Team Foundation Server

Is there a fairly inexpensive source control product on the market that integrates into Visual Studio 2008+ and that has the power and capabilities of Visual Studio 2008 Team Foundation Server?
I have used Dynamsoft, SourceGear, Subversion and Platic SCM and reckon that neither of these products can come close to Team Foundation Server.
Ideally I would be interested in a product that:
handles conflict resolution well
handles IDE edits, renames and deletes automatically
easy project management within the source control "server" that allows a project administrator to painlessly manipulate the project structure as they see fit.
Subversion with Tortoise SVN
Here is an article by Rick Strahl on setting everything up.
I used svn at my last job, and tfs at my current one. I can't say I really like having to deal with tfs on a day to day basis.
SubVersion and AnkhSVN will integrate directly into Visual Studio.
Visual SVN is a tool to integrate SVN directly with Visual Studio.
(source: visualsvn.com)
It costs $49 per license.
They have a demo so you can see if it what you are looking for.
Actually, I've recently started using Team Foundation at work. Some of it is nice, but our team has spent at least 10 hours in total last week to fix silly TFS problems that never should have occurred in the first place.
While it isn't perfect, I find Subversion superior in many ways when it comes to plain source control. Get TortoiseSVN and shell out 50 bucks for VisualSVN if you want an integrated solution.
Personally I much prefer SourceGear Vault to SVN.
But it's hard to argue with free, and Vault is pretty expensive if you have more than 2 users.
Try visualsvn.
EDIT
Use VisualSvn as server (my bad, should have clarified I meant that), and as for the client, I used AnkhSVN, which got quite good over time.
From what I hear, VisualHg is a good Visual Studio addin for the Mercurial distributed source-control system. You just need to install TortoiseHg and then VisualHg, and you'll be up and running.
Well, you could use SVN in conjunction with bug tracking solutions such as Trac. There is a Trac Visual Studio plugin. There is also Redmine, though I don't know about its VS plugins.
If all you do is to "view, compare, attach changesets to work items and annotate", I guess bug tracking solutions are quite good.
What features of Team Foundation in particular are you interested in?
If you're just interested in Source Code Control, there are many plugins available for various other products. Subversion for instance has several plugins available which give a very similar experience to the Team Foundation plugin. AnkSVN is my personal favorite.
http://help.collab.net/topic/com.collabnet.anksvn.doc/concepts/ankh_whatis.html
We're going with Git but it probably doesn't have the integration with VS2008 you'd want.
Git manual: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
Mike,
If you are just looking for source control, the answer is yes.
If you are looking for an inexpensive replacement for everything that TFS does (build, test, project management, etc.) the answer is heck, no.

Source Control with Visual Studio Integration (Preferably free)

We've been using Visual Source Safe 6.0d for quite some time now, and it has served us well. However, upon attempting to upgrade to SourceSafe 2005, we discovered that it costs an arm and a leg! Additionally, it does not appear to be a painless upgrade. That said, we want a different solution that costs less money (preferrably free). As long as it has Visual Studio integration, it will work for us.
I've heard that SubVersion with the VisualSVN plugin is a good alternative. Anybody made this switch before? If so, how painful was it?
EDIT: We have a small group of developers, less than 10. We don't need to have source control over the web, it will just be internal.
I'm a big fan of VisualSVN Server + AnkhSVN VS Integration. It's an easy and free setup and so far has been very painless. TortoiseSVN as a shell integration is an awesome compliment and well I don't know if you could do without.
I have used SVN for quite some time now and loves it's tight integration with CruiseControl.net regarding automated builds. I had used Tortoise for so long that I was quite comfortable with it's explorer plugins. However, many of my team members couldn't quite grasp Tortoise and complained constantly. Then we purchased VisualSVN and got them plugged in on that. All the pain went away and they were quite happy after that.
WAY BETTER THAN SourceSafe.
Our shop tried SVN quite a while ago, but after the bugginess we had with it (constantly updating tortoiseSVN, lack of good branching, and some other issues), we started to evaluate other options.
We finally settled on http://www.plasticscm.com/ PlasticSCM, it has some features of git/mercurial as far as really flexible branching and merging goes, and it integrates flawlessly with Visual Studio. Even some of our team members who had only used SourceSafe had no problems with it, as opposed to SVN.
We too were long-time users of Visual SourceSafe 6, and made the switch about 6 months ago to VisualSVN / TortoiseSVN, and we've never looked back. The extra productivity and flexibility its given our team of 4 developers is massive.
There is some getting used to the concepts of branching and merging, but nothing that isn't covered in the Subversion documentation.
I've found that I often use the TortoiseSVN Windows Explorer integration for most tasks like updating and committing, but VisualSVN is nicely integrated with the IDE and worth the money.
VisualSVN also costs (50$ per seat iirc), you can use AnkhSVN which is free alongside VisualSVN server.
There are quite a few scripts people have written to migrate sourcesafe repo's into svn that retain history etc.
It is well worth the move.
If you want a XXI century tool for version control, maybe mercurial is the one for you, you'll have a distributed version control and you'll be able to choose among many options for the development and release cycle. You can install tortoisehg. The integration with Visual Studio can be done via visualhg. I blogged about that a time ago, I'm not able to put many links here yet, sorry.
With Mercurial you'll be able to use even outside your lan, there are plenty of options for publication and a central repository, or as I mentioned earlier, you can choose among many other aproximations for your source control.
Have you considered SourceGear Vault?
It will be a painless transition from VSS. They have a VSS plugin for Visual Studio, as well as a standalone client.
The SourceGear Vault pricing page will let you calculate license prices. For 10 users, it's averaging about $240 USD each.

Using Git with Visual Studio [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 8 years ago.
Improve this question
As a long-time Visual SourceSafe user (and hater) I was discussing switching to SVN with a colleague; he suggested using Git instead. Since, apparently, it can be used as peer-to-peer without a central server (we are a 3-developer team).
I have not been able to find anything about tools that integrate Git with Visual Studio, though - does such a thing exist?
What are the technologies available for using Git with Visual Studio? And what do I need to know about how they differ before I begin?
In Jan 2013, Microsoft announced that they are adding full Git support into all their ALM products. They have published a plugin for Visual Studio 2012 that adds Git source control integration.
Alternatively, there is a project called Git Extensions that includes add-ins for Visual Studio 2005, 2008, 2010 and 2012, as well as Windows Explorer integration. It's regularly updated and having used it on a couple of projects, I've found it very useful.
Another option is Git Source Control Provider.
I use Git with Visual Studio for my port of Protocol Buffers to C#. I don't use the GUI - I just keep a command line open as well as Visual Studio.
For the most part it's fine - the only problem is when you want to rename a file. Both Git and Visual Studio would rather that they were the one to rename it. I think that renaming it in Visual Studio is the way to go though - just be careful what you do at the Git side afterwards. Although this has been a bit of a pain in the past, I've heard that it actually should be pretty seamless on the Git side, because it can notice that the contents will be mostly the same. (Not entirely the same, usually - you tend to rename a file when you're renaming the class, IME.)
But basically - yes, it works fine. I'm a Git newbie, but I can get it to do everything I need it to. Make sure you have a git ignore file for bin and obj, and *.user.
Git Source Control Provider is new plug-in that integrates Git with Visual Studio.
I've looked into this a bit at work (both with Subversion and Git). Visual Studio actually has a source control integration API to allow you to integrate third-party source control solutions into Visual Studio. However, most folks don't bother with it for a couple of reasons.
The first is that the API pretty much assumes you are using a locked-checkout workflow. There are a lot of hooks in it that are either way expensive to implement, or just flat out make no sense when you are using the more modern edit-merge workflow.
The second (which is related) is that when you are using the edit-merge workflow that both Subversion and Git encourage, you don't really need Visual Studio integration. The main killer thing about SourceSafe's integration with Visual Studio is that you (and the editor) can tell at a glance which files you own, which must be checked out before you can edit, and which you cannot check out even if you want to. Then it can help you do whatever revision-control voodoo you need to do when you want to edit a file. None of that is even part of a typical Git workflow.
When you are using Git (or SVN typically), your revision-control interactions all take place either before your development session, or after it (once you have everything working and tested). At that point it really isn't too much of a pain to use a different tool. You aren't constantly having to switch back and forth.
I find that Git, working on whole trees as it does, benefits less from IDE integration than source control tools that are either file based or follow a checkout-edit-commit pattern. Of course there are instances when it can be nice to click on a button to do some history examination, but I don't miss that very much.
The real must-do is to get your .gitignore file full of the things that shouldn't be in a shared repository. Mine generally contain (amongst other stuff) the following:
*.vcproj.*.user
*.ncb
*.aps
*.suo
but this is heavily C++ biased with little or no use of any class wizard style functionality.
My usage pattern is something like the following.
Code, code, code in Visual Studio.
When happy (sensible intermediate point to commit code, switch to Git, stage changes and review diffs. If anything's obviously wrong switch back to Visual Studio and fix, otherwise commit.
Any merge, branch, rebase or other fancy SCM stuff is easy to do in Git from the command prompt. Visual Studio is normally fairly happy with things changing under it, although it can sometimes need to reload some projects if you've altered the project files significantly.
I find that the usefulness of Git outweighs any minor inconvenience of not having full IDE integration but it is, to some extent, a matter of taste.
Microsoft announced Git for Visual studio 2012 (update 2) recently. I have not played around with it yet, but this video looks promising.
Here is a quick tutorial on how to use Git from Visual Studio 2012.
Also don't miss TortoiseGit...
https://tortoisegit.org/
There's a Visual Studio Tools for Git by Microsoft. It only supports Visual Studio 2012 (update 2) though.
Visual Studio 2013 natively supports Git.
See the official announcement.
The Git support done by Microsoft in Visual Studio is just good enough for basic work (commit/fetch/merge and push). My advice is just to avoid it...
I highly prefer GitExtensions (or in less proportion SourceTree). Because seeing the DAG is for me really important to understand how Git works. And you are a lot more aware of what the other contributors to your project have done!
In Visual Studio, you can't quickly see the diff between files or commit, nor (add to the index) and commit only part of modifications. Browse your history is not good either... All that ending in a painful experience!
And, for example, GitExtensions is bundled with interesting plugins: background fetch, GitFlow,... and now, continuous integration!
For the users of Visual Studio 2015, Git is taking shape if you install the GitHub extension. But an external tool is still better ;-)
TortoiseGit has matured and I recommend it especially if you have used TortoiseSVN.
The newest release of Git Extensions supports Visual Studio 2010 now (along with Visual Studio 2008 and Visual Studio 2005).
I found it to be fairly easy to use with Visual Studio 2008 and the interface seems to be the same in Visual Studio 2010.
The simplest solution that actually works quite well is to add the TortoiseGit commands as external tools.
Solution to adding a Git (TortoiseGit) toolbar to Visual Studio
As mantioned by Jon Rimmer, you can use GitExtensions. GitExtensions does work in Visual Studio 2005 and Visual Studio 2008, it also does work in Visual Studio 2010 if you manually copy and config the .Addin file.
Currently there are 2 options for Git Source Control in Visual Studio (2010 and 12):
Git Source Control Provider
Microsoft Git Provider
I have tried both and have found 1st one to be more mature, and has more features. For instance it plays nicely with both tortoise git and git extensions, and even exposed their features.
Note: Whichever extension you use, make sure that you enable it from Tools -> Options -> Source control -> Plugin Selection for it to work.
As of 2013-02-11, the Microsoft Git plugin for Visual Studio 2012 should work with the Express version as well.

Which plugin do you use for SVN in Visual Studio? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I'm considering using SVN for my .Net projects, and I'd like to know what plugins are available for integrating the source control capabilities directly into the Visual Studio IDE.
I already know about the following Visual Studio extensions:
VisualSVN, which seems great but is not free. It is implemented as a low-level VS package extension. Is anyone using it?
AnkhSVN, which is free but I've heard it's a bit buggy. It is implemented as a VS add-in extension. Is anyone using it? are you experiencing problems? Edit: The 2.0 version is a complete rewrite and seems to solve the problem I've heard about (which were related to the 1.x versions)
Edit : TortoiseSVN + Mindscape's FileExplorer VS Extension, which is not a real IDE integration but somewhat eases the use of TortoiseSVN from Visual Studio.
Edit : I've found a few comparison posts between AnkhSVN and VisualSVN here, here and here.
I've used AnkhSVN for the past year and I've never had a problem with it. I switch between that and TFS and some of the times I think I prefer AnkhSVN to TFS.
I use VisualSVN and it works great, but you're correct, it's not free. No experience with Ankh here.
Early versions (1.X) of AnkhSVN were pretty unstable. Latest builds (v2.0.x) work as a native VisualStudio source control provider and it's very stable. I would recommend you to just download and try it yourself.
I also use AnkhSVN and it does work OK but I tend to drop to the file system to work with TortoiseSVN. For some reason I feel safer using Tortoise. I think that come's from concerns about Visual Studio than it is AnkhSsvn.
I tried AnkhSVN, but didn't like it. It tried to do too many things automatically and behind the scenes (e.g. adding files to SVN). I prefer if I see exactly what happens.
Now I mainly use TortoiseSVN (outside Visual Studio) or sometimes Mindscape VS FileExplorer in Visual Studio (which is available for free).
Note: VS FileExplorer plugin simply displays a file explorer in VS and allows you to invoke TortoiseSVN from there (and it also displays the TortoiseSVN overlay icons).
Update:
I reinstalled the current version of AnkhSVN 2.0.5250 and tried to reproduce the problems described above in a sample solution.
Result: AnkhSVN did exactly what I expected. I was not able to reproduce any of the problems. I think it might be time to give AnkhSVN another try at work!
Update 2:
I have now used AnkhSVN for some days, and I have to say it works very well. It's a big improvement compared to the previous version (1.x).
I use AnkhSVN and haven't had any issues worth complaining about. Sometimes (about 1 in 10 times?) I do get a strange nondescript error trying to commit, but restarting VS has always fixed the problem.
Edit: The error actually seems to be coming from the dataset designer, not AnkhSVN. Sometimes I get an error where it tries to "read or write to protected memory", which then just continues until I restart VS. Sorry for the confusion.
I have used both AnkhSVN and VisualSVN each for about 6 months. I prefer VisualSVN for one reason alone: Compatibility.
At my work, we keep our Subversion server and TortoiseSVN software very up-to-date (some people just go with one version and stick with it for years, but that's not our style). With new versions sometimes comes new working copy formats and it seems that AnkhSVN is very slow to adapt these new formats. What happens at this point is AnkhSVN completely breaks:
All the source files appear as "Added" even though they are all committed.
We are no longer able to Commit. An error appears claiming it does not recognize the new format.
VisualSVN has been "on the ball" in this respect as we have never had any compatibility issues with their software. This factor alone easily swayed me toward VisualSVN.
The Agent SVN plug-in does a good job of integrating Subversion and Visual Studio, but it too is not free.
Another vote for visual SVN. To be honest, I think its just me being lazy. I could do everything visual svn does with just using tortoise, but it saves me from switching between programs. The color coded warning lights you get with visual svn are nice, but not that big a deal.
I use VisualSvn and it's fine. It wasn't expensive and it helps make sure you include all files you've added to the solution. It's not so good when using locking in svn (but then svn isn't great at locking files). If you want to edit a file that has needs-lock set, it will automatically update it when you lock it (sensible), but that could end up doing an update when you dont want it too.
I've got into trying Svn Monitor too and am happy with that, but it does seem to grind my computer to a halt.
I've tried old versions of ANKH but got in a mess and corrupted the svn repository (I suspect that was version 1.x) so I'd guess later versions are better.
I use VisualSVN, and love it. It may not be free but I found it extremely reliable, very well integrated, and very much worth the $49 per license. By setting up a few key-bindings comitting and updating become almost second-nature to my entire team (most of whom had no previous SVN/SCC experience).
Being able to quickly scan the solution explorer to see which files had changed was very useful for keeping tabs on things for writing status reports and the like (but that's probably specific to my overly beurocratic manager).
The "Checkout Solution from SVN" feature was great for quickly getting the summer student interns setup and giving them a gentle introduction to version control. Again, this is probably specific to our needs so may not be of interest to you.
So a thumbs-up for VisualSVN and the convenience it gives us.
My experience with working with AnkhSVN is better than tortoise but it still has a lot of flaws that you really don't get with native Visual Studio plugins like Source Safe, TFS, Dynamic soft. It has real problems with the .svn folders and synchronising so you end up spending a portion of your time removing the .svn folder and starting again.
That's my experience. One example is moving a folder from one project (in the same solution) to another project. It breaks on this from the working set being different. The solution is to go into the folder and remove the .svn files but it seems like a a lot of effort.
I'm use to it being a mirror of my filesystem though, and basic 2 developer branches of files.
The AnkhSVN plug-in is not too bad.
I use vsTortoise.
It works very nice especially when you are familiar with TortoiseSVN and it's free.

Resources