Wie kann das Problem behoben werden, dass in SVN der Verwaltungsbereich für Arbeitskopien fehlt?

184

Ich habe manuell ein Verzeichnis gelöscht, das ich gerade offline in meinem Repository hinzugefügt habe. Ich kann das Verzeichnis nicht wiederherstellen.

Jeder Versuch, ein Update oder ein Commit durchzuführen, schlägt fehl mit:

"blabla/.svn" containing working copy admin area is missing.

Ich verstehe warum, aber gibt es trotzdem, um dies zu beheben.

Ich möchte nicht das gesamte Repo auschecken und meine Änderungen manuell hinzufügen, es würde Stunden dauern.

e-satis
quelle

Antworten:

148

Demnach: http://www.devcha.com/2008/03/svn-directory-svn-containing-working.html

Checken Sie den Ordner "blabla" an einen anderen Speicherort aus und kopieren Sie den .svn-Ordner zurück in das ursprüngliche "blabla".

Kennzeichen
quelle
62
Ich habe so viel SVN. Überall verschmutzte .svnUnterverzeichnisse müssen die schlechteste Idee in der Geschichte der Versionskontrolle gewesen sein.
Johannes Fahrenkrug
9
Leute, schaut euch die folgenden Vorschläge von Rob an, es ist viel einfacher als die aktuelle Lösung.
Mohammad Arif
Mohammed, danke für das Heads-up. Das hat bei mir funktioniert. Ich habe versucht, SVN dazu zu bringen, ein Protokollverzeichnis zu ignorieren, und durch das Löschen von .svn bin ich zu diesem Problem gekommen. Robs Lösung löste es.
Asmor
Johannes, ich bin auch kein Befürworter von SVN, aber der Vorteil der .svn-Verzeichnisse besteht darin, dass Sie Unterverzeichnisse eines Repositorys auschecken und die Versionskontrolle beibehalten können.
Joseph Persie
@MohammadArif, Es gibt jetzt zwei "Robs"
Charles Clayton
123

fwiw, ich hatte eine ähnliche Situation und benutzte svn --force delete __dir__ . Das hat das Problem für mich gelöst. Dann arbeitete ich wie gewohnt weiter mit meiner Arbeitskopie.

Matt Setter
quelle
2
Das hat auch bei mir funktioniert. Aktualisierungen und Bereinigungen sind fehlgeschlagen, da sich das Verzeichnis nie im Repository befand, die Arbeitskopie jedoch sicher war, dass es unter Revisionskontrolle stand. Ich frage mich, ob ich das Verzeichnis hinzugefügt, aber dann gelöscht habe, bevor ich es festgeschrieben habe.
Magnus
1
Das ist sehr gut. Ich hatte ein Verzeichnis hinzugefügt, die .svn gelöscht, aber nie festgeschrieben. Dies hat den Trick vollbracht
Eric
8
Danke dir; Diese Antwort hat mir viel Zeit gespart. svn cleanupdann svn --force delete <directory-that-doesn't-exist-but-should>arbeitete für mich.
Mpontillo
Beim zweiten Versuch habe ich zuerst ohne --force versucht, irgendwie eine Sperrdatei in .svn des übergeordneten Elements zu hinterlassen, die ich manuell entfernen musste. Das zweite Mal mit --force wurde das Problem behoben.
Jörn Horstmann
3
Hm, dieser Befehl gibt mir einfach den gleichen "Arbeitskopie" -Fehler.
Oscar
72

Um dies zu beheben, habe ich die lokale Kopie des betreffenden Ordners gelöscht und anschließend svn updatedirekt eine Kopie des übergeordneten Ordners erstellt .

Es wurde behoben.

Maurizio
quelle
3
Ich kann nicht glauben ... ich habe alles versucht ... und es war einfach so !!! Es hat perfekt funktioniert, vielen Dank !!!!!
Lucaferrario
Dies ist die direkteste Antwort.
Joaerl
35

Können Sie versuchen, eine neue Kopie des übergeordneten Verzeichnisses auszuchecken?

Bearbeiten: Um etwas genauer zu sein, wollte ich vorschlagen, eine Ebene höher zu gehen und das enthaltene Verzeichnis zu löschen. Dann mach a

svn update --set-depth infinity

um das Verzeichnis zu ersetzen.

Rob Wells
quelle
Ich habe das versucht, aber aus irgendeinem seltsamen Grund habe ich ein leeres Verzeichnis. Ich verstehe es nicht ...
e-satis
Ein explizites <code> svn update blabla </ code> des übergeordneten Elements sollte ebenfalls funktionieren.
jmanning2k
@ jmanning2k, das dachte ich auch, aber das OP sagte, dass er es versucht hatte und es nicht funktioniert hatte.
Rob Wells
Zur Verdeutlichung schlug ich --set-depth infinityaus diesem Grund vor: stackoverflow.com/questions/866835/…
Wim Coenen
1
Dies erfordert so viel mehr Upvotes ... schnelle und relativ (für SVN-Standards) saubere Lösung.
Dino
6

Ich habe svn ein Verzeichnis hinzugefügt und dann versehentlich den .svn-Ordner darin gelöscht.

ich benutzte

svn delete --keep-local folderName

um mein Problem zu beheben.

Alexander
quelle
Dies funktionierte für mich, als meine IDE ein Verzeichnis hinzufügte und ich dann ein gleichnamiges Verzeichnis verschoben hatte, bevor es festgeschrieben wurde.
quellish
versuchte dies, konnte es aber immer noch nicht festlegen. Ich habe verwendet, svn checkout --force [url]was den .svn-Ordner neu erstellt hat
Lex
4

Ich habe gerade 'svn revert / blabla' gemacht und es hat funktioniert, der Ordner ist zurück und ich kann ihn svn löschen

Mala
quelle
Vielen Dank. Ich hatte dieses Problem und habe Ihren Vorschlag ausprobiert und es hat funktioniert.
Boric
3

Der Fehler "Verzeichnis 'blah / .svn' mit dem Verwaltungsbereich für Arbeitskopien fehlt" trat auf, als ich versuchte, das Verzeichnis zum Repository hinzuzufügen, aber nicht über ausreichende Dateisystemberechtigungen verfügte. Das Verzeichnis befand sich noch nicht im Repository, behauptete jedoch, nach dem fehlgeschlagenen Hinzufügen unter Versionskontrolle zu stehen.

Durch Auschecken einer Kopie des übergeordneten Verzeichnisses an einen anderen Speicherort und Ersetzen des .svn-Ordners im übergeordneten Verzeichnis der Arbeitskopie konnte ich das neue Verzeichnis erfolgreich hinzufügen und festschreiben (natürlich nach dem Korrigieren der Dateiberechtigungen).

Rob DiCiuccio
quelle
2

Wir benutzen Maven und SVN. Es war ein fehlerhaftes Einchecken des Zielverzeichnisses in SVN, das diesen Fehler verursachte. Das Entfernen hat alles behoben, wenn dieser Hinweis jemandem hilft.

Madu
quelle
Was / von wo genau entfernen?
DerMike
maven erstellt beim Erstellen das "Ziel" -Verzeichnis. Normalerweise soll niemand diesen einchecken. Beim nächsten Check-in wurde beim nächsten Checkout ein Berechtigungsproblem aufgetreten, das diesen Fehler verursachte. Das Entfernen des "Ziel" -Verzeichnisses aus SVN hat das Problem behoben.
Madu
2

Ich habe erfolglos versucht svn rm --force /path/to/dir, bin aber nur gelaufen svn upund es hat es für mich behoben.

Nathan JB
quelle
1

Ich hatte diesen Fehler kürzlich, als die Dateien durch Einstellungen in meinen SVN-Globals ausgeschlossen wurden. Der Fehler war besonders schlimm, da ich die Dateien auch direkt aus dem Repository gelöscht habe - und dies bedeutete, dass die oben genannten Lösungen nicht funktionieren würden. In diesem Fall konnte ich durch manuelles Löschen des .svn-Verzeichnisses aus dem Verzeichnis, das ich aus SVN entfernt habe, ein Update ausführen, das mir dann das Festschreiben ermöglichte.

Casebash
quelle
1

Ich hatte das gleiche Problem, als ich versuchte, "C: \ superfolder" zu wechseln.

Fehlermeldungen:

Directory 'C:\superfolder\subfolder\.svn'
containing
working copy admin area is missing
Please execute the 'Cleanup' command.

Nachdem ich versucht habe, eine "Bereinigung" durchzuführen, wurde der folgende Fehler angezeigt:

 Cleanup failed to process the following paths:
 C:\superfolder\
'C:\superfolder\subfolder\' is not a working copy directory

Lösung:

  1. Löschen Sie den Ordner "Unterordner"
  2. Bereinigen Sie den Ordner "Superfolder"
  3. Versuchen Sie erneut, den Ordner "Superordner" zu wechseln.

das hat bei mir funktioniert. Bitte lassen Sie mich wissen, ob es auch für Sie funktioniert.

Andreas
quelle
1

Ich hatte diesen Fehler vor kurzem. Dies wurde dadurch verursacht, dass root einige Dateien im Verzeichnis besaß, die diesen Fehler verursachten.

Nachdem ich die Berechtigungen geändert hatte, funktionierte alles wie erwartet.

JJ
quelle
1

Ich habe nicht viel von deinen Posts verstanden. Meine Lösung ist

  1. Schneiden Sie den problematischen Ordner aus und kopieren Sie ihn an einen Speicherort.
  2. Holen Sie sich die Lösung von Subversion in ein anderes Arbeitsverzeichnis (nur ein neues).
  3. Fügen Sie Ihren gespeicherten Ordner zur neuen Arbeitskopie hinzu und fügen Sie ihn als vorhandenes Projekt hinzu (wenn es sich um ein Projekt wie in meinem Fall handelt).
  4. Verpflichten;
M'vy
quelle
1

Ich hatte dieses Problem. Verschieben Sie blabla einfach vorübergehend an einen anderen Ort, weisen Sie svn an, es zurückzusetzen, und verschieben Sie es dann zurück. Es wird als Neuzugang behandelt. Einfach!

Bor
quelle
1

Das Einfachste, das mir geholfen hat:

rm -rf _dir_in_question_
svn up

Wenn Sie Änderungen im problematischen Verzeichnis haben, ist dies keine gute Lösung für Sie.

allprog
quelle
1

Dieses Problem trat beim Ersetzen einer API-Bibliothek eines Drittanbieters durch eine neuere Version auf, und keine der hier aufgeführten Lösungen funktionierte wirklich für mich, da ich die SVN-Version durch die lokale Version ersetzen wollte. Meine Lösung war wie folgt:

1) Verschieben Sie den fehlerhaften Ordner in mein Ausgangsverzeichnis, löschen Sie ihn aus dem SVN und schreiben Sie Folgendes fest:

mv foldercausingproblem ~/
svn --force delete foldercausingproblem
svn commit --message "Temporary removing folder with old API"

2) Legen Sie den Ordner zurück, fügen Sie ihn dem SVN hinzu und schreiben Sie ihn erneut fest:

mv ~/foldercausingproblem ./
svn --force add .
svn commit --message "Finally all working!"

Etwas irritierend, zweimal begehen zu müssen, aber es scheint gut funktioniert zu haben.

Jamie Brown
quelle
Im Allgemeinen arbeite ich gerne getrennt von meiner Arbeitskopie des Repos an Code (IDEs, Compiler, Fehlerparser usw. mögen .svn nicht, und in Eclipse afaik gibt es keinen Befehl 'EVERYONE IGNORE .SVNs EXCEPT SVN!'). Dies bedeutet, dass der grundlegende SVN-Festschreibungsprozess für mich wie folgt lautet: 1. Arbeitskopie von Repo auschecken 2. Stammverzeichnis des Projekts löschen Ich habe ein Update für 3. Aktualisiertes Projektverzeichnis kopieren und in das übergeordnete Verzeichnis des Projekts in Arbeitskopie einfügen 4. svn add --force <Projname> 5. Festschreiben. Dies funktioniert normalerweise, kann aber gelegentlich den OP-Fehler auslösen. Jamie Browns Fix hat in meinem Fall funktioniert
CCJ
0

Nur für den Fall, dass jemand noch eine andere Lösung wünscht:

  1. Checken Sie Ihren neuen Ordner als "Ordnername2" ein.
  2. Gehen Sie in den Tortise SVN Repo Browser
  3. Benennen Sie "Ordnername2" in "Ordnername" um
  4. Führen Sie im Windows Explorer ein Update durch

Hoffe es hilft jemandem.

-Ev

Ev.
quelle
eine Windows-Lösung.
Raptor
0

Für mich passierte das gleiche Problem, als ich beide:

  • gelöscht ( --force) eine .map-Datei
  • * .map zu svn:ignorevia hinzugefügtsvn propedit svn:ignore .

Meine Lösung war:

  1. Änderungen an der Eigenschaft rückgängig machen
  2. Änderungen an den Dateien festschreiben
  3. Checke eine neue Kopie des Repositorys aus (leider!)
  4. Ändern Sie die Eigenschaft und legen Sie fest
18446744073709551615
quelle
0

Ich hatte dieses Problem, als ich versuchte, ein Verzeichnis zu svn hinzuzufügen. Ich habe es gelöst, indem ich in den Repo-Browser gegangen bin. Klicken Sie mit der rechten Maustaste in das linke Fenster, wählen Sie Ordner hinzufügen und fügen Sie das Verzeichnis direkt im Repo-Browser hinzu.

Ich habe dann das Verzeichnis lokal gelöscht (natürlich nach dem Backup), eine Bereinigung und ein SVN-Update durchgeführt und alles hat wieder funktioniert.

Speck
quelle
Ich könnte hinzufügen, dass dies zu meiner "svn sucks" -Datei hinzugefügt wird.
Speck
0

Überprüfen Sie zunächst das Projekt in einem Ordner in Ihrem System. Entfernen Sie dann den .svn-Ordner aus dem Konfliktprojekt, kopieren Sie den .svn-Ordner aus dem neuen Checkout-Ordner und fügen Sie ihn in Ihren Arbeitskopienordner ein. Dann ist das Problem gelöst.

Jaideep Singh Raikwar
quelle
0

Eine häufige Aufgabe bestand darin, ein Repo-Verzeichnis beim Staging in ein anderes Repo zu kopieren - beide unter SVN und beide mit demselben Namen. Die Art und Weise, wie ich gearbeitet habe, war folgende:

svn --force delete PROBLEMATIC-DIR
svn export "https://OLD REPO-A/ new-repo-A"
svn add new-repo-A
svn commit new-repo-A
texasdave
quelle