« Lovebirds at 8:30 | Main | Charlotte rockt die Medien »

Samstag, März 01, 2008

iGit

Linus Torvalds mal bei einer Präsentation zu erleben, ist schon toll: Guter Redner, selbstbewusst bis arrogant, aber das verzeiht man bei fachkundigen Ikonen schon mal und immer mit Erkenntnisgewinn.

GIT will er in 2 Wochen geschrieben haben, markig sind die Sprüche zu SVN ("CVS done right or what their claim was - CVS can't done right! These stupid morons have been concentrating on the wrong feature: Branching/tagging is easy - who cares? *Merging* is the important part!) aber auch die Beschreibung eines neuen Modells: at 69:00 "content matters, not individual files: E.g. that function has moved from that place in file in history to that file."

Die Sache mit den private/automatischen branches für jeden Entwickler habe ich ja verstanden, mir fehlt die Einbindung in ein CI-System: Soll ein System dann immer von einem vertrauensvollen Entwickler "pullen"?

Hier noch ein Blog mit den revolutionären Details:

  • Git was originally not a version control system; it was designed to be the infrastructure so that someone else could build one on top. And they did; nowadays there are more than 100 git-* commands installed along with git. It's scary and confusing and weird, but what that means is git is a platform. It's a new set of nouns and verbs that we never had before. Having new nouns and verbs means we can invent entirely new things that we previously couldn't do. Git is a new kind of filesystem, and it's faster than any filesystem I've ever seen: git checkout is faster than cp -a. It even has fsck.
  • Git stores revision history, and it stores it in less space than any system I've ever seen or heard of. Often, in less space than the original objects themselves!
  • Git uses rsync-style hash authentication on everything, as well as a new "tree of hashes" arrangement I haven't seen before, to enforce security and reliability in amazing ways that make the idea of "guaranteed identical every time" not something to strive for, but something that's always irrevocably built in.
  • Git names everything using globally unique identifiers that nobody else will ever accidentally use, so that being distributed is suddenly trivial.
  • I wanted to build a distributed filesystem, but it was too much work. Now it's basically been done... in userspace, cross-platform.

More stuff on http://git.or.cz/gitwiki/GitLinks und mehr Hass auch.

Why I dislike Subversion

I've had to explain this enough times that it merits its own page. SVK does not factor into these points because I consider it to not be part of subversion.

* Metadata is stored in every subdirectory, rather than in one top-level directory. This makes subversion unsuitable for backing up /etc, because it causes conflicts with various programs that have expectations about the contents of their directories.

* I can't make an offline copy to work on, unless I use some other revision control system to layer on top of it like Mercurial or bzr. If I'm using Mercurial and bzr to do this, I might as well have used them for the main repository as well.

* Subversion does not keep track of merges.

* Subversion does not handle renames in a sane way.

* It is easy to accidentally get the wrong directory from a project you're just starting on, thanks to Subversion's "every directory is a repository" model.

* If the people who host your repository go away, you lose the entire revision history. Not so with decentralized version control systems.

* Its name does not make sense. A centralized revision control system can hardly be labeled "subversive"! Decentralized version control systems fit that description much better.

* Subversion once failed to completely update a checkout, and a co-worker had to spin some magic to get it "completely" updated. This is not sane. CVS suffers from the same kind of problem.

Erstellt von tixus um 8:15 PM Kategorien: Software + Java
Powered by
Thingamablog 1.1b6