Eu recebo esse erro quando faço um svn update
:
Cópia de trabalho XXXXXXXX bloqueada Por favor, execute o comando "Limpeza"
Quando executo a limpeza, recebo
A limpeza falhou ao processar os seguintes caminhos: XXXXXXXX
Como saio desse loop?
Eu recebo esse erro quando faço um svn update
:
Cópia de trabalho XXXXXXXX bloqueada Por favor, execute o comando "Limpeza"
Quando executo a limpeza, recebo
A limpeza falhou ao processar os seguintes caminhos: XXXXXXXX
Como saio desse loop?
Respostas:
Uma abordagem seria:
Outra opção seria excluir a pasta de nível superior e fazer check-out novamente. Espero que não chegue a isso embora.
Para mim, o truque era executar svn cleanup
na parte superior da minha cópia de trabalho, não na pasta em que eu trabalhava o tempo todo antes que o problema ocorresse.
Procure na sua .svn
pasta, haverá um arquivo nela chamado lock
. Exclua esse arquivo e você poderá atualizar. Pode haver mais arquivos de bloqueio no .svn
diretório de cada subdiretório. Eles precisarão ser excluídos também. Isso pode ser feito como um lote simplesmente na linha de comando, por exemplo
find . -name 'lock' -exec rm -v {} \;
Observe que você está editando arquivos manualmente na .svn
pasta. Eles foram colocados lá por uma razão. Esse motivo pode ser um erro, mas se não, você pode danificar sua cópia local.
find . | grep ".svn/lock" | xargs rm
No meu caso, resolvi-o excluindo manualmente um registro no registro de bloqueio de arquivo SQLite ".svn \ wc" na tabela WC_LOCK.
Abri o arquivo "WC" com o editor SQLite e executei
delete from WC_LOCK
Após o comentário de eakkas , talvez seja necessário excluir todas as entradas da WORK_QUEUE
tabela também.
A maneira mais fácil de todas:
Clean up working copy status
, Break locks
, Fix time stamps
, Vacuum pristine copies
, Refresh shell overlays
,Include externals
Você fez seu trabalho com sucesso.
Verifique as capturas de tela para sua referência.
Primeiro passo:
Segunda etapa: ative a opção Break lock (segunda caixa de seleção na janela pop-up de limpeza)
Espero que isso ajude muito.
Um colega no trabalho vê constantemente essa mensagem e, para ele, é porque ele excluiu um diretório sob o controle de versão SVN sem excluí-lo do SVN e, em seguida, criou um novo diretório em seu lugar, não sob controle de versão, com o mesmo nome.
Se este for o seu problema ...:
Existem diferentes maneiras de corrigi-lo, dependendo de como / por que o diretório foi substituído.
De qualquer forma, você provavelmente precisará:
A) Renomeie o diretório existente para um nome temporário
B) Faça um SVN reverter para recuperar o diretório excluído do sistema de arquivos, mas não do SVN
A partir daí, você
A) Copie os arquivos relevantes para o diretório que foi excluído
B) Se você teve uma mudança significativa de conteúdo no diretório, faça uma exclusão do SVN no original, confirme e renomeie seu novo diretório para o nome desejado, seguido de uma adição do SVN para colocá- lo sob controle de versão.
Para mim, nenhuma das soluções acima funcionou. Encontrei uma solução quebrando bloqueios. Quando realizei a limpeza do svn, selecionei "Break Locks" juntamente com "Clean up status da cópia de trabalho".
Este funcionou para mim.
Após a limpeza, você poderá atualizar para a versão mais recente.
Clean up working copy status
e Breaks locks
eInclude externals
Para mim, foi realmente culpa da Tortoise, mais ou menos. O Tortoise apenas reclamou "não pode limpar, executar limpeza", mas quando eu executei a linha de comando (svn cleanup), ele me disse claramente que não podia excluir alguns arquivos que estavam em uso, cuja solução era óbvia. Depois que fechei o Visual Studio (que mantinha os arquivos abertos), a limpeza funcionou bem.
Outros programas também podem manter os arquivos abertos no repositório, causando esse problema. O Excel mantendo um xls aberto foi o culpado em outra instância, portanto, pode ser aconselhável fechar todos os programas que possam estar usando qualquer coisa no repositório ou até mesmo reiniciar para forçar o fechamento de programas e tentar a limpeza novamente.
Eu tive esse problema porque pastas externas não desejam ser vinculadas a uma pasta existente. Se você adicionar uma linha de propriedade svn: externals em que o destino é uma pasta existente (com ou sem versão), você obterá o erro bloqueado de cópia de armazenamento em SVN. Aqui, uma limpeza também informa que tudo está bem, mas a atualização ainda não funcionará.
Solução: exclua a pasta problemática do repositório e faça uma atualização na pasta raiz onde a propriedade svn: externals está configurada. Isso criará a pasta e tudo ficará bem novamente.
Esse problema surgiu para mim porque o svn: externals for files exige que a pasta de destino seja controlada por versão. Depois que notei que isso não funciona em diferentes repositórios, troquei de arquivos externos para pastas externas e entrei nessa bagunça.
A maneira mais fácil de fazer isso é mostrar pastas ocultas e abrir a pasta .SVN. Você deve ver um arquivo de zero KB chamado "lock", excluindo isso corrigirá o problema
Encontrei exatamente o mesmo problema usando o SVN 1.7 e nenhuma das correções mencionadas acima funcionou.
Em primeiro lugar, certifique-se de fazer backup de todo o seu conteúdo editado.
Depois de passar algumas horas (não fiz o download novamente de tudo porque meu ramo tem mais de 6 GB), descobri que havia um arquivo db chamado "wc" na pasta .svn do seu ramo.
Abra o arquivo db usando qualquer gerenciador de banco de dados (usei o plugin sqlite manager do firefox) e navegue até a tabela WC_LOCK. Esta tabela terá as entradas para os bloqueios adquiridos. Exclua os registros da tabela e pronto :)
Quando tenho esse problema, acho que executar o comando cleanup diretamente no caminho do problema geralmente parece funcionar. Então executarei a limpeza a partir da raiz de trabalho novamente, e ela reclamará de algum outro diretório. e eu apenas repito até que pare de reclamar.
Se você estiver em uma máquina Windows, visualize o repositório através de um navegador e poderá ver dois arquivos com o mesmo nome de arquivo, mas usando casos diferentes. O Subversion faz distinção entre maiúsculas e minúsculas e o Windows não, portanto, você pode obter um bloqueio quando o Windows pensa que está baixando o mesmo arquivo e o Subversion não. Exclua os nomes de arquivo duplicados no repositório e tente novamente.
Eu fiz isso apenas criando uma nova pasta, verificando o projeto, copiando os arquivos atualizados para a nova pasta.
Foi corrigido com um novo check-out.
Você está usando o TortoiseSVN e acabou de atualizar? Eu já tive esse problema antes quando passava de 1,4 para 1,5 e não reiniciava. (Tente reiniciar).
O motivo pelo qual você precisa reiniciar é porque o arquivo de cache fica funky.
Caso contrário, para seguir em frente, exporte essa cópia de trabalho para uma nova pasta (não copie as pastas ocultas .svn), faça o check-out novamente do projeto e mova todo o seu código de volta e prossiga com a sua confirmação.
apenas exclua as pastas .svn e execute uma limpeza no diretório pai. Funciona perfeitamente!!
Costumo ter esse problema. Meu padrão que causa problemas de limpeza.
Fechar o visualizador de imagens onde o arquivo excluído é aberto resolve o problema. Talvez outro software possa bloquear a limpeza da mesma maneira.
Em geral. Acredito que reiniciar o computador pode ajudar nesses casos.
O SVN normalmente atualiza sua estrutura interna (.svn / prop-base) dos arquivos em uma pasta antes que os arquivos reais sejam buscados no repositório. Uma vez que os arquivos são buscados, isso será limpo. Freqüentemente, o erro é gerado porque a "atualização" falhou ou foi cancelada prematuramente durante o andamento da atualização.
Agora a atualização deve funcionar.
Tive o mesmo problema, porque eu exportei uma pasta em uma pasta controlada por versão. Teve que excluir a pasta do TortoiseSVN e excluir a pasta do sistema de arquivos (o TortoiseSVN não gosta de subpastas não-versionadas ... por que não ???)
Não exclua sua solução!
na pasta .svn você tem um arquivo chamado lock, tem 0 bytes de comprimento
Você pode excluir todos esses arquivos de todas as pastas .svn da sua solução e funcionará
Funcionou no meu caso
A versão in-loco dos arquivos e uma nova verificação no mesmo local resolveram esse problema para mim.
No TortoiseSVN, para fazer uma versão in-loco, arraste com o botão direito a pasta raiz da cópia de trabalho da lista de arquivos para dentro da árvore de diretórios e escolha "SVN Exportar itens com versão aqui" no menu pop-up. O TortoiseSVN percebe que o destino é o mesmo que a fonte e sugere a versão não autorizada da cópia de trabalho.
Após a versão, faça um novo check-out na mesma pasta (que agora contém uma cópia não versionada de todos os arquivos que você tinha). O TortoiseSVN avisa que você está fazendo check-out em uma pasta existente, mas você pode prosseguir.
Depois disso, as limpezas, atualizações e outras operações funcionavam sem problemas. Como as duas etapas acima preservam as modificações locais, não deve haver perda de informações (mas fazer backup da cópia de trabalho antes disso pode ser uma boa idéia).
Um aviso: se a cópia de trabalho contiver versões mistas ou alterações de propriedade não confirmadas, essas informações serão perdidas. Para mim, essa não é uma ocorrência comum e, dada a escolha de uma cópia de trabalho corrompida ou a perda de alterações de propriedade não confirmadas, costumo optar por esta última.
Eu tive esse problema em que a "limpeza" funcionou, mas a "atualização" continuaria a falhar. A solução que funcionou foi excluir a pasta em questão pelo Windows Explorer, não a exclusão do TortoiseSVN (que marca a exclusão como algo a ser confirmado no repositório e, em seguida, fiz um "checkout" para essencialmente "atualizar" a pasta do repositório.
Mais informações sobre a diferença entre uma exclusão de O / S e uma exclusão de SVN aqui: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html
Notavelmente:
Quando você TortoiseSVN → Excluir um arquivo, ele é removido da sua cópia de trabalho imediatamente, além de ser marcado para exclusão no repositório na próxima confirmação.
E:
Se um arquivo for excluído por meio do explorador em vez de usar o menu de contexto do TortoiseSVN, a caixa de diálogo de confirmação mostrará esses arquivos e permitirá que você os remova do controle de versão também antes da confirmação. No entanto, se você atualizar sua cópia de trabalho, o Subversion localizará o arquivo ausente e o substituirá pela versão mais recente do repositório.
Se você estiver no Linux, tente o seguinte:
find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R
Em seguida, execute o cleanup
comando nesse diretório e tente atualizar.
Fiz o seguinte para corrigir meu problema:
No Solution Explorer, clique com o botão direito do mouse no projeto, no submenu de abertura, clique em subversion e selecione limpeza. Isso resolverá o problema, como aconteceu comigo. Espero que funcione.