Metodo SVN 405 non consentito


122

Ho cancellato accidentalmente una cartella in SVN e l'ho aggiunta immediatamente. Ho riscontrato un problema con questo e la mia soluzione ha finito per rimuovere completamente la cartella dalla mia copia locale e dalla copia del server. Posso eseguire aggiornamenti e commit senza problemi su qualsiasi altro file o cartella, ma se provo a creare una cartella con lo stesso nome, aggiungere e eseguire il commit, mi dà il seguente errore:

svn: il server ha inviato un valore di ritorno imprevisto (metodo 405 non consentito) in risposta alla richiesta MKCOL per "/ svn / www /! svn / wrk / 9de0d765-2203-456c-af16-58e792ec7ac0 / trunk / htdocs / solutions / medical"

Ho eseguito innumerevoli pulizie, commit, aggiornamenti, ecc. Niente risolve il problema. Idee?

Cordiali saluti, non ho la possibilità di rinominare la cartella di primo livello.


Ho provato a fare lo stesso durante il tentativo di rimuovere una sottodirectory in modo da poterlo ignorare correttamente. In qualche modo si è risolto da solo e non so quale arcana combinazione di elementi abbia coinciso per consentirlo, quindi ho scartato la mia domanda. Il mio nuovo è: perché non lo usiamo tutti git?
icedwater

Risposte:


170

La mia ipotesi è che la cartella che stai cercando di aggiungere esista già in SVN. Puoi confermare controllando i file in una cartella diversa e vedere se il trunk ha già la cartella richiesta.


1
L'ho verificato su un'altra versione verificata. Perché la mia copia di lavoro non si aggiorna con essa, non posso determinarla.
roadunknown

1
Era il caso anche qui, ma ho dovuto controllare la cartella in una cartella separata (o meglio, l'ho rinominata "foo" e svn up'd e l'ho recuperata, inclusa la cartella "cancellata", nonostante il mio commit riuscito di cancellarlo.)
Kalle

1
@ Shaji: capisco il tuo caso. Ma come posso ancora impegnarmi a causa di questo errore? O c'è comunque da fare, per favore dimmelo. Grazie.
Huy Tower,

1
Eseguire un aggiornamento SVN sulla cartella, quindi riprovare a eseguire il commit.
Alex R

Questo è un fastidioso errore. Ho controllato un nuovo repository da Github e ho eseguito il commit di una nuova cartella. Mostra sempre lo stesso errore. Ho provato la tua soluzione ma non funziona.
emeraldhieu

56

Il modo più rapido per risolverlo era duplicare la cartella interessata e salvarla con un nome alternativo. Allora svn mv duplicateFolder originalFolder. Molto facile.

Quindi, prendi cartella1 e crea una cartella1Copia:

svn delete folder1
svn add folder1Copy

Impegnati e aggiorna:

svn mv folder1Copy/ folder1/

Impegnati di nuovo ed è risolto.


6
Questo ha funzionato alla grande per me ed è molto più semplice che gestire una seconda copia funzionante.
Justin

Si spera che commit & updatenon sia una riga di comando letterale ... in Unix che proverebbe a fare entrambe le cose in parallelo.
LarsH

1
Brillante buon signore, se venite a Sunnyvale e in qualche modo mi trovate, vi offrirò un caffè.
Michael Voznesensky

10

La mia cartella "scomparsa" era libraries/fof.

Se lo cancellassi e poi eseguissi un aggiornamento, non verrebbe visualizzato.

cd libaries
svn up

(non succede niente).

Ma l'aggiornamento con il nome effettivo:

svn update fof

ha fatto il trucco ed è stato aggiornato. Quindi ho fatto esplodere la mia copia di lavoro (archiviata manualmente in tar) su di esso e ho ricominciato. La soluzione più semplice.


D'accordo che questo è il più semplice. Basta fare "svn up [cartella]" invece di "svn up".
Dimitris

Questa soluzione è quella che ha funzionato per me. Grazie.
Miguel Rentes

4

Ho appena risolto questo problema nel mio repository. Sto usando TortoiseSVN su Windows, quindi non sono sicuro di quali comandi si traduca esattamente nella riga di comando, ma ecco cosa ho fatto:

La cartella problematica viene chiamata libe doveva essere aggiunta.

  • Per prima cosa ho annullato l'aggiunta, in modo che SVN non prestasse più attenzione.
  • Quindi l'ho rinominato (in libs, non che sia importante) utilizzando il menu di scelta rapida di Windows, l'ho aggiunto e ho eseguito correttamente il commit.
  • Alla fine l'ho rinominato di nuovo libusando il menu contestuale di TortoiseSVN (questo è probabilmente importante) e ho eseguito nuovamente il commit.

3

Ho anche incontrato questo problema proprio ora e l'ho risolto in questo modo. Quindi l'ho registrato qui e vorrei che fosse utile per gli altri.

Scenario:

  1. Prima di eseguire il commit del codice, revisione: 100
  2. (Qualcun altro esegue il commit del codice ... revisione aumentata a 199)
  3. Ho (dimenticato di eseguire "svn up",) ho eseguito il commit del codice, ora la mia revisione: 200
  4. Corro "svn up".

L'errore si è verificato.

Soluzione:

  1. $ mv current_copy copy_back # Rinomina la copia del codice corrente
  2. $ svn checkout current_copy # Controlla di nuovo
  3. $ cp copy_back / current_copy # Ripristina le modifiche

3

Ho avuto un problema simile. Ho finito per estrarlo dall'orbita e nel processo ho perso la mia storia SVN. Ma almeno ho fatto sparire quel dannato errore.

Questa è probabilmente una sequenza subottimale di comandi da eseguire, ma dovrebbe seguire abbastanza da vicino la sequenza di comandi che ho effettivamente fatto per far funzionare le cose:

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"

È l'unico modo per essere sicuri.
TomDestry

1

Se utilizzi code.google.comper ospitare il tuo repository Subversion.

Sai sotto le cose, giusto?

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

L'errore che hai menzionato esattamente stai usando lo Non-members may check out a read-only working copy anonymously over HTTPstato. Pertanto, non puoi impegnarti o fare nulla fino ad ora.

Devi usare la Project members authenticate over HTTPS to allow committing changescosa.

Adesso andrà tutto bene.


0

Ho riscontrato lo stesso problema e sono stato in grado di risolverlo:

  1. Copia la cartella in un altro posto.
  2. Elimina .svn dalla cartella copiata
  3. Fare clic con il tasto destro sulla cartella originale e selezionare "SVN Checkout"
  4. Se non riesci a trovare (3), il tuo caso è diverso dal mio.
  5. Verificare che la directory sul REPO-BROWSER sia corretta. Per il mio caso, questa era la causa.
  6. Check-out
  7. Recupera i file dalla cartella copiata nella directory originale.
  8. Commettere.

0

Ciò significa che la cartella / file che stai cercando di mettere su svn esiste già lì. Il mio consiglio è che prima di fare qualsiasi cosa fai clic con il pulsante destro del mouse sulla cartella / file e fai clic su repo-browser. In questo modo potrai vedere tutti i file / sottocartelle ecc che sono già presenti su svn. Se il file / cartella richiesto non è presente su svn, è sufficiente eliminare (dopo aver eseguito il backup) il file che si desidera aggiungere e quindi eseguire un aggiornamento.


0

La directory attualmente aggiunta è già impegnata nel repository. Quindi elimina la directory nel repository e salva di nuovo la stessa directory.


0

Ho ricevuto questo errore perché ho sostituito l'indirizzo URL con uno nuovo che finisce con "/". I record di media in wc.db database in .svn cartelle nella tabella repository.

Quando ho rimosso il segno: "/", l'errore è scomparso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.