Método SVN 405 não permitido

122

Apaguei acidentalmente uma pasta no SVN e a adicionei imediatamente. Corri um problema com isso e minha solução acabou removendo completamente a pasta da minha cópia local e da cópia do servidor. Posso fazer atualizações e confirmações sem problemas em qualquer outro arquivo ou pasta, mas se eu tentar criar uma pasta com o mesmo nome, adicionar e confirmar, isso me dará o seguinte erro:

svn: O servidor enviou um valor de retorno inesperado (Método 405 não permitido) em resposta à solicitação do MKCOL para '/ svn / www /! svn / wrk / 9de0d765-2203-456c-af16-58e792ec7ac0 / trunk / htdocs / solutions / medical'

Eu executei inúmeras limpezas, confirmações, atualizações etc. Nada resolve o problema. Ideias?

Para sua informação, não tenho a opção de renomear a pasta de nível superior.

desconhecido
fonte
Tentei fazer o mesmo enquanto tentava remover um subdiretório para poder ignorá-lo corretamente. De alguma forma, isso se resolveu e eu realmente não sei qual combinação misteriosa dos elementos coincidiu para permitir isso, então descartei minha pergunta. Meu novo é: por que nem todos usamos git?
Icedwater

Respostas:

170

Meu palpite é que a pasta que você está tentando adicionar já existe no SVN. Você pode confirmar consultando os arquivos em uma pasta diferente e ver se o tronco já possui a pasta necessária.

Sharjeel Aziz
fonte
1
Eu verifiquei isso em outra versão com check-out. Por que minha cópia de trabalho não foi atualizada com ela, não posso determinar.
roadsunknown 31/08/10
1
Foi o caso aqui também, mas eu tive que fazer check-out da pasta em uma pasta separada (ou melhor, renomei-a como "foo" e svn up'd e a recuperei, incluindo a pasta "excluída", apesar da confirmação bem-sucedida de excluí-lo).
Kalle
1
@ Shaji: Eu entendo o seu caso. Mas como ainda posso ser comprometido devido a esse erro? Ou há qualquer maneira de fazer, por favor me diga. Obrigado.
Huy Tower
1
Faça uma atualização SVN na pasta e tente a confirmação novamente.
Alex R
Este é um erro irritante. Fiz o check-out de um novo repositório no Github e confirmei uma nova pasta. Sempre mostra o mesmo erro. Tentei sua solução, mas ela não funciona.
Emeraldhieu 6/07/15
56

A maneira mais rápida de corrigi-lo foi duplicar a pasta afetada e confirmar com um nome alternativo. Então svn mv duplicateFolder originalFolder. Bem fácil.

Então, pegue a pasta1 e faça uma pasta1

svn delete folder1
svn add folder1Copy

Confirmar e atualizar:

svn mv folder1Copy/ folder1/

Confirme novamente e está consertado.

TuK
fonte
6
Isso funcionou muito bem para mim e é muito mais simples do que lidar com uma segunda cópia de trabalho.
25412 Justin
Espero que commit & updatenão seja uma linha de comando literal ... no Unix, que tentaria fazer as duas coisas em paralelo.
LarsH #
1
Brilhante bom senhor, se você vier a Sunnyvale e de alguma forma me encontrar, eu comprarei café para você.
Michael Voznesensky
10

Minha pasta "desapareceu" era libraries/fof.

Se eu o excluísse e executasse uma atualização, ela não apareceria.

cd libaries
svn up

(nada acontece).

Mas atualizando com o nome real:

svn update fof

fez o truque e foi atualizado. Então, eu explodai minha cópia de trabalho (arquivada manualmente) e recomecei. Solução mais fácil.

Riccardo Zorn
fonte
Concorde que este é o mais fácil. Apenas faça "svn up [folder]" em vez de "svn up".
precisa
Essa solução é a que funcionou para mim. Obrigado.
Miguel Rentes
4

Eu apenas consertei isso no meu próprio repositório. Estou usando o TortoiseSVN no Windows, então não tenho certeza exatamente com quais comandos isso se traduz na linha de comando, mas aqui está o que eu fiz:

A pasta problemática é chamada libe deveria ser adicionada.

  • Primeiro, desfiz o add, para que o SVN não estivesse mais prestando atenção nele.
  • Em seguida, renomei-o (para libsnão que isso importe) usando o menu de contexto do Windows, adicionei-o e confirmei com êxito.
  • Finalmente, mudei o nome para libo menu de contexto do TortoiseSVN (isso provavelmente é importante) e o cometi novamente.
andronikus
fonte
3

Eu também encontrei esse problema agora e o resolvi dessa maneira. Então, gravei aqui e desejo que seja útil para outros.

Cenário:

  1. Antes de confirmar o código, revisão: 100
  2. (Outra pessoa confirma o código ... a revisão aumentou para 199)
  3. Eu (esqueci de rodar "svn up",) cometer o código, agora minha revisão: 200
  4. Eu corro "svn up".

O erro ocorreu.

Solução:

  1. $ mv current_copy copy_back # Renomeie a cópia de código atual
  2. $ svn checkout current_copy # Confira novamente
  3. $ cp copy_back / current_copy # Restaurar suas modificações
Siwei Shen 申思维
fonte
3

Eu tive um problema parecido. Acabei tirando a nuking da órbita e perdi minha história SVN no processo. Mas pelo menos cometi esse maldito erro.

Esta é provavelmente uma sequência subótima de comandos a serem executados, mas deve seguir de perto a sequência de comandos que eu realmente fiz para que as coisas funcionassem:

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
fonte
É a única maneira de ter certeza.
TomDestry 29/05
1

Se você usa code.google.compara hospedar seu repositório Subversion.

Você sabe abaixo as coisas, certo?

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

O erro que você mencionou exatamente está usando o Non-members may check out a read-only working copy anonymously over HTTPstatus. Portanto, você não pode confirmar ou fazer nada até agora.

Você deve usar Project members authenticate over HTTPS to allow committing changescoisa.

Vai ficar tudo bem agora.

Torre Huy
fonte
0

Encontrei o mesmo problema e pude corrigi-lo:

  1. Copie a pasta para outro local.
  2. Excluir .svn da pasta copiada
  3. Clique com o botão direito do mouse na pasta original e selecione 'SVN Checkout'
  4. Se você não conseguir encontrar (3), seu caso é diferente do meu.
  5. Veja se o diretório no REPO-BROWSER está correto. Para o meu caso, essa foi a causa.
  6. Verificação de saída
  7. Volte os arquivos da pasta copiada para o diretório original.
  8. Confirmar.
awan.soekamto
fonte
0

Isso significa que a pasta / arquivo que você está tentando colocar no svn já existe lá. Meu conselho é que, antes de fazer qualquer coisa, clique com o botão direito na pasta / arquivo e clique em repo-browser. Ao fazer isso, você poderá ver todos os arquivos / subpastas, etc, que já estão presentes no svn. Se o arquivo / pasta necessário não estiver presente no svn, você simplesmente exclui (após fazer o backup) o arquivo que deseja adicionar e, em seguida, executa uma atualização.

Kaveesh Kanwal
fonte
0

O diretório adicionado no momento já está confirmado no repositório. Portanto, exclua o diretório no repositório e confirme o mesmo diretório novamente.

saravanabawa
fonte
0

Eu recebi esse erro porque substituí o endereço URL por um novo, terminando com "/". Quero dizer registro no banco de dados wc.db na pasta .svn na tabela REPOSITORY.

Quando removi o sinal: "/", o erro desapareceu.

Bronek
fonte