As it stands, Git is going to eat Subversion’s lunch.
Because it is better, you ask?
No. Actually, Git kind of sucks in a number of ways. Right off the bat, it shoves about a zillion command line tools in your bin/ directory, many of which don’t work unless you go figure out what silly perl modules or something else are required.
Dumb.
But, still, Git will win unless the Subversion developers finally pull their head out of their ass and realize that opaque collections are much more than “just a Mac specific problem… just tar wrappers done right”.
To rephrase in a slightly less antagonistic fashion (Now, I owe several people a beer and an apology for that last paragraph): Subversion needs to focus on the user experience and not just on being a better CVS. There be innovation goin’ on and hiding behind “a better CVS” will only work for not terribly much longer.
Git will win because it is about 8 bazillion times easier to use because it doesn’t scatter administrivia crap throughout your work area.
This is just so fundamentally the right way to do stuff.
Why in bloody hell should the user have to think about mirroring the filesystem manually??!?!
Yet, that is exactly what Subversion, CVS, and Perforce force the user to do!
Stupid, stupid, stupid.
Try explaining to a user — to an artist, to your mother, to someone writing a damned presentation — why the frack they should have to go into some tool to either do what they have already done in the Finder (or Windows equivalent) or that even using the Finder (or Windows equivalent) will screw up their “workarea state”.
This isn’t about “wrappers” — about documents that are really directories. This is about convenience.
Give it 12 to 18 months. If Subversion doesn’t fix this — if Subversion doesn’t make it, like, not require lots of silly, repetitive, manual, error prone, operations that either mirror filesystem operations or require you to use one tool and not another — then Git will gain users in droves.
Users will switch not because Git is better than Subversion, but because Git is one whole hell of a lot easier to work with in the most common workflow — editing, adding, and deleting files.
Git doesn’t make you redo stuff that your computer is already quite good at doing. And, that, alone, will be enough to make users flock to it…
Fraser offers a much more techincal analysis of the differences. Personally, I desperately hope Subversion fixes this particular problem. Subversion is really and truly awesome in so many ways and I do not want to have to migrate repository software for at least another decade.
Fitz suggests — sort of — having a look at Mercurial.