

Initial revision of "git", the information manager from hell - Sevein
https://github.com/git/git/commit/e83c5163316f89bfbde7d9ab23ca2e25604af290

======
ggggit
Tridgwell's "reverse engineering" of BitKeeper is one of the funniest, and at
the same time the saddest stories, I've read about software.

<http://lwn.net/Articles/132938>

It's companies like BitKeeper, who think using a command line is "not allowed"
that are the reason so much software sucks.

The interface Tridgewell used was the only one I'd be interested in. It's
something you could build on top of. You could add abstraction to your heart's
content.

As for git, it's not nearly as simple as people portray it to be. You need to
have a scripting language (e.g. Perl) and and http client (e.g. curl) already
installed or you cannot compile, let alone use git. Now, this is not so bad,
if git was just a little glue for some external programs. But try to compile
git statically and you will end up with over 230MB of "small, simple,
utilities". git is not so simple.

It's command syntax is appealing to many. It makes git seem "simple". But the
program itself is not simple in the sense of being robust.

I can complile a static copy of the rcs or cvs programs, or even svn, and take
them with me anywhere, all in the space of a few MB's.

git has a lot of dependencies. It's easy to to break.

~~~
humbledrone
Uh, is "being easy to statically compile" some benchmark for simplicity that
I've never heard of?

Also, what do you care if git is 230MB? Do they even make thumb drives that
small any more?

~~~
Maro
> Uh, is "being easy to statically compile" some benchmark for simplicity that
> I've never heard of?

Yes. It's not the benchmark, but it's a benchmark.

~~~
ggggit
Thank you Maro. I've never understood why static linking and easy compilation,
not to mention being concerned with file sizes, upsets certain people when
mentioned on mailing lists and forums. But it always does.

------
akent
Actually this is just the first _self-hosted_ revision of git, but
impressively that was apparently only a few days after the actual project
start.

<http://www.spinics.net/lists/git/msg24141.html>

------
ajross
What's most notable about this isn't so much that all the core ideas of git
are already in place in the first version. It after all is, fundamentally, a
pretty simple piece of software.

What shocks me is that that README was written _literally days_ after the
kernel project's license to bitkeeper got revoked.

~~~
thaumaturgy
Isn't it funny to think about how, if Tridge hadn't done what he did, if all
of Linus' public shaming of Tridge had done the trick and the Linux kernel had
stayed on Bitkeeper, that we wouldn't have had git, or Github?

Linus did a good job of coming up with a replacement tool in a hurry, but I'm
also grateful to Tridge for poking a stick into the hornets' nest.

~~~
vog
We would still have had Darcs [1]. An without its competitors Git and
Mercurial, maybe Darcs would have gotten more enthusiasts pushing Darcs to
where Git is today.

[1] <http://darcs.net/>

~~~
dspillett
Has Linus ever said why he disregarded Darcs and the other OSS options (wasn't
Mercurial already starting to get somewhere at that time?).

Other projects not mature enough yet (and/or moving fast enough in that
direction) and he wanted something _now_?

Or some technical points that he disagreed on, so wrote his own solution that
worked the way he preferred instead of trying to change the established
workings of other projects?

~~~
jeltz
> Has Linus ever said why he disregarded Darcs and the other OSS options
> (wasn't Mercurial already starting to get somewhere at that time?).

I think you might be thinking of Monotone here. Mercurial was started some
days after git.

EDIT: Wikipedia has some info about what Linus thought of Monotone. The key
problem with it was performance. I have no idea to what degree they have been
fixed today.

[https://en.wikipedia.org/wiki/Monotone_%28software%29#Monoto...](https://en.wikipedia.org/wiki/Monotone_%28software%29#Monotone_as_Git_inspiration)

~~~
dspillett
You are probably right there, I think I have mixed up Monotone and Mercurial
in my chronology.

------
mmariani
>\+ GIT - the stupid content tracker

Hmm… I think Linus thought it was stupid.

>+"git" can mean anything, depending on your mood.

Or... He was just in the everything-is-stupid mood.

>\+ - random three-letter combination that is pronounceable, and not actually
used by any common UNIX command. The fact that it is a mispronounciation of
"get" may or may not be relevant.

I think everyone just goes with that. :)

>\+ - stupid. contemptible and despicable. simple. Take your pick from the
dictionary of slang.

Here! He said it again!

>\+ - "global information tracker": you're in a good mood, and it actually
works for you. Angels sing, and a light suddenly fills the room.

GitHub surely took it seriously and made it happen. Thank you!

>\+ - "goddamn idiotic truckload of sh*t": when it breaks

Maybe I'll take it. Mainly because I don't want to learn how to think like
Linus.

>+This is a stupid (but extremely fast) directory content manager. It doesn't
do a whole lot, but what it _does_ do is track directory contents efficiently.

And here's Linus saying git is stupid, again. I think he really means it.
Well, at least that day he did.

Anyway, thanks for fossil Dr. Hip! :)

edit: formatting.

~~~
JonnieCache
He means stupid as in simple, unaware of things it does not need to know.
Stupidity and ignorance in software is high praise and it's very difficult to
achieve.

See: <http://en.wikipedia.org/wiki/Information_hiding>

That style is just linus' way. It comes across as a lot more aggressive on
screen than in person. To get a better sense of him, I'd recommend watching
this talk he gave evangelising git at google back in 2007. It's pretty
entertaining, and very educational on the issues facing VCS designers.

<http://www.youtube.com/watch?v=4XpnKHJAok8>

To a certain extent, if you can knock git together in a couple of weeks you
get a free pass to talk however you want, as long as you don't hurt anyone.

~~~
mmariani
Ouch! No heed to be harsh. I certainly appreciate Linus's work. Kudos to him!
I understood his point on the stupidity thing. It even took some laughs out of
me. And that's the reason I posted that, so other people could too.

I don't mean to start a flamewar on scm, really. But I think git is overly
complicated, and I believe I'm not alone on that.

Anyway, don't take things too seriously and have a good one!

PS: You gave a great idea. I should email Linus and offer to pay him some
beers. That sure will be a great talk. Thanks mate!

~~~
JonnieCache
Sorry, really didn't mean to be mean whatsoever. It's hard to convey tone in
internet comments :)

------
damian2000
Gotta love this password handling bit ...

pw = getpwuid(getuid());

if (!pw) usage("You don't exist. Go away!");

------
lenkite
I used to keep messing up git till the time I studied the internal model. As
long as you imagine a DAG and where the refs point to in your mind every time
you execute a git command, you are good. Not that I am complaining - it is
very powerful and tends to gets easier with use.

------
wisty
Suggesting to HN - vote up articles which you learnt stuff from rather than
articles in which you made some vapid political argument.

------
kator
<http://www.bitkeeper.com/Jobs.html>

