Hirntod durch Zusammenführung: Mergen in Subversion
Gregor Ottmann | Mai 24, 2007 on 12:11 pm | In Know-How, Vermischtes |“Subversion ist toll”, haben sie alle gesagt, “nimm das statt CVS”. Nun gut, nachdem die Annahme, dass 12 Milliarden Fliegen sich nicht irren können, sich schon massiv auf meinen Speiseplan ausgewirkt hat, befolgte ich auch diesen Rat und ließ mir für ein Projekt vom lieben Admin Subversion einrichten, statt mal wieder CVS zu verwenden. Die Features klingen ja auch toll, gerade bezüglich des Verschiebens von Dateien ohne Verlust der gespeicherten Versionshistorie, da kann man nix sagen.
Ihr könnt Euch nicht vorstellen, wie erstaunt ich war, als man mir sagte, dass SVN sowas wie einen “Branch” nicht kennt und dass man stattdessen halt einfach das Repository kopiert. Ja, OK, das mag bei SVN ohne allzu heftige Platzverschwendung gehen, aber trotzdem… Wer lässt sich denn sowas einfallen? War derjenige vielleicht betrunken? Man weiß es nicht, man munkelt nur.
Jedenfalls habe ich mich so weit mit dem “branch by copy”-System arrangiert. Man muss es nicht lieben, solange es irgendwie funktioniert, sage ich mir immer. Dann kopiere ich halt, ist mir doch egal. Pfft!
Bisher gab es für mich erfreulicherweise auch noch nie eine Situation, in der ich zwei Zweige des Reporitories hätte zusammenführen müssen (wir Informatiker nennen das “mergen”), und das mag eventuell gut sein. Ich habe nämlich heute eine Mail von CSpeldrich bekommen, die mich vermuten lässt, dass ich an dem Versuch kläglich gescheitert wäre - ich zitiere einfach mal den Hinweis, der mir ein leichtes Frösteln über den Rücken gejagt hat:
But which two trees should be compared? At first glance, the answer may seem obvious: just compare the latest trunk tree with your latest branch tree. But beware-this assumption is wrong, and has burned many a new user!
Ja, wie jetzt? Wenn ich nicht den Brantsch mit dem Trunken vergleichen bzw. mergen soll, was dann? Die Antwort hat das leichte Frösteln im Rückenbereich in eine dicke Eisschicht verwandelt:
To express only the changes that happened on your branch, you need to compare the initial state of your branch to its final state. Using svn log on your branch, you can see that your branch was created in revision 341. And the final state of your branch is simply a matter of using the HEAD revision. That means you want to compare revisions 341 and HEAD of your branch directory, and apply those differences to a working copy of the trunk.
Ok, alles klar. Ist ja ganz logisch, dass ich den Punkt, an dem ich verzweigt habe, mit dem aktuellen Zustand… Ach, komm, geh weg, die spinnen doch alle. Die haben nicht nur gesoffen, die haben genmanipuliertes Gras gekifft wie die kaputten Öfen, als die sich das haben einfallen lassen. Die haben das doch alles in INTERCAL implementiert und Zusatzmodule in Ook! dazugebaut. Es mag die Aussage eines elenden Weichhais sein, aber ich will mein CVS zurück.
Beide Zitate stammen übrigens aus dem SVN-Buch von Red Bean, und zwar von dieser Stelle hier. Ich danke CSpeldrich für den Link und dem Schicksal dafür, dass es auch noch andere Versionskontrollsysteme gibt.
Keine Kommentare vorhanden »
RSS-Feed für Kommentare zu diesem Beitrag.
Eintrag vornehmen
You must be LOGGED IN um einen Kommentar zu erstellen.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^
:RSS2-Feed