Eclipse-SVN Troubleshooting


Motivation

Im Zusammenspiel zwischen Eclipse und SVN entstehen ab und zu Inkonsistenzen zwischen lokaler Arbeitskopie und dem Stand des SVN Repository. Dieser Artikel soll für typische Fälle eine Anleitung zur Beseitigung dieser Widersprüche geben.

Generelles Vorgehen

Der erste Schritt bei auftretenden Widersprüchen zwischen der lokalen Arbeitskopie und dem SVN Repository besteht darin zu erreichen, dass alle im Repository enthaltenen Resourcen in der lokalen Kopie auch als solche gekennzeichnet werden. Die folgenden Schritte können in angegebener Reihenfolge versucht werden. Nach jedem Schritt sollte geprüft werden ob noch Widersprüche bestehen – falls nicht, sofort beenden und normal weiter arbeiten.

  1. Versuch: SVN Update um alle Resourcen aus dem Repository zu holen.
  2. Versuch: SVN Cleanup auf der lokalen Arbeitskopie ausführen um die Markierungen mit den wirklich im Repository existierenden Resourcen in Einklang zu bringen.
  3. Versuch: SVN Update erneut aufrufen, evtl. lassen sich jetzt fehlende Resourcen downloaden
  4. Versuch: Alle Commits die einzeln möglich sind in der Synchronize Perspective durchführen. Einzelfallprüfung! Die Synchronize Perspective lässt auch für im svn:ignore Property aufgeführte Ressourcen ein commit zu.
  5. Versuch: Alle Ressourcen die im Repository nicht sein sollten aber dort sind und in der lokalen Kopie auch nach Update noch fehlen, über die SVN Repository Perspective löschen.
    Dieser Schritt kann möglicherweise nicht rückgängig gemacht werden!
    Anschliessend unbedingt Update ausführen, am besten weiter mit Versuch 1.
  6. Versuch: Möglicherweise gibt es Resourcen auf denen Sie noch ein Rollback durchführen möchten. Jetzt wäre der geeignete Zeitpunkt für einen Versuch.
  7. Versuch: Wenn alles nichts geholfen hat, versuchen sie nur noch die modifizierten und neuen Ressourcen ins Repository zu bringen. Hier können manchmal auch Kommandozeilen Werkzeuge wie SVN-Tortoise helfen.
    Haben Sie das erfolgreich geschafft, verschieben sie die komplette Arbeitskopie an eine Stelle außerhalb des aktiven Workspaces (als Backup).
    Dann checken Sie das Projekt neu aus und löschen die noch zu entfernenden Ressourcen auf dem üblichen Weg.

Spezifische Probleme

Extra Files trotz Ignore Liste

Ob eine Resource in der svn:ignore Liste enthalten ist bekommt man in Eclipse heraus indem man das Projekt selektiert und sich vom Projekt die svn Properties anzeigen lässt (siehe obiges Bild).

Im Beispiel ist deutlich zu sehen, dass der target Folder in der ignore Liste enthalten ist. Dennoch stehen offensichtlich Resourcen unterhalb des target Folders unter SVN Kontrolle. Durch das Property ist auch bei Selektion des target Folders der Menüpunkt add to svn:ignore deaktiviert.

Ein einfaches delete auf die index.html im target Folder wirkt sich nicht direkt auf das Repository aus. Beim Versuch das Delete zu comitten (target Folder selektieren und commit) wird der komplette target Folder als neu gekennzeichnet und subversion versucht diesen in das Repository zu schreiben. Wir können das delete dennoch ins Repository eintragen indem wir alle neuen Einträge abwählen und nur das delete auswählen (siehe nachfolgendes Bild).

Führt dieser Weg nicht zum Erfolg kann alternativ auch der entsprechende Pfad im Repository gelöscht werden. Aber Vorsicht bei direkten Aktionen im Repository! Hier sollte man genau wissen was man tut und ob die Pfade noch benötigt werden. Die Repository Sicht zeigt nachfolgende Abbildung.

Am schnellsten lässt sich das Problem natürlich lösen, indem in der Repository Perspektive gleich der ganze target folder gelöscht wird. Damit umgeht man auch das schrittweise löschen der übergeordneten Folder. Allerdings muss man dann den lokalen Arbeitsstand noch bereinigen und auch dort den target Folder händisch löschen (ein einfaches update reicht jetzt nicht). Jetzt sieht alles wie gewünscht aus, siehe nächste Abbildung.

Wenn der target Folder beispielsweise durch erneute Generierung entsteht, wird er wieder wie gewohnt als Resource welche nicht unter SVN Kontrolle steht angezeigt.

Auch bei einer Synchronisation wird der target Folder wieder korrekt ignoriert (siehe folgende Abbildung).

Möglicherweise muss wie im Beispiel gezeigt, das svn:ignore Property mit der ignore Liste erneut commited werden, da es nur noch in der lokalen Arbeitskopie und nicht mehr im Repository existiert. Mit dem Löschen des target Folders im Repository ist offensichtlich auch das Property entfernt wurden.

Kommentiere oder hinterlasse ein Trackback: Trackback-URL.

Kommentare

  • article source  Am 22. Februar 2013 um 14:32

    As a Newbie, I am always exploring online for articles
    that can benefit me. Thank you

  • best rapid spinner  Am 29. Juni 2013 um 17:24

    I like the valuable info you provide in your articles.
    I’ll bookmark your blog and check again here frequently. I’m quite sure I
    will learn many new stuff right here! Good luck for
    the next!

  • Free plugin  Am 6. Oktober 2015 um 06:43

    Thanks for sharing your thoughts on free opencart module.
    Regards

Hinterlasse einen Kommentar