|
|
Sitemap |
Ein Blog-Eintrag von Martok (Sa 23.04.11 23:16)
Views: 1178911
|
oder
2 x 3 macht 4 widdewiddewitt und drei macht -- ach Mist, wieder nix
Wer in den letzten Tagen die Shoutbox verfolgt hat, wird sich denken können worum es hier geht. Immerhin hat das ganze Thema "Merge" zu einigem Frust geführt...
Aber von vorn.
Ganz von vorn.
Am Anfang war die EntwicklerEcke, und die EE war gleich mehrmals da. Als Entwickler haben wir mehre Umgebungen, die auf jeweils anderer Softwareversion laufen; namentlich "Branch", "Trunk" und (natürlich) das Echtforum. Dabei sind die Begriffe letzlich aus dem verwendeten Versionskontrollsystem SVN abeleitet, auch wenn sie nicht ganz so verwendet werden.
Die im letzten 61147 (siehe Februar) beschriebene Umstellung hat sich zwar über einige Revisionen im SVN hingezogen, ist aber irgendwann dann doch zu einem Ende gekommen. Nun besteht aber die Aufgabe, die im Branch durchgeführen Änderungen auf den Trunk zu portieren. Sollte ja nicht weiter kompliziert sein, nicht wahr?
Naja, sollte.
Wie uns aber schon Murphy lehrt, wird niemals etwas so funktionieren wie es soll, sondern eher maximal schiefgehen. Das gilt insbesondere, je einfacher es sein sollte. Gedacht war das Ganze in TortoiseSVN so: Merge klicken, URL eintragen, Revisionen auswählen, kurz warten und dann die Konflikte auflösen. Dass da welche sind wussten wir schon im voraus, denn während ich an jQuery gearbeitet hab hat sich Christian S. mit der Objektorientierung des Trunks beschäftigt. Wäre auch mal einen Blogeintrag wert
Soweit ging das auch alles ganz wunderbar, aber als es dann ans abschließende testen ging, wollte auf einmal nichts mehr funktionieren. Nach kurzer Verzweiflung und viel Codelesen dann das Fazit: da fehlt doch was!
Ich weiß nicht wirklich, warum das passiert ist, jedoch hat Subversion es geschafft, einzelne Änderungen nicht zu übernehmen. Das Ganze sehr zufällig, aber mit genug Effekt dass eine Mischung aus altem und neuem Code entstanden ist - einen spannende vielleicht, aber definitiv keine funktionierende. Und erst recht keine, die das eingebaute TortoiseMerge versteht. Dieses Tool liest normalerweise die Konfliktmarkierungen ein, die SVN in der problematischen Datei hinterlässt, und lässt mich dann einfach auswählen welche Seite ich für welche Stelle nehmen will. Das funktioniert aber so gar nicht, wenn man 4 Konflikte verschiedener Versionen in der selben Datei hat - und ihr könnt euch denken, was ich hatte?
Also erkundigt man sich mal bei jemandem, der öfter SVN macht, was man denn da tun könnte. Revisionen einzeln mergen? Nein, sagt der Experte, das will man nicht wirklich. 30 Minuten und einen weiteren Versuch mit der alt"bewährten" Methode (Stupidity is doing the same thing and expecting a different result) später setzt sich dann selbst bei mir der Verdacht durch, dass die unschöne Variante vielleicht doch besser sein könnte, als eine die gar nicht funktioniert
Immerhin ein Revert geht bei SVN schnell, so dass man in endlicher Zeit einen neuen alten Zustand erreichen kann. Sehr praktisch. Und offensichtlich auch etwas das man öfter mal braucht. Zum Beispiel, um dann jede Revision einzeln zum Mergen auszuwählen und alle Konflikte sofort zu beheben. Das führt zwar echt zu Arbeit, da man manche Dateien ziemlich oft zu sehen bekommt, hat aber den Vorteil dass man keine verschachtelten Konfliktdateien erhalten kann.
Jedenfalls: eine weitere Stunde und viele manuell aufgelöste Konflikte später steht dann ein simples "Finished" in der Log-Ausgabe und - oh Wunder - alles funktioniert.
Damit können wir dann jetzt endlich weiterarbeiten.
Viele Grüße und bis zum nächsen Mal,
Sebastian
Kommentar von Narses (So 24.04.11 11:27)
Oh du "Held der Arbeit"! Danke für deinen Einsatz.
|
|