gesamtes Subversion Repository auf vorherige Version zurücksetzen

Sollte man einmal in die Not kommen, ein gesamtes Repository auf eine frühere Version zurückzusetzen, weil durch einen Import selbst trunk- und branch-Verzeichnisse nicht mehr vorhanden sind, wird es etwas haarig.
Bei mir heute genauso passiert, als ich eigentlich ein paar Unterverzeichnisse in den trunk importieren wollte, versehentlich aber in das Hauptverzeichnis des Repositorys schrieb.

Folgendes Vorgehen empfiehlt sich dann:

  1. Alten Revisionsstand auschecken (der wird dann wieder ins Repository eingefügt)
  2. Änderung an der temporären Arbeitskopie vornehmen (damit die Änderungen in das Repository übernommen werden)
  3. Änderung der temporären Arbeitskopie überführen (um die originale Arbeitskopie aktualisieren zu können)
  4. Temporäre Arbeitskopie aktualisieren
  5. Verzeichnisse löschen, die nicht mehr benötigt werden
    (in meinem Falle brauchte ich die fälschlich importierten Verzeichnisse nicht unbedingt aufzuheben, weil sie noch an anderer Stelle korrekt lagen)

Alten Revisionsstand auschecken

momentaner Status des Repositorys vor diesem Schritt

/falsch_importiert_1/
/falsch_importiert_2/
/falsch_importiert_3/

was ist zu tun

  1. Verzeichnis für eine temporäre Arbeitskopie anlegen, in der die korrekte Revision liegt: mkdir repo_new
  1. Einen Checkout von dem Revisionsstand in das temporäre Verzeichnis machen, bei dem noch alles in Ordnung ist: svn checkout -r 7 file:///Users/kbessner/repositories/repo
    Dieser Checkout sollte vom gesamten Repository erfolgen, nicht nur von einem Teilverzeichnis.

momentaner Status des Repositorys nach diesem Schritt

/falsch_importiert_1/
/falsch_importiert_2/
/falsch_importiert_3/

momentaner Status der temporären Arbeitskopie nach diesem Schritt

/trunk/verzeichnis_1/
/trunk/verzeichnis_2/datei1
/trunk/verzeichnis_3/datei2
/tags/version_1/verzeichnis_1/
/tags/version_1/verzeichnis_2/datei1
/tags/version_1/verzeichnis_3/datei2

Änderung an der temporären Arbeitskopie vornehmen

was zu tun ist

  1. In das Verzeichnis der temporären Arbeitskopie wechseln: cd repo_new
  2. Eine minimale, nicht destruktive Veränderung an einer der Dateien durchführen: pico trunk/verzeichnis_2/datei1

Änderung der temporären Arbeitskopie überführen

was zu tun ist

  1. Das Repository aktualisieren: svn commit -m "Testversionsänderung"

temporäre Arbeitskopie aktualisieren

was ist zu tun

  1. Die soeben veränderte, temporäre, funktionsfähige Arbeitskopie wieder in das Repository aktualisieren: svn commit file:///Users/kbessner/repositories/repo -m "korrekte Version 7 wieder eingespielt"

momentaner Status des Repositorys nach diesem Schritt

/falsch_importiert_1/
/falsch_importiert_2/
/falsch_importiert_3/
/trunk/verzeichnis_1/
/trunk/verzeichnis_2/datei1
/trunk/verzeichnis_3/datei2
/tags/version_1/verzeichnis_1/
/tags/version_1/verzeichnis_2/datei1
/tags/version_1/verzeichnis_3/datei2

momentaner Status der temporären Arbeitskopie nach diesem Schritt

/trunk/verzeichnis_1/
/trunk/verzeichnis_2/datei1
/trunk/verzeichnis_3/datei2
/tags/version_1/verzeichnis_1/
/tags/version_1/verzeichnis_2/datei1
/tags/version_1/verzeichnis_3/datei2

Verzeichnisse löschen, die nicht mehr benötigt werden

was ist zu tun

  1. Im Repository befinden sich wieder die trunk- und branch-Verzeichnisse. Leider auch die fälschlich importierten Verzeichnisse, die im Repository gelöscht werden können.
  1. Löschen der unbenötigten Verzeichnisse: svn delete falsch_importiert_1/ -m "an falscher Stelle importierte Verzeichnisse löschen". Analog werden die anderen beiden Verzeichnisse gelöscht.

momentaner Status des Repositorys nach diesem Schritt

/trunk/verzeichnis_1/
/trunk/verzeichnis_2/datei1
/trunk/verzeichnis_3/datei2
/tags/version_1/verzeichnis_1/
/tags/version_1/verzeichnis_2/datei1
/tags/version_1/verzeichnis_3/datei2

originale Arbeitskopie aktualisieren

was ist zu tun

  1. Wechseln zur originalen Areitskopie: cd repo
  2. Aktualisieren der originalen Arbeitskopie: svn update

momentaner Status der originalen Arbeitskopie nach diesem Schritt

/trunk/verzeichnis_1/
/trunk/verzeichnis_2/datei1
/trunk/verzeichnis_3/datei2
/tags/version_1/verzeichnis_1/
/tags/version_1/verzeichnis_2/datei1
/tags/version_1/verzeichnis_3/datei2

31. Oktober 2007 Kommentar schreiben | abgelegt unter Software

Leopard kommt!

Leopard kommt! Nachdem ich heute Morgen eine Liste mit Shops gesehen habe, die morgen ab 18:00 Uhr Mac OS X 10.5 Leopard direkt zum Mitnehmen anbieten, habe ich mich innerlich schon ein wenig geärgert, dass ich über Unimall im Apple Online Store bestellt habe. Denn ich könnte hier um die Ecke, auf dem Weg nach Hause Leopard bei MediaMarkt am Alex mitnehmen.
Aber dann bekam ich vorhin eine E-Mail von Apple, dass Leopard bereits versandt sei und bis 29.10.2007 eingehen sollte. Das kann ja nur heißen, dass es bereits morgen oder Samstag per UPS vorbeigeschneit kommt. Jetzt geht’s mir wieder gut und ich kann guter Dinge weiterarbeiten und morgen geht’s beruhigt nach Tübingen.

25. Oktober 2007 Kommentar schreiben | abgelegt unter Software

Wenn svnX mit Textwrangler keine Dateien vergleichen möchte

Heute wollte ich mir zwei Versionen einer Programmdatei anschauen und musste feststellen, dass die Zeit für die Demoversion von BBEdit leider abgelaufen war. SvnX bietet allerdings noch eine Reihe anderer Programme an, mit denen man ein diff durchführen kann. Ein kurzer Blick auf die Homepage von barebones.com zeigte, dass Textwrangler inzwischen kostenlos verfügbar ist.
Also habe ich Textwrangler heruntergeladen und brav in den Programmeordner auf der Mac-Festplatte gezogen.

SvnX war leider nicht dazu zu bewegen, ein diff auf die beiden Dateien mit Textwrangler durchzuführen. Alles was ich als Meldung erhielt war das hier:
/Applications/svnX.app/Contents/Resources/svndiff.sh: line 72: /usr/bin/twdiff: No such file or directory
svn: '/Applications/svnX.app/Contents/Resources/svndiff.sh' returned 127

Klarer Fall: twdiff fehlt im entsprechenden Ordner /usr/bin. Ein “twdiff” bei der Suchmaschine meiner Wahl brachte auch nicht die Erleuchtung, woher ich nun twdiff bekommen sollte.

Bis ich auf die Idee kam, einfach Textwrangler zu starten. Und siehe da: Der Dialog, der das Erste mal erscheint, wenn man Textwrangler startet, fragt nach, ob die Command Line Tools jetzt installiert werden sollen. Ein paar mal das Administratorpasswort eingegeben und schon funktionierte das diff auf meine zwei Dateien via SvnX problemlos.

Fazit: Wenn’s hakt, hilft einfach nur Mac OS X auch nicht weiter. Man muss schon ein wenig nachdenken.

24. Oktober 2007 1 Kommentar | abgelegt unter Software

Gravatardienst geht zu Automattic und erweitert kostenlosen Funktionsumfang

Wer hätte das gedacht? Vor ein paar Wochen habe ich hier das erste mal über Gravatar.com berichtet, nun wechselt der Dienst in die Hände von Automattic. Wie das Gravatar-Blog berichtet, wurde bisher der gesamte Dienst mit allen Funktionen auf die Serverinfrastruktur von Automattic verschoben.
Dort soll der Dienst nun bis zu drei mal schneller laufen und ständig verfügbar sein.

Für die nächste Zeit ist nun geplant, die PRO-Features für alle frei zugänglich zu machen und die maximale Größe der Gravatare bis 128×128 Pixel zu erweitern.
Bisher konnte man als nicht zahlender Nutzer nur maximal eine E-Mailadresse und zwei Gravatare hinterlegen.

Für mich persönlich klingt das nach einer guten Sache! Vor allem die Tatsache, dass der Dienst nun schneller läuft sollte uns allen zu Gute kommen!

18. Oktober 2007 1 Kommentar | abgelegt unter Internet