We will be starting a new project at the company I'm working at. It's a software development project in C++ and C#, with ~6-8 developers at three locations.
Older projects here use SVN and a custom Issue tracker, but it's planned to switch to TFS. For this new project, I would like to convince the management to use GitHub Enterprise instead of TFS. I don't have too much experience with TFS, but I've used git a lot, and have some GitHub experience.
I am specifically asking about the complete experience, that is, the integration of Version Control, Issue/Bug tracking and a Wiki. There are some related questions on here, but they focus on the version control aspect only. So:
All development will be on Windows machines using Visual Studio (2010, maybe 2012).
Microsoft recommends Git Repos Git is the default version control provider for new projects. You should use Git for version control in your projects unless you have a specific need for centralized version control features in TFVC.
TFS is an Application Life-cycle Management solution, GitHub is 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 is centralized source control, GitHub is distributed.
TFS is being renamed to Azure DevOps Server for the next major version, while VSTS (Visual Studio Team Services) has been renamed to Azure DevOps.
The major difference with branching between Git and TFVC is that TFVC makes copies of the parent from which it branched while Git branches are just pointers to a commit. This can be a tough concept to understand. When TFVC creates a branch, it creates an entire copy of its parent. This ends up taking more space.
Well I can't give you a complete answer. But we had a look at TFS for Java development and here are some points that may be interesting for you as well.
Considering your team is distributed I would go for Git. It will allow a more flexible workflow. If the network is stable TFS will certainly do the job as well. If you worked with SVN before: TFS as source control will most certainly piss people off. But developers used to VisualStudio and the MS-Server-Parts have far less conflicts with it.
Again: we tried (or had to try) using TFS + Java, with C# + Visual Studio it's a complete different story. The integration will be much better there. Yet some of my points may still be useful :)
I can't comment on TFS specifically as my only experience with it was brief and very unpleasant so I wont.
I do however use git and github (the enterprise version as well) regularly and I've worked with a variety of centralized VCSes (rcs, cvs, svn, synergy) and decentralized VCSes (hg, git).
I think the main difference between GIT and TFS apart from some auxiliary feature difference is that fundamentally TFS is a centralized system (like rcs, cvs, svn and synergy) and that git is a decentralized system (dvcs). This may not seem that much of a differentiation at first, but it has profound implications.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With