FOSSLC is a non-profit organization that specializes in technology and know-how to record conferences with excellent quality. Click on the icons below to view great videos from communities we are actively involved with:

 

Criteria to decide between svn, git, and others

05 Apr in Community, Git, How To, Programming, Sysadmin, svn, Code repositories, Programming
Printer-friendly version
Git

If someone asked you which code repository your company/team should use, how would you answer? How do you decide something like this?

It's comfortable to go with what you know already. On one hand, training costs and migration is expensive. On the other hand, you might be missing an opportunity to move to a better tool that saves time, energy, and enables scenarios you cannot do today that make you more competitive. This article is a first draft of writing a useful guide to choosing between open source code repositories.

As a bit of background about the author, I've used approximately 7 code repositories now over the past 15 years. Projects I've worked on have ranged from a pair of developers up to larger projects involving hundreds of developers in several time-zones. I've done a few migrations between code repositories and been fortunate enough to have them be reasonably successful (no major outages, people could get their work done, and more people felt it was a good change than a bad change a year later). I decided not to specialize in this area approximately 7 years ago. It is likely I could have chosen to do so if it interested me more. Thus, I'm not by any means the wisest expert, but certainly not a noob either.

Here goes. The following is a table of criteria worth considering. There will undoubtedly be errors - please point them out. For those familiar with Bazaar, please keep me honest as it's the one I have almost no experience with.

Criteria cvs svn git mercurial bazaar
Model Central Central Distributed Distributed Distributed
Linux client Y Y Y Y Y
Windows client Y Y Y Y Y
MacOS client Y Y Y Y Y
ssh authentication Y Y Y Y Y
WebDav Y Y Y Y Y
Eclipse supported Y Y Y Y Y
Netbeans supported Y Y Y Y Y
CRF LF/LF conversion Y Y Y Y Y
Import/export Y Y Y Y Y
sha1 checksum of files/dirs N N Y Y y
work offline N N Y Y Y
local commit N N Y Y Y
Developer base Small Large Large Large Large
Developer base Shrinking Growing Growing Growing Growing
Lines of code 87,000 397,000 220,000 135,000 232,000

Comments

As you can see from the table, all of the options support many of the features you'll want and need.

A key decision point is which model you prefer. If you require a distributed model, in which branching is very common then you are likely better off with Git, Mercurial, or Bazaar. Recognizing reality, merging between branches in Subversion is much weaker than what Git and Mercurial offer. I can't comment on Bazaar here - perhaps someone can point me to references?

If you require a centralized model however, this does not necessarily exclude Git, Mercurial, or Bazaar as you can implement a semi-centralized model using them. To be frank, people could potentially check out code from CVS or Subversion unless they commit you'd never see the changes either.

Which would the author choose *today*. I've tipped my hand with the Freeseer project. No regrets choosing what we chose. In fact, we are quite pleased with it. I wouldn't go so far as to say a particular system is dead however.

One use case I am unsure if Git or Mercurial can handle today is authenticating and authorising based on a directory. For example, all employees have read access + only department members have commit on the departmental code + others may have no access, read access, or commit depending on what they've earned.

I am happy to follow this up and update it in response to feedback, suggestions, and leverage your experience in addition to my own. I look forward to learning from you and improving this article.

Comments

reply

That can be not very good for your mind to get a pressure of tem essays writing. Human can be not firm enough to manage with all. Luckily, qualified custom writing services give you an opportunity to buy best research papers.

checksum for files/dirs in bzr

Regaring "sha1 checksum of files/dirs" for bazaar. Note that bzr supports signing commits and is not limited to sha1. The sign-my-commits command and config file can be used for this.

Thanks

Updated my table accordingly.