it-swarm.com.de

Ordner in Subversion blockiert

Was zum Teufel bedeutet "versperrt", wenn Sie versuchen, Subversion einzuchecken? Ich sehe zwei Ordner in rot mit dem Textstatus "blockiert". Ich verstehe nicht, was das in den Dokumenten bedeutet.

Wenn ich den Befehl cleanup versuche, erhalte ich "Ordnername ist kein Arbeitsverzeichnis". Dies ist ein Ordner, den ich gerade in VS erstellt habe. Wenn ich versuche, ihn zu Subversion hinzuzufügen, wird mir dieser Fehler angezeigt. Alle anderen Ordner sind in Ordnung.

128
PositiveGuy

es tritt auf, wenn Sie die .svn-Unterverzeichnisse gelöscht oder verschoben haben (ohne SVN-Befehle auszuführen). Daher hat SVN eine beschädigte Ansicht der Arbeitskopie. 

Versuchen Sie es zuerst mit einer Bereinigung. Falls dies nicht gelingt, setzen Sie das Verzeichnis zurück (oder aktualisieren), um die .svn-Ordner des Unterverzeichnisses wiederherzustellen.

110
gbjbaanb

Ohne zu wissen, dass was dies verursacht, können Sie die Arbeitskopie (die gesamte Kasse, die Sie lokal haben) an einen anderen Ort exportieren.

Wenn Sie tortoisesvn verwenden, haben Sie die Möglichkeit, "unversionierte Dateien zu exportieren", aber ich denke, wenn Sie es von der Befehlszeile aus ausführen, werden nur versionierte Dateien exportiert, so dass Sie möglicherweise eine mühselige Aufgabe haben, unversionierte Dateien manuell zu kopieren .

Wenn Sie fertig sind, checken Sie eine saubere Arbeitskopie aus und legen Sie die exportierte Sicherung darüber ab. Es ist sehr wichtig, dass die Sicherung keine .svn-Ordner enthält.

Ich habe diese Fehler schon einmal gesehen, wenn Leute Arbeitskopien in anderen Arbeitskopien ausgecheckt haben oder etwas anderes, was die .svn-Einträge beschädigt.

9
Neil Trodden

Hatte das gleiche Problem und habe es so behoben:

  • benannte das blockierte Verzeichnis um
  • erstellt das Verzeichnis mit seinem ursprünglichen Namen in SVN (z. B. svn mkdir)
  • der übergeordnete Ordner wurde aktualisiert, sodass das neu erstellte Verzeichnis in meiner Arbeitskopie angezeigt wird
  • kopierte die Dateien vom blockierten in das neu erstellte Verzeichnis und übergab sie
5
Tim Büthe

Wenn Sie sich auf einem * nix-System befinden, stellen Sie sicher, dass Sie keine Datei erstellt haben, fügen Sie sie zu SVN hinzu, löschen Sie sie und ersetzen Sie sie durch einen Ordner mit demselben Namen. Hilft nicht beim OP, aber hoffentlich wird es jemandem eine Menge Stress ersparen.

4
Jeremy Massel

Nichts hat für mich funktioniert, also habe ich folgendes getan:

  • mit den nicht versionierten Dateien an einem neuen Speicherort exportiert
  • den vorhandenen Ordner umbenannt
  • ordner aus dem Exportverzeichnis im Projekt verschoben
  • benannte den neuen Ordner um
  • hinzufügen, begehen
  • den alten umbenannten Ordner entfernt
  • benannte den neuen Ordner um
  • verpflichten 
1
Bobby Tables

Dieses Problem auf einem Windows-Computer angegangen.

Ich hatte das Verzeichnis ausgecheckt, bevor ich das gesamte Projekt ausgecheckt hatte, zu dem es gehörte. Es verursachte für mich das "blockierte" Problem.

Ich habe diesen Ordner einfach gelöscht und ein Update von root (dieses Ordners) ausgeführt. Es hat gut funktioniert.

Befehle wie Aufräumen usw. funktionierten bei mir nicht.

Ein Wort der Vorsicht: 

  1. Dies ist teuer, wenn der Ordner groß ist.
  2. Dies führt dazu, dass Sie alle Ihre Änderungen verlieren, wenn es welche gibt.

Alles Gute.

1
Obaid

Dies bedeutet, dass aus irgendeinem Grund während der Operation ein Konflikt aufgetreten ist. Überprüfen Sie, ob eine nicht-versionierte Datei oder ein Ordner mit demselben Namen wie eine versionierte Datei vorhanden ist.

(Paraphrasiert aus der Hilfedatei des Tortoise SVN-Clients)

1
Colin Nicholls

Ich habe dies auch unter Windows gesehen, wenn ich einen symbolischen Link zu einem Repository-Verzeichnis erstellt habe. In diesem Fall wird das Repository-Stammverzeichnis als "blockiert" betrachtet. Dies scheint jedoch keinen Einfluss zu haben.

Schritte zum Reproduzieren:

  1. Überprüfen Sie Ihr Repo 

    svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
    
  2. Überprüfen Sie, ob Ihr Verzeichnis in Ordnung ist

    cd plugin_dir
    svn st -u
    

    Ausgabe sollte sein

    Status against revision: 1234
    
  3. Erstellen Sie den Symlink (der das Problem zeigt) 

    cd ..
    mklink /d link_dir plugin_dir
    cd link_dir
    svn st -u
    

    Ausgabe wird sein

    ~           1234  .
    Status against revision: 1234
    
1

Es gibt verschiedene Variationen des Szenarios, die diese Situation verursachen können. Hier ein Beispiel:

Ich endete mit dem! Markieren Sie ein Verzeichnis, das von www in www_a umbenannt wurde, ohne den Befehl 'svn umbenennen' zu verwenden:

  1. Benennen Sie das aktuelle Verzeichnis, das den ursprünglichen Namen trägt, um, beispielsweise in www_b
  2. Benennen Sie www_a wieder in www um
  3. Stellen Sie sicher, dass Sie 'svn update' oder 'svn revert' im Verzeichnis www ausführen
  4. Löschen Sie das aktuelle www-Verzeichnis ohne mit 'svn delete'
  5. Gehen Sie in das übergeordnete Verzeichnis und geben Sie "svn update" aus.
  6. Dadurch wird das ursprüngliche WWW-Verzeichnis wiederhergestellt
  7. Verwenden Sie diesmal 'svn umbenennen', um www in www_a umzubenennen
  8. Benennen Sie www_b wieder in www um
  9. Verwenden Sie 'svn add', um es dem Repository hinzuzufügen

Sie sollten an dieser Stelle ein korrektes svn-Arbeitsverzeichnis erhalten. Und erfahren Sie, wie Sie die Verwirrung von svn-Verzeichnissen auflösen können.

1
Will

Ich bekomme diesen Status "verdeckt" für Verzeichnisse, wenn ich ein CMS (WordPress oder Drupal) über die Webschnittstelle aktualisiere. Die Anwendung weiß nicht, dass der Code tatsächlich eine Subversion-Arbeitskopie ist. Wenn also ein Plugin aktualisiert wird, wird dieses Plugin entfernt Verzeichnis (einschließlich des .svn-Verzeichnisses) und legt ein neues Verzeichnis aus der neuen Version des Plugins ab.

Um das .svn-Verzeichnis zurückzubekommen, aus dem Verzeichnis, das das blockierte Verzeichnis enthält. Ich checke mit --force. Wenn beispielsweise plugin_dir "~" markiert ist, führe ich in seinem übergeordneten Verzeichnis Folgendes aus:

svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir

Alle bereits vorhandenen Dateien werden in der Ausgabe des Befehls "checkout" ("M" beim Ausführen von svn status als "E" markiert) angezeigt. 

Manchmal muss ich zurückgehen und alle Dateien hinzufügen, die mit dem Update neu waren. oder löschen Sie Dateien, die als Teil des Updates gelöscht werden sollten, da sie nach der Überprüfung wieder angezeigt wurden. Ich glaube, diese sind an der Kasse als "A" markiert, aber ein nachfolgender svn status wird sie nicht erwähnen.

0
larcher

Dies kann auch passieren, wenn Sie Ihre Subversion auf eine Version aktualisieren, die XCode nicht unterstützt.

0
Drew H

Ich bin in Eclipse darauf gestoßen, wo einige Dateien mit einem roten Ausrufezeichen gekennzeichnet waren. Das Problem war ein streunender .svn-Ordner im Quellverzeichnis. Ich löschte den .svn-Ordner, aktualisierte Eclipse und konnte die Dateien einchecken. 

0
bhlowe

Ich habe dieses Problem beim Einfügen eines Ordners mit Unterverzeichnissen in meine Arbeitskopie mit meinem FTP-Client festgestellt. Ich wusste, dass ich es vermasselt hatte, sobald ich auf die Schaltfläche "Übertragen" geklickt habe.

Ich habe alle oben genannten Vorschläge ausprobiert und andere ohne Erfolg online gefunden. Jede Option verursachte den Fehler, dass mein Verzeichnis gesperrt war und die Operation nicht ausgeführt werden konnte.

Ich ging in meine Time Machine-Kopie, stellte das Verzeichnis wieder her und war gut zu gehen. Ich habe die Arbeitskopie vorsichtshalber gesäubert, meine Dateien richtig aktualisiert und war wieder im Geschäft.

0
John McLaughlin

Hier ist der einfachste (und sicherste) Weg, den ich gefunden habe, um das zu beheben:

  1. Benennen Sie vorübergehend die fehlerhafte Datei oder das Verzeichnis (oder ein übergeordnetes Verzeichnis) um, die blockiert sind (z. B. ".backup" hinzufügen).
  2. Löschen Sie alle .svn-Verzeichnisse im umbenannten Verzeichnis (falls zutreffend).
  3. svn revert das umbenannte (und jetzt fehlende) Objekt aus Schritt 1.
  4. svn delete das zurückgegebene Objekt.
  5. Benennen Sie die Sicherung von Schritt 1 wieder in ihren ursprünglichen Namen um.
  6. Fügen Sie das umbenannte Objekt als neues Objekt hinzu und checken Sie es erneut in svn ein.
0
devios1

Wir haben oft mehrere Zweige gleichzeitig unterwegs, um das Wechseln oder Herumspielen mit IIS Konfiguration zu ersparen. Ich verwende dann die Verzeichnisverknüpfung, um diese Ordner wieder mit dem in IIS konfigurierten Hauptpfad zu verbinden. 

Für mich hat das verlinkte Verzeichnis immer ein gelbes Ausrufezeichen und ist als blockiert markiert. Ich glaube, das liegt daran, dass es technisch erstellt/außerhalb von SVN verschoben wurde. 

0
anton

Dies kam mir vor, als ich eine Datei durch einen Ordner ersetzte, der den gleichen Namen hatte. Er löste die alte Datei und bestätige sie. Fügen Sie dann die neue Datei hinzu. Ein wenig hackig, aber bei mir funktionierte sie: )

0
Mihai Costiug