Git sucks, or why do I use darcs instead
Where git sucks
Git is too simple and stupid for me
git - the stupid content tracker
Linus Torvalds, man git
First, I want to use revision control systems for all possible thoughts which can come in my head.
Darcs has a nice patch theory which described what I can do with history and what I can't because of dependency problems. Git's history seems to me like a store of diffs which lay one by one with no way to take a bottom one without touching an upper. It looks like using “cp -r revision control system”, the only difference is that it takes less of disk space.
No dependency controlling
Just see this video to understand what is it. It shows it very clearly.
Interactive mode sucks
It's what darcs has by default and git hasn't.
Interactive mode is usually annoying in command-line tools, but not when I need to know, what I really do with my code. It's also simplifies partial commits very much.
Reverting old commits sucks
How can I revert an old change only in the chosen file? In darcs, I can do darcs unrecord or darcs obliterate and follow its instructions. In git, I can devise only:
git diff <commit>..<commit>^ <file> | git apply -And no dependency analysis will be performed. Just a diff. Simple and stupid.
No tracking of past file locations
In darcs, I can can see what happened with file which was in the working copy but for now it doesn't exists:
12345678
[komar@pavilion ~/k.b.n/ru]$ darcs changes -s webChanges to ru/web:Mon Apr 18 00:42:28 MSD 2011 Alexander Markov <apsheronets@gmail.com>* mv */web */location./en/web -> ./en/location./ru/web -> ./ru/location
This feature used in this wiki. Try to go at /en/web and you will be redirected to /en/location. How can I get the same in git? If somebody knows, inform me, because I need it to add this feature to my code.
Unicode support sucks
Code sharing sucks
What we need to share read-only darcs repo? A webserver. Just put your repo on http and everybody will be able:
- to browse working copy via http (http://komar.bitcheese.net/darcs/memcache-ocaml/);
- to download full repo with
darcs get http://komar.bitcheese.net/darcs/memcache-ocaml/.
In git, we need a... Hm... Github?
Of course, you can run some crutches, but it's not too simple.
Where git rocks
Git's performance rocks
Git is very fast. Nuff said.
If you need to create a really huge repo, just use git.
Gits' branches rock
The same. If you really need to use branches, use git.
Git vs CVS vs SVN vs Mercurial vs Bazaar
And don't think what CVS, SVN, mercurial or bazaar is better than git. It's not truth, these version control systems are much worse. You can read about it below.
Links
- Why Git is Better than X
- Video about camp — “This video explains all!”
- Darcs's patch theory on official manual
- Darcs's patch theory on wikibooks — there are more images here
- When should you branch? — describes how darcs users can live without branch support
- Bazaar vs Git — humorous work by python-minded ubuntu creators
- Cutting Edge Revision Control — there is small benchmark here too