4 ms·
Git is great and it blew and expanded my mind. But I have some questions for the the experts. Is git really a fantastic achievement, or is the praise for git c
by psranga 18y ago
Git is great and it blew and expanded my mind.
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.
- cduan 18y agoI think your hypothesis is correct, but that doesn't make Git any less of an achievement. Certainly it is the product of technologies that existed, but it is the manner in which Git packages those features that is innovative. Indeed, much of the brilliance of Git is how _simple_ it is conceptually compared to other systems--it is the concepts that Git leaves out, not what it uses, that count.
- pmjordan 18y agoMoreover, git is extremely fast compared to almost every other VCS. Performance was the thing that pushed Linus to start the project in the first place, but it's still amazing just how fast it is.
- sovande 18y agoPerformance was the thing that pushed Linus to start the project in the first place 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
- pmjordan 18y agoSorry, maybe my comment wasn't quite clear enough. 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 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.
- kragen 18y agoYour post contains several errors and points that I feel need clarifying. 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/ 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.
- Xichekolas 18y agoNot sure if anyone clicked through to this, but there is a rather amusing and insightful thread between Linus and Bram Cohen (bittorrent guy) during git's development about some of the crazy ideas and innovations git has. At the time things like diffing at the object level (versus the file level) were considered insane/very hard. These are the types of advances that git made mostly on its own. http://www.gelato.unsw.edu.au/archives/git/0504/2153.html 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.
- dfox 18y agoMy opinion is that the greatest achievement of git is demonstrating that such simple system is perfectly adequate. And git is both conceptually and implementation-wise simpler than anything else out there.
- kragen 18y agoYou may have confused BitKeeper with Monotone? The first two of the three concepts you list are in Monotone, and I don't think they are in BitKeeper. 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/ 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.