Join Michael Lehman for an in-depth discussion in this video Selecting a software version control that is right for you, part of Learning Software Version Control.
Well, we've made it this far. We've covered the concepts of what is software version control. We've talked about the concepts of checking in and checking out, reverting, rolling back, branching, merging, tagging, labeling, and we've covered it in detail for five different products: Subversion, Perforce, Microsoft's Team Foundation Server, Git, and Mercurial. With all this information, how do you make a decision as to which one is right for you? Well, there's two main considerations.
One, if you're working in a team, and you're working in a company, or you have a client who already has an existing centralized version control server, you are pretty much going to use what it is they ask you to use, and that'll probably either be Subversion, Perforce, or TFS. If you're starting up your own team, I would highly recommend using Git or Mercurial. Both Git and Mercurial each have different followings and different key features. That might be a decision for you. For me, I most often use Git for two reasons.
One, there is integration for Git inside Apple's Xcode Development Environment, and there's also integration for Git available for Visual Studio, and two, Git hub, which I mention during the chapter on Git, is a hosted service, which is free for open-source projects and very, very low cost for private repositories for commercial projects. And it makes it very, very easy for you to use the Git repository on your local device and then push your changes periodically to the server on the cloud to the Git hub server.
Now if you remember back to my original story about restoring my hard disk, Git hub was the service that I used when I was restoring my drive, and it worked very well from me. If you're working in an environment where you're really working with the distributed team, sometimes Git and Mercurial can be best because you can export and import and send the differences by email without having to set up a server infrastructure for all of your team members. And remember Git is what's being used for the Linux Kernel by a team of a few hundred developers.
After digging into all five of these products, you'll probably have a feel for which one suits your working style the best. So if your organization doesn't mandate the use of a particular version control software system, pick the one that you feel works best for you. If they all seem equal to you, I'd highly recommend using Git. It's lightweight and it's efficient and it does the job.
- Comparing centralized vs. distributed systems
- Saving changes and tracking history
- Using revert or rollback
- Working with the GUI tools
- Using IDE and shell integration
- Installing different systems
- Creating a repository
- Tagging code
- Branching and merging code
- Selecting a software version control system that's right for you