Git is the next Unix
advogato.org
advogato.org
http://alumnit.ca/~apenwarr/log/?m=200801#31
Same person who brought us "Tracking an entire Windows sytem inside Git" last month:
http://news.ycombinator.com/item?id=455320
Note the title could be construed the wrong way, the author means it is the next unix only as an analogy: it's a new, underlying platform where atomic building blocks can be combined and hooked up by higher level programs to do a lot of great things.
And maybe it could be stretched to be "the next Linux." Still wrong.
More than that I hope you read the comments too, because if you aren't an expert that might be one here who can help debunk snake oil before you upvote.
I've been caught a few times reading a story, upvoting it, and then finding a well written comment a moment later about what total tosh it is.
I stand by my comment, in fact it probably was very tame. This is shallow crap linkbait trash without any real substance.
But I have some questions for the the experts. Is git really a fantastic achievement, or is the praise for git coming from people who are not experts in source control (+)?
Based on my cursory readings, it appears that the concepts Git uses (dag, everything is a node, tree snapshotting etc) existed in Bitkeeper.
(+): I ask this because I've repeatedly found that what looks like a big conceptual leap to outsiders is actually a gradual evolution. Examples: I first thought RISC was a big leap, but on reading up the technical papers later, I realized that it was made of lots of innovations by lots of people.
No, problems with the bitkeeper license was the reason git was started. Linus was very happy with bitkeeper as the VCS for Linux until some kernel contributor tried to reverse engineer parts of bitkeeper which caused the bitkeeper author to threaten to revoke the free license. Git is basically a rewrite of bitkeeper
BitKeeper license problems caused him to look for another VCS. However, before he started git, he tried a bunch of other DVCS systems, including open source ones, and decided he couldn't work with them because they were simply too slow. Hence git. See http://en.wikipedia.org/wiki/Git_(software)#Early_history From the quote there it's clear that it's not a BK rewrite. git is apparently faster than BK.
The person in question was Andrew Tridgell, the "reverse engineering" consisted of typing "help" and then observing that the "clone" command would cause BitKeeper to send the entire contents of the repository (see http://lwn.net/Articles/132938/), permitting the extraction of a complete kernel history; and BitMover did not merely threaten to revoke the free license; they actually did.
Finally, Git's data model and internal structure has basically nothing in common with BitKeeper's.
http://www.gelato.unsw.edu.au/archives/git/0504/2153.html
(It was two links away from the article. First the 'faster than cp -a' link then, a link on that page.)
As a side note: I'm really surprised to see Bram Cohen in the capacity of naysayer on this!
"I'd like to reiterate that _nothing_ out there supports moving lines between files, and further predict, with total confidence, that if git tries to support such functionality it will simply fail"
Of course, Linus is pushing buttons as always.
I don't think I am an expert in source control, but here is my source control resume:
* I spent a year (1996-97) where my primary job responsibility was maintaining a homegrown source control system. That was when I started using source control. So I've been using source control software for 13 years.
* Around 1998, I ported patch to native Win32 (although I never released the port, sigh.)
* I've been individually responsible for administering CVS and Subversion servers at two different companies, and part of a team that administered a CVS server at a third.
* I've used CVS, PVCS, Subversion, Git, darcs, Mercurial, and bzr. I wanted to try out ClearCase, Vesta, OpenCM, and Monotone, but I never got around to it.
* One night, I wrote a client to Socialtext's REST API that provides CVS commands and semantics (including conflict detection and automatic merging) for command-line editing of their Wikis. (Available at http://www.canonical.org/~kragen/sw/stclient/ if you like.)
Okay, so now you know I'm really not an expert; I've never even implemented a full source-control system from scratch once. So take my opinion with a grain of salt. Here it is, though:
Git is indeed a fantastic achievement. It is the first source control system that's really designed to be used as a storage platform for applications. It's about 10× faster than other source control systems. (I haven't used Perforce, but I hear it's pretty efficient too.) It provides cryptographically secure authentication of the entire history (an idea taken from Monotone and OpenCM). And the ecosystem of tools around Git is dramatically stronger than the ecosystem around any other source-control system, which is sort of a replication of the major innovation of Linux: decentralized innovation.
But those limitations may only be in the Git porcelain, all the plumbing underneath might be a great base for the concept of a distributed file system. GIT is the first step in the right direction, or even could be the platform to support it. http://www.wizbit.org/drupal/ is a company that tries to achieve something like that.
I hate to say it, but Windows has far better "versioning" than OSX with NTFS's Shadow Copy. Far better filesystem all round actually, which isn't hard. ZFS can't come a moment too soon!
I don't know if the versions applied to directories though (I doubt it, but my exposure to VMS was quite brief).
They also had a source editor that kept versions within a file cycle. Lines marked as deleted could be optionally viewed and/or recovered.
Not a relational database, though. But the Tree objects (1) make a hierarchical database.
http://wingolog.org/archives/2008/04/12/git-a-transcriptiona...