“Git is the open source revision control software that Linus Torvalds developed to help manage Linux kernel development. You can download it yourself and use it for your own kernel hacking – or for software projects of your own. This article shows you how to get started hacking Linux with the Git tools.”
Is it just me, or has IBM DevWorks pushed out a LOT of nice (mostly linux-related) articles lately?
From the few articles i’ve read (and there is a whole lot of them), i always find them good for their simplicity, while keeping attention to details.
This one is no exception – and while i’m at it, i’m going to grab a cup of coffee and spend a few moments at their site
Edited 2006-06-30 21:04
Thank you IBM DevWorks viral marketing team!
This is why free / open-source software is so great.
You can pick it up see how its built, learn, develop, contribute. This really is the path to beter software!
I have used git sometimes, i am not a kernel hacker, learnt a lot about how the linux kernel is working.
Great software and written in a couple of hours..
Edited 2006-06-30 22:41
and i belive it kinda have a bit of the unix way of thinking in it. GIT isnt some big blob of a binary. instead its a collection of binarys, a folder/directory tree definition and a “metadata” definition.
or alteast thats my perception of how it works, feel free to correct me…
The OpenSolaris project recently had to decide on a distributed SCM to use for our community. Bazaar NG (bzr), Mercurial (hg), Monotone, SVK, and TeamWare were all initially considered. Before it was over, the choices were down to GIT and Mercurial.
The relevant and most interesting part about the final reports were the conclusions given for GIT and Mercurial (the community ended up selecting Mercurial):
GIT:
http://www.opensolaris.org/os/community/tools/scm/git-report-final….
The original goal for Git was to be fast. It does seem to be pretty fast for several of its operations.
It also has an active an enthusiastic community, which gives it momentum.
The downsides are:
* Needing to go two versions back to find a version that worked for some very basic operations (e.g. creating and cloning a repository) is not good.
* The source code is inconsistent in places (language it’s written in), and needs much documentation. It also has a lot of hardcoded names in it (diff command and flags, hooknames).
* Documentation is available for all commands, but it can be sparse.
* Commit -a should not throw away conflict information.
* The update-index command seems counter-intuitive and inconsistently used amongst the git core commands.
* The flags are sometimes inconsistent from command to command.
Mercurial:
http://www.opensolaris.org/os/community/tools/scm/dcm_evaluation_me…
I’ve read the article, but from what it says it’s not clear to me why git would be better than, say, svn.
Anyone’s got a clue?
SVN has One True repository, and indeed does well for several large projects.
The other major kind of version control system is distributed (git, darcs), where every single copy of the tree thinks it owns the forest.
I don’t know if Linus did the world a favour with hacking git. Ok, I fully understand his motivation and support the decision made for the kernel, but I am quite annoyed by the situation caused outside of the kernel world: Before that git thing you only had to deal with CVS and it’s mostly drop-in replacement Subversion, when you wanted to create bugfixes for the OSS software you use, but now there is a dangerous trend where every single project tries to evangelize yet another some one’s favorite pet SCM. This makes contribution by other means than bug reports quite hard.
CVS domination took too long, while technically it had lots of problem, so there was an explosion of new SCM in the end.
IMHO, it’s quite possible that the ‘dozen of SCM’ situation is only temporary and in the end, there will be left one centralised SCM and one distributed SCM.
For the centralised SCM, subversion has nearly achieved this role, for the distributed SCM, things will take much more time to settle as this is a “new” situation.
That said, I agree with you about git: in the same space mercurial seems to be more though-out for example, but Linus’s fame has a tremendous momentum..
Last time I checked, I had 9 different SCMs installed on my main OSS development machine tracking various projects – at least two of which are currently broken and two more have broken backward compatibility with their own data bases.
Git is possibly the best SCM imaginable for the workflow of Linux kernel development. It is fully distributed, change set based, and lends itself nicely to patch management. It’s perfect for Linux kernel development.
I wouldn’t use it for any project that didn’t have those characteristics, though.
Last time I used mercurial it ate its own database. This is Not Good ™
svn is ok, but I don’t see that it’s much of an approvement over the much maligned CVS.
“If somebody sues you, you change the algorithm or you just hire a hit-man to whack the stupid git.” — Linus Torvalds
The T-shirts from last year’s Ottawa Linux Symposium have a great Linus quote on them: I’m an egotistical bastard. I name all my projects after myself. First there was Linux, and now there is git.