A cópia de trabalho XXX bloqueada e a limpeza falhou no SVN

Eu recebo este erro quando eu faço uma svn update :

Cópia de trabalho XXXXXXXX locked Por favor execute o comando “Cleanup”

Quando eu executo a limpeza, fico

A limpeza falhou ao processar os seguintes caminhos: XXXXXXXX

Como eu saio desse loop?

Uma abordagem seria:

  1. Copie os itens editados para outro local.
  2. Exclua a pasta que contém o caminho do problema.
  3. Atualize a pasta que contém através do Subversion.
  4. Copie seus arquivos de volta ou mescle as alterações conforme necessário.
  5. Commit

Outra opção seria excluir a pasta de nível superior e fazer check-out novamente. Espero que isso não aconteça.

Para mim, o truque era executar o svn cleanup no topo da minha cópia de trabalho, não na pasta onde eu estava trabalhando o tempo todo antes que o problema ocorresse.

Olhe na sua pasta .svn , haverá um arquivo nele chamado de lock . Exclua esse arquivo e você poderá atualizar. Pode haver mais arquivos de bloqueio no diretório .svn de cada subdiretório. Eles precisarão excluir também. Isso pode ser feito como um lote simplesmente a partir da linha de comando, por exemplo

 find . -name 'lock' -exec rm -v {} \; 

Observe que você está editando manualmente os arquivos na pasta .svn . Eles foram colocados lá por um motivo. Essa razão pode ser um erro, mas se não, você pode estar danificando sua cópia local.

FONTE: http://www.svnforum.org/2017/viewtopic.php?p=6068

No meu caso eu resolvi isso apagando manualmente um registro no registro de bloqueio de arquivo “.svn \ wc” do SQLite na tabela WC_LOCK.

Eu abri o arquivo “WC” com o editor SQLite e executei

 delete from WC_LOCK 

captura de tela mostrando todas as entradas removidas de WC_LOCK

Após o comentário do eakkas , talvez seja necessário excluir também todas as inputs da tabela WORK_QUEUE .

Maneira mais fácil de sempre:

  1. Vá para o diretório pai (pasta) do projeto .
  2. Clique com o botão direito
  3. Prima no TortoiseSVN e depois em Prima Limpar …
  4. A janela de limpeza aparecerá automaticamente
  5. Selecione Clean up working copy status , Break locks , Fix time stamps , Clean up working copy status Vacuum pristine copies , Refresh shell overlays , Include externals
  6. OK

Você fez o seu trabalho com sucesso.

Verifique as capturas de canvas para sua referência.

Primeiro passo:

insira a descrição da imagem aqui

Segundo passo: Ative a opção Quebrar bloqueio (segunda checkbox de seleção na janela pop-up de limpeza) insira a descrição da imagem aqui

Espero que isso ajude muito.

Um colega no trabalho vê constantemente essa mensagem e, para ele, ele excluiu um diretório sob o version control do SVN sem excluí-lo do SVN e criou um novo diretório em seu lugar, não sob version control, com o mesmo nome.

Se este é o seu problema …:

Existem diferentes maneiras de consertá-lo, dependendo de como / porque o diretório foi substituído.

De qualquer forma, você provavelmente precisará:

A) Renomeie o diretório existente para um nome temporário

B) Fazer um SVN reverter para recuperar o diretório excluído do sistema de arquivos, mas não do SVN

De lá, você também

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 um SVN delete no original, confirme e renomeie o novo diretório de volta para o nome desejado, seguido por um SVN add para obter aquele sob o version control.

Para mim, nenhuma das soluções acima funcionou. Eu encontrei uma solução quebrando bloqueios. Quando realizei svn cleanup, selecionei “Break Locks” junto com “Clean up working copy status”.

insira a descrição da imagem aqui

Este trabalhou para mim.

  1. Vá para a pasta raiz
  2. Clique com o botão direito e limpeza
  3. Confira todas as opções disponíveis
  4. Pressione OK

Após a limpeza, você poderá atualizar para a versão mais recente.

Para mim, na verdade foi culpa do tipo Tortoise. Tartaruga apenas reclamou “não pode limpar, executar limpeza”, mas quando eu corri a linha de comando (svn cleanup), claramente me disse que não poderia excluir alguns arquivos que estavam em uso, a solução para o qual era óbvio. Depois que fechei o Visual Studio (que mantinha os arquivos abertos), a limpeza funcionou bem.

Outros programas também podem manter arquivos abertos no repository que causam esse problema. O Excel mantendo um xls aberto foi um culpado em outra instância, então pode ser sábio fechar todos os programas que podem estar usando qualquer coisa no repository ou mesmo reinicializar para forçar os programas a serem encerrados e, em seguida, tentar limpá-los novamente.

Eu tive esse problema porque as pastas externas não querem 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ê receberá o erro de bloqueio SVN Woring Copy. Aqui, uma limpeza também lhe dirá que tudo está bem, mas a atualização ainda não funciona.

Solução: Exclua a pasta problemática do repository e faça uma atualização na pasta raiz em que a propriedade svn: externals está configurada. Isto irá criar a pasta e tudo ficará bem novamente.

Este problema surgiu para mim porque o svn: externals for files requer que a pasta de destino seja controlada pela versão. Depois que notei que isso não funciona em diferentes repositorys, eu troquei de arquivos externos para pasta externa e entrei nessa confusão.

A maneira mais fácil de fazer isso é mostrar pastas ocultas e, em seguida, abrir a pasta .SVN. Você deve ver um arquivo de zero KB chamado “lock”, excluindo isso, o problema será corrigido

Eu me deparei com exatamente o mesmo problema usando o SVN 1.7 e nenhuma das correções mencionadas acima funcionou.

Acima de tudo, certifique-se de fazer backup de todo o seu conteúdo editado.

Depois de passar algumas horas (não fiz o download de tudo, já que meu branch tem mais de 6GB), descobri que existe um arquivo db chamado “wc” na pasta .svn da sua filial.

Abra o arquivo db usando qualquer gerenciador de db (usei o plugin sqlite manager do firefox) e navegue até a tabela WC_LOCK. Esta tabela terá as inputs para os bloqueios adquiridos. Exclua os registros da tabela e pronto 🙂

Quando eu tenho esse problema, acho que executar o comando de limpeza diretamente no caminho do problema geralmente parece funcionar. Então eu vou executar a limpeza da raiz de trabalho novamente, e ele vai reclamar sobre algum outro diretório. e repito até parar de reclamar.

Se você estiver em uma máquina Windows, visualize o repository por meio 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 permite que você obtenha um bloqueio quando o Windows acha que está puxando o mesmo arquivo e o Subversion não. Exclua os nomes de arquivos duplicados no repository 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 checkout fresco.

Você está usando o TortoiseSVN e acabou de atualizar? Eu tive esse problema antes ao passar de 1,4 para 1,5 e não reiniciar. (Tente uma reboot).

A razão pela qual você precisa reinicializar é porque o arquivo de cache fica todo instável.

Caso contrário, basta seguir em frente, exportar essa cópia de trabalho para uma nova pasta (não copie as pastas ocultas .svn), verifique novamente o projeto e mova todo o seu código de volta, em seguida, continue com o seu commit.

basta excluir as pastas .svn e executar uma limpeza no diretório pai. Funciona perfeitamente!!

Em versões no Mac OS: Ação -> Limpeza de cópia de trabalho bloqueia em …

Eu sempre recebo tal problema. Meu padrão que causa problemas de limpeza.

  1. Eu abro o arquivo de imagem no visualizador.
  2. Eu apago arquivo / pasta de imagens.
  3. Estou tentando confirmar / atualizar

Fechar o visualizador de imagens onde o arquivo excluído está aberto resolve o problema. Talvez outro software possa bloquear a limpeza da mesma maneira.

Em geral. Eu acredito que reiniciar o computador pode ajudar em tais casos.

O SVN normalmente atualiza sua estrutura interna (.svn / prop-base) dos arquivos em uma pasta antes que os arquivos reais sejam buscados no repository. Uma vez que os arquivos são buscados, isso será esclarecido. Freqüentemente o erro é lançado porque a “atualização” falhou ou prematuramente cancelada durante o progresso da atualização.

  1. Verifique se os arquivos estão listados no diretório .svn / prop-base
  2. Remova todos os arquivos que não estão sob a pasta
  3. Limpar
  4. Atualizar

Agora a atualização deve funcionar.

Tive o mesmo problema porque exportei uma pasta em uma pasta controlada por versão. Tive que deletar a pasta do TortoiseSVN, então apague a pasta do sistema de arquivos (o TortoiseSVN não gosta de subpastas não versionadas … por que não ???)

Não elimine a sua solução!

na pasta .svn você tem um arquivo chamado bloquear é 0 bytes de comprimento

Você pode excluir todos esses arquivos de todas as pastas .svn em sua solução e funcionará

Funcionou no meu caso

O desprotegido dos arquivos no local e um novo checkout no mesmo local resolveu esse problema para mim.

No TortoiseSVN, para fazer uma redistribuição no local, arraste a pasta raiz da cópia de trabalho da lista de arquivos para si mesma na tree de diretórios e escolha “Itens exportados do SVN aqui” no menu pop-up. O TortoiseSVN percebe que o destino é o mesmo da fonte, e sugere que a cópia de trabalho seja desversionada.

Após a conversã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 ir em frente.

Depois disso, limpezas, atualizações e outras operações funcionaram sem problemas. Uma vez que ambos os passos acima preservam modificações locais, não deve haver perda de informação (mas apoiar a cópia de trabalho antes disso pode, no entanto, ser uma boa ideia).

Um aviso: se a cópia de trabalho contiver versões misturadas ou alterações de propriedade não confirmadas, essas informações serão perdidas. Para mim, isso 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 comprometidas, tenho a tendência de optar pela segunda opção.

Eu tive esse problema onde a “limpeza” funcionou, mas a “atualização” continuaria a falhar. A solução que funcionou foi excluir a pasta em questão através do Windows Explorer, não a exclusão do TortoiseSVN (que marca a exclusão como algo a ser confirmado no repository, e então eu fiz um “checkout” para essencialmente “atualizar” a pasta do repository.

Mais informações sobre a diferença entre uma exclusão O / S e uma exclusão SVN aqui: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html

Notavelmente:

Quando você TortoiseSVN → Apaga um arquivo, ele é removido da sua cópia de trabalho imediatamente, assim como é marcado para exclusão no repository no próximo commit.

E:

Se um arquivo é deletado através do explorador ao invés de usar o menu de contexto do TortoiseSVN, a checkbox de diálogo de submissão mostra esses arquivos e permite removê-los do version control antes da submissão. No entanto, se você atualizar sua cópia de trabalho, o Subversion localizará o arquivo ausente e o replaceá pela versão mais recente do repository.

Se você está no Linux, tente isto:

 find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R 

Em seguida, execute o comando de cleanup nesse diretório e tente atualizar.

Eu fiz o seguinte para corrigir o meu problema:

  1. Renomeou a pasta incorreta, colocando um “_” na frente do nome da pasta.
  2. Fiz um “Clean Up” da pasta pai.
  3. Renomeou a pasta ofensiva de volta para seu nome original.
  4. Fez um commit.

No solution explorer, clique com o botão direito do mouse no projeto, no submenu de abertura, clique em subversion e selecione clean-up. Isso resolverá o problema, como aconteceu comigo. Espero que funcione.

Para fazer a limpeza

  1. Exclua a pasta .svn.

  2. Faça o svncheckout na pasta raiz.

  3. Tente executar a operação de limpeza.

Isso resolveu meu problema.

Eu tinha isto sob o TortoiseSVN e o erro estava relacionado a um novo diretório que eu criei sob um novo projeto. Eu tinha acabado de criar esse projeto, então não havia como esse diretório existir antes. Eu olhei no navegador do repository e a nova pasta já estava no repository, mas o TortoiseSVN não mostrou como comprometido.

Para contornar isso, desde que eu tinha acabado de criar a pasta de qualquer maneira, eu a apaguei no repository, e então fiz um commit. Funcionou bem.

Como fiz isso fora do Visual Studio, tive que reiniciar o Visual Studio para descobrir tudo novamente.

Iniciar pesquisa …. Bloquear … Selecione todos os arquivos listados e delete..fixed