bzr vs. hg vs. git

written by Martin Häcker on

Ich fang ja nur langsam an zu verstehen wie sich die verschiedenen Konstrukte unterscheiden.

Da wäre zum Beispiel das immer wieder auftretende Problem das man an Sourcen arbeitet, auf die man nicht comiten kann oder will.

Also zum Beispiel an Bugfixes für ein Projekt, von dem man zwar die Sourcen hat, das aber dooferweise einer Firma gehört die keine comits zulässt. Ah well.

In Git löst man das, indem man das einfach brancht und bei einem neuen Release mit rebase seine Changes auf die neue Plattform hebt. Mercurial und Bazaar lösen das anders, dort gibt es spezielle Plugins Mercurial Patch-Queues und Bazaar Looms die ein Quilt ähnliches Interface bieten um das Problem zu lösen.

Tja, was macht den Unterschied aus?

Eine Sache die mir allmählich aufgeht ist das Teilen dieser Änderungen. Macht man einen Branch und rebased dann immer wieder auf die originalen Sourcen. Das ist super, weil es kein neues Konzept braucht und somit relativ simpel. Aber man kann diesen Branch so gut wie nicht mit anderen leuten Teilen - schließlich verändert man ständig die History. Also doof für die Zusammenarbeit an so einem branch.

Mercurial Patch-Queues sind da besser geeignet - mit dem unterschied das sie extra sind und nicht versioniert werden. Damit kann man sie aber auch nicht teilen.... :) - Das wiederum lässt sich hacken, indem man einfach in dem repository in dem ordner in dem die patch-queue liegt wiederum ein eigenes hg-repository eröffnet. Ein Hack - aber er löst das Problem auf elegante Art und Weise.

Bazaar scheint das mit dem looms am besten gelöst zu haben - die lassen sich nämlich ganz normal im repository pushen - sind aber eben nicht teil der history und führen daher nicht zu den üblen merge-conflikten die man in git erhält.

Auf mich wirkt das so, als zeigen sich die verschiedenen Ideologien der Entwicklungsteams in diesen Entscheidungen: GIT:: KISS - kein neues Konzept (Quilt) ohne das es absolut sein muss, gleichzeitig aber die Linux-Poweruser Mentalität: Wenn du deine History-Verändern willst, dann mach doch, wirst schon wissen was du willst. HG:: Gutes Design, history verändern ist evil - daher musste es was anderes sein. Gleichzeitig ist man aber so stolz auf die Binary- und Wire-Formate, dass man sie nicht verändern darf - daher bleibt die Information aus dem Repository ausgeschlossen. BZR:: Hier wird vor allem auf die Qualität der Code-Basis geachtet, Veränderbarkeit, Usability und schöne API sind dort am wichtigsten - daher ist es überhaupt kein Problem, das die looms natürlich im repository und damit push-bar sind.

Mir ist unklar wie ich das gegeneinander abwägen kann - jede der Mentalitäten hat ihre eigenen Vor- und Nachteile. Zum Beispiel ist mir BZR immer noch zu Langsam um es im täglichen gebrauch einzusetzen - es macht schlicht keinen Spaß.

Andererseits erinnert es mich stark an das alte Mantra: "First make it work, then make it fast!". Also vielleicht wird es doch noch?

p.s.: Ich weiĂź natĂĽrlich das es Stacked-GIT gibt - aber soweit ich das feststellen konnte, ist das nicht der "recommended way of doing things" in der GIT community.

Origami ist cool

written by Martin Häcker on

".. it may even someday save your life."

Hier kucken. (Ted-Vortrag)

Scrumtisch ist rum

written by Martin Häcker on

.. und ich hab sogar meine Notizen dort veröffentlicht.

:) Yay!

Obama war doch in Berlin..

written by Martin Häcker on

..und hat da gesprochen.

Ganz hervorragend dazu der Kommentar von Jon Stewart

I think, the america flags are broken… they're not on fire […] You know, […] there's something about a charismatic leader, rallying huge crowds of Germans in a large public square…

rofl

Where the hell is Matt?

written by Martin Häcker on

Der erste Teil hat ihn zu einer Internet-Legende gemacht.

Der Zweite teil ist noch besser.

Unbedingt anschauen. :)

Zuverlässiger Spamschutz

written by Martin Häcker on

kann so einfach sein.

Man muss einfach nur ein Captcha einbauen, dass "zuverlässig" zwischen Mensch und Maschine unterscheidet.

Well, zuverlässig.

Ich jedenfalls fühle mich jetzt offiziell zur Maschine geadelt, denn bei diesem Captcha bin ich einfach nicht weitergekommen. (Man muss noch sein Alter bestätigen, damit man das Captcha sieht.)

Doh.

DVCS verglichen

written by Martin Häcker on

Endlich mal ein guter ausgeglichener Vergleich zwischen den drei groĂźen verteilten Versionskontrollsystemen.

Lest solange er aktuell ist!

One does not walk into Mortor!

written by Martin Häcker on

Yes you do!

Rofl!

Wie lernt man am besten Programmieren?

written by Martin Häcker on

Hab ich mal fĂĽr Python gegoogelt.

Und bin erstaunlicherweise auf eine extrem coole idee gestoĂźen:

Einfach indem man dem Lernenden Rätsel aufgibt, die ihn stück für stück an neue Konzepte aus der Python Standardbibliothek heran bringen.

Definitiv die beste Idee für Übungsaufgaben die ich bisher gesehen habe - und wunderschön über eine Webseite machbar.

Hier gibts die Rätsel

By the way: Auf dieses Coole Programm zum Python lernen bin auch auch gestoĂźen Einfach ein Webbrowser mit einem Manual links, und rechts ein Terminal um das alles auszuprobieren.

Nice!

Drogen und andere dinge die man mit python machen kann

written by Martin Häcker on

NodeBox ein tool mit dem man in Python die Mac OS X Graphik-Bibliotheken ansprechen kann.

Die Galerie ist besonders faszinierend.