SVN 405-Methode nicht zulässig

122

Ich habe versehentlich einen Ordner in SVN gelöscht und ihn sofort wieder hinzugefügt. Ich hatte ein Problem damit und meine Lösung entfernte den Ordner vollständig von meiner lokalen Kopie sowie von der Serverkopie. Ich kann Aktualisierungen und Festschreibungen ohne Probleme für andere Dateien oder Ordner durchführen. Wenn ich jedoch versuche, einen Ordner mit demselben Namen zu erstellen, hinzuzufügen und festzuschreiben, wird der folgende Fehler angezeigt:

svn: Der Server hat einen unerwarteten Rückgabewert (405-Methode nicht zulässig) als Antwort auf die MKCOL-Anforderung für '/ svn / www /! svn / wrk / 9de0d765-2203-456c-af16-58e792ec7ac0 / trunk / htdocs / solutions / medical' gesendet.

Ich habe unzählige Bereinigungen, Commits, Updates usw. durchgeführt. Nichts behebt das Problem. Ideen?

Zu Ihrer Information, ich habe nicht die Möglichkeit, den Ordner der obersten Ebene umzubenennen.

Straßen unbekannt
quelle
Ich habe versucht, dasselbe zu tun, während ich versucht habe, ein Unterverzeichnis zu entfernen, damit ich es richtig ignorieren kann. Irgendwie hat es sich von selbst gelöst und ich weiß nicht wirklich, welche arkane Kombination der Elemente zusammenfiel, um dies zu ermöglichen, also habe ich meine Frage verworfen. Mein neues ist: Warum benutzen wir nicht alle git?
Eiswasser

Antworten:

170

Ich vermute, dass der Ordner, den Sie hinzufügen möchten, bereits in SVN vorhanden ist. Sie können dies bestätigen, indem Sie die Dateien in einem anderen Ordner auschecken und prüfen, ob der Trunk bereits über den erforderlichen Ordner verfügt.

Sharjeel Aziz
quelle
1
Ich habe dies bei einer anderen ausgecheckten Version überprüft. Warum meine Arbeitskopie nicht aktualisiert wird, kann ich nicht feststellen.
Straßen unbekannt
1
War auch hier der Fall, aber ich musste den Ordner in einem separaten Ordner auschecken (oder besser gesagt, ich habe ihn in "foo" umbenannt und svn up'd und ihn trotz meines erfolgreichen Commits zurückbekommen, einschließlich des "gelöschten" Ordners es zu löschen.)
Kalle
1
@ Shaji: Ich verstehe deinen Fall. Aber wie kann ich aufgrund dieses Fehlers noch festgeschrieben werden? Oder es gibt sowieso zu tun, bitte sag es mir. Vielen Dank.
Huy Tower
1
Führen Sie ein SVN-Update für den Ordner durch, und versuchen Sie dann erneut, das Commit durchzuführen.
Alex R
Dies ist ein ärgerlicher Fehler. Ich habe ein neues Repository von Github ausgecheckt und einen neuen Ordner festgeschrieben. Es wird immer der gleiche Fehler angezeigt. Versuchte Ihre Lösung, aber es funktioniert nicht.
Smaragdhieu
56

Der schnellste Weg, dies zu beheben, bestand darin, den betroffenen Ordner zu duplizieren und ihn mit einem alternativen Namen festzuschreiben. Dann svn mv duplicateFolder originalFolder. Ziemlich einfach.

Nehmen Sie also Ordner1 und erstellen Sie einen Ordner1Copy:

svn delete folder1
svn add folder1Copy

Festschreiben und aktualisieren:

svn mv folder1Copy/ folder1/

Commit erneut und es ist behoben.

TuK
quelle
6
Das hat bei mir sehr gut funktioniert und ist viel einfacher als der Umgang mit einer zweiten Arbeitskopie.
Justin
Hoffentlich commit & updateist es keine wörtliche Befehlszeile ... unter Unix, die versuchen würde, beides parallel zu tun.
LarsH
1
Genialer Herr, wenn Sie nach Sunnyvale kommen und mich irgendwie finden, werde ich Ihnen Kaffee kaufen.
Michael Voznesensky
10

Mein "verschwundener" Ordner war libraries/fof.

Wenn ich es löschte und dann ein Update ausführte, wurde es nicht angezeigt.

cd libaries
svn up

(nichts passiert).

Aber Aktualisierung mit dem tatsächlichen Namen:

svn update fof

hat den Trick gemacht und es wurde aktualisiert. Also habe ich meine (manuell tar-archivierte) Arbeitskopie darüber aufgelöst und erneut festgeschrieben. Einfachste Lösung.

Riccardo Zorn
quelle
Stimmen Sie zu, dass dies am einfachsten ist. Führen Sie einfach "svn up [Ordner]" anstelle von "svn up" aus.
Dimitris
Diese Lösung hat bei mir funktioniert. Danke dir.
Miguel Rentes
4

Ich habe das gerade in meinem eigenen Repository behoben. Ich verwende TortoiseSVN unter Windows, daher bin ich mir nicht sicher, in welche Befehle dies in der Befehlszeile übersetzt wird, aber ich habe Folgendes getan:

Der problematische Ordner wird aufgerufen libund sollte hinzugefügt werden.

  • Zuerst habe ich das Hinzufügen rückgängig gemacht, damit SVN nicht mehr darauf achtet.
  • Dann habe ich es libsüber das Windows-Kontextmenü umbenannt ( nicht wichtig), es hinzugefügt und erfolgreich festgeschrieben.
  • Schließlich habe ich es wieder in libdas Kontextmenü von TortoiseSVN umbenannt (dies ist wahrscheinlich wichtig) und erneut festgeschrieben.
andronikus
quelle
3

Ich bin auch gerade auf dieses Problem gestoßen und habe es auf diese Weise gelöst. Also habe ich es hier aufgenommen und ich wünschte, es wäre nützlich für andere.

Szenario:

  1. Bevor ich den Code festschreibe, Revision: 100
  2. (Jemand anderes schreibt den Code fest ... Revision auf 199 erhöht)
  3. Ich (vergessen, "svn up" auszuführen) habe den Code festgeschrieben, jetzt meine Revision: 200
  4. Ich starte "svn up".

Der Fehler ist aufgetreten.

Lösung:

  1. $ mv current_copy copy_back # Benennt die aktuelle Codekopie um
  2. $ svn checkout current_copy # Überprüfen Sie es erneut
  3. $ cp copy_back / current_copy # Stellen Sie Ihre Änderungen wieder her
Siwei Shen 申思维
quelle
3

Ich hatte ein ähnliches Problem. Am Ende habe ich es aus dem Orbit geholt und dabei meine SVN-Geschichte verloren. Aber zumindest habe ich diesen verdammten Fehler verschwinden lassen.

Dies ist wahrscheinlich eine suboptimale Folge von Befehlen, die ausgeführt werden sollen, aber sie sollte ziemlich genau der Folge von Befehlen folgen, die ich tatsächlich ausgeführt habe, um die Dinge zum Laufen zu bringen:

cp -rp target ~/other/location/target-20111108
svn rm target --force
cp -rp ~/other/location/target-20111108 target-other-name
cd target-other-name
find . -name .svn -print | xargs rm -rf
cd ..
svn add target-other-name
svn ci -m "Re-re-re-re-re-re-re-re-re-re import target"
svn mv target-other-name target
svn ci -m "Re-re-re-re-re-re-re-re-re-re import target"
Brad Knowles
quelle
Nur so können Sie sicher sein.
TomDestry
1

Wenn Sie code.google.comIhr Subversion-Repository hosten.

Sie wissen unten Dinge, richtig?

If you plan to make changes, use this command to check out the code as yourself using HTTPS:

# Project members authenticate over HTTPS to allow committing changes.
svn checkout https://.../svn/trunk/ user-...

When prompted, enter your generated googlecode.com password.
Use this command to anonymously check out the latest project source code:

# Non-members may check out a read-only working copy anonymously over HTTP.
svn checkout http://.../svn/trunk/ ...-read-only

Der Fehler, den Sie genau erwähnt haben, verwenden Sie Non-members may check out a read-only working copy anonymously over HTTPstatus. Daher können Sie bisher nichts festlegen oder tun.

Du musst etwas benutzen Project members authenticate over HTTPS to allow committing changes.

Es wird jetzt gut.

Huy Tower
quelle
0

Ich bin auf dasselbe Problem gestoßen und konnte es beheben durch:

  1. Kopieren Sie den Ordner an einen anderen Ort.
  2. Löschen Sie .svn aus dem kopierten Ordner
  3. Klicken Sie mit der rechten Maustaste auf den Originalordner und wählen Sie "SVN Checkout".
  4. Wenn Sie (3) nicht finden können, ist Ihr Fall anders als meiner.
  5. Überprüfen Sie, ob das Verzeichnis auf dem REPO-BROWSER korrekt ist. Für meinen Fall war dies die Ursache.
  6. Auschecken
  7. Holen Sie sich die Dateien aus dem kopierten Ordner in das ursprüngliche Verzeichnis zurück.
  8. Verpflichten.
awan.soekamto
quelle
0

Dies bedeutet, dass der Ordner / die Datei, die Sie auf svn ablegen möchten, dort bereits vorhanden ist. Mein Rat ist, bevor Sie etwas tun, klicken Sie einfach mit der rechten Maustaste auf den Ordner / die Datei und dann auf den Repo-Browser. Auf diese Weise können Sie alle Dateien / Unterordner usw. anzeigen, die bereits auf svn vorhanden sind. Wenn die erforderliche Datei / der erforderliche Ordner nicht auf dem SVN vorhanden ist, löschen Sie einfach (nach dem Sichern) die Datei, die Sie hinzufügen möchten, und führen dann ein Update aus.

Kaveesh Kanwal
quelle
0

Das aktuell hinzugefügte Verzeichnis ist bereits im Repository festgeschrieben. Löschen Sie also das Verzeichnis im Repository und schreiben Sie dasselbe Verzeichnis erneut fest.

Saravanabawa
quelle
0

Ich habe diesen Fehler erhalten, weil ich die URL-Adresse durch eine neue ersetzt habe, die mit "/" endet. Ich meinen Rekord in wc.db Datenbank in .svn Ordnern in Repository - Tabelle.

Als ich das Zeichen "/" entfernte, verschwand der Fehler.

Bronek
quelle