Erro SVN - Não é uma cópia de trabalho


215

Recentemente, nosso servidor svn foi alterado e fizemos uma troca de svn.

Como a cópia de trabalho tinha uma enorme quantidade de recursos não versionados, ela foi bloqueada e começamos a alternar pasta por pasta para todas as pastas em svn, o que funciona perfeitamente bem.

Mas no nível mais alto do repositório, quando tento atualizar arquivos, recebo o svn: Working copy '.' erro bloqueado e limpeza também não está ajudando. Quando faço a limpeza, recebo erros como estes - svn: 'content' não é um diretório de cópias de trabalho

Checkout fresco NÃO é uma opção. Existem outras maneiras de limpar e liberar os bloqueios e fazer a troca completamente?

EDIT: O último parágrafo da resposta de JesperE

Se você receber uma "cópia não de trabalho" ao fazer uma "limpeza svn" recursiva, meu palpite é que você tem um diretório que deve ser uma cópia de trabalho (ou seja, o diretório .svn no nível superior diz isso), mas está faltando a sua próprio diretório .svn. Nesse caso, você pode tentar remover / mover esse diretório e fazer uma atualização local

parece ser a solução para o problema no repositório. Eu identifiquei essas pastas e fiz uma nova verificação dessas pastas específicas sozinho e uau, os bloqueios são liberados na limpeza subsequente! Muito obrigado JesperE !!

Mas ainda não consigo descobrir o erro do svn switch que agora lê algo como,

svn: O repositório em 'svn: // repourl / reponame / foldername' possui o uuid 'm / reponame', mas o WC possui 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

Alguma ideia ?


para usuários do R que encontrarem este erro: github.com/wch/r-source/wiki#adding-svn-information
isomorphismes

Respostas:


126

Se você receber uma "cópia não de trabalho" ao fazer uma recursiva svn cleanup meu palpite é que você possui um diretório que deve ser uma cópia de trabalho (isto é, o .svndiretório no nível superior diz isso), mas está faltando seu próprio .svndiretório. Nesse caso, você pode tentar remover / mover esse diretório e fazer uma atualização local (por exemplo rm -rf content; svn checkout content).

Se você receber um not a working copy erro, significa que o Subversion não pode encontrar um .svndiretório apropriado lá. Verifique se há um .svndiretório emcontents

A solução ideal é um novo checkout, se possível.


1
Concordo, faça um novo checkout em vez de tentar mover sua cópia de trabalho com o repo.
Tigraine

2
Meu problema é que eu migrei para um novo servidor e restaurei meus backups do sistema de arquivos com o trabalho ainda não confirmado, e usei o svnadmin para filtrar projetos antigos que não são mais necessários. Portanto, meu repositório contém todas as informações necessárias, mas possui um novo UUID. Nesse caso, vou apenas tar os arquivos alterados, fazer uma nova verificação e descompactar.
Drarok 28/08/09

Sua sugestão no primeiro parágrafo não funciona no meu sistema (W7 + Cygwin). Em vez disso, rm & svn update fizeram isso.
Jukka Dahlbom

17
AVISO: rm -rf exclui a pasta contentpermanentemente. Faça um backup antes de executá-lo.
KrishPrabakar

47

Entrei em uma situação semelhante ( svn: 'papers' is not a working copy directory) de uma maneira diferente, então pensei em publicar minha história de batalha (simplificada):

$ svn add papers
svn: Can't create directory 'papers/.svn': Permission denied

Opa! corrija as permissões ... então:

$ svn add papers
svn: warning: 'papers' is already under version control
$ svn st
~     papers
$ svn cleanup
svn: 'papers' is not a working copy directory

E mesmo paperssair do caminho e correr svn up(que funcionou para o OP) não o consertou. Aqui está o que eu fiz:

$ mv papers papers_
$ svn cleanup
$ svn revert papers
Reverted 'papers'
$ mv papers_/ papers
$ svn add papers

Isso funcionou.


6

Eu resolvi isso

  1. Copie um backup das pastas impactadas
  2. O SVN reverte as pastas impactadas
  3. Cole os arquivos de volta do backup

No meu caso, o problema ocorreu devido à exclusão de arquivos .svn.


Como fazer isso ? Por favor, explique em breve
Anand Savjani

5

Talvez você tenha copiado a árvore da pasta e tentando adicionar a mais baixa.

SVN
|_
  |
  subfolder1
       |
       subfolder2   (here you get an error)

nesse caso, você deve confirmar o diretório no nível superior.


3

Solução alternativa: renomeie o diretório que não é 'cópia de trabalho' Finalize a compra / atualize / restaure este diretório novamente Mova os arquivos do diretório renomeado para as novas alterações de confirmação

Motivo: você fez algumas alterações em alguns arquivos no diretório .svn, isso quebra a 'cópia de trabalho'


3

Se você criou um arquivo dentro de um novo diretório, em vez de 'svn add newdir / newfile' use 'svn add newdir' porque você precisa adicionar o diretório. Todos os arquivos dentro do diretório serão adicionados por padrão.


1

Acabei de receber "não uma cópia de trabalho", e para mim o motivo foi o Automouter no Unix. Apenas um novo "cd / path / to / work / directory" fez o truque.


1

Mesmo assim, eu precisava atualizar uma pasta 'contrib':

  1. A pasta antiga foi removida,
  2. Copiou o novo
  3. Copiou as pastas .svn em cada uma (apenas três no meu caso) nova pasta.

No meu caso, também, o problema ocorreu devido às pastas .svn excluídas.

Resolvido.


Encontrei isso cerca de 4 horas na limpeza do SVN usando o plug-in Eclipse - bons tempos! A cópia de trabalho está bloqueada - não, não está, crie uma mensagem melhor para o pessoal do Eclipse, obrigado.
Darth Jon #

1

Tentei colar a pasta .svn da subpasta na pasta raiz. Funciona!!!


1

Isto é o que eu fiz:

  1. renomear tronco para trunk_
  2. crie um novo tronco de pasta
  3. Faça o check-out novamente e interrompa o processo após o check-out de alguns arquivos
  4. Mova os arquivos de tronco_ para tronco
  5. Fazer limpeza svn
  6. Faça svn update. Isso atualizará o status dos arquivos e todos os seus arquivos serão versionados.

1

Eu também encontro esse problema na operação svn diff, que foi causada pelo caminho incorreto do arquivo, você deve adicionar './'para indicar o diretório de arquivo atual.


0

svn: O repositório em 'svn: // repourl / reponame / foldername' possui o uuid 'm / reponame', mas o WC possui 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

Todo repositório do subversion possui um identificador exclusivo (uuid). O Subversion usa isso para garantir que o repositório seja o mesmo ao fazer coisas como alternar. Você provavelmente deve alterar o uuid no servidor para o mesmo de antes.


Alterando o uuid no servidor - Como fazer isso?
Vijay Dev

Honestamente, não faço ideia, apenas assumo que isso pode ser feito. Você verificou no Livro do Subversion algo sobre isso?
JesperE

0

Poderia ser uma incompatibilidade de formato de cópia de trabalho? Ele mudou entre svn 1.4 e 1.5 e as ferramentas mais recentes convertem automaticamente o formato, mas as mais antigas não funcionam mais com a cópia convertida.


0

Você deve ter excluído um arquivo base SVN do seu projeto (que são arquivos somente leitura). Devido a isso, você recebe esse erro.

Confira um novo projeto novamente, mescle as alterações (se houver) do seu projeto SVN mais antigo com o novo usando "Winmerge" e confirme as alterações no último check-out.


0

O @JesperE menciona que você precisa alterar o uuid. O seguinte deve ajudá-lo a conseguir isso.

No SVN 1.5+, você pode executar o svnadmin setuuid; então você pode verificar se foi definido corretamente usando o svnlook uuid. Nas versões anteriores do SVN, é um processo mais difícil. Consulte http://chestofbooks.com/computers/revision-control/subversion-svn/Managing-Repository-UUIDs-Reposadmin-Maint-Uuids.html

Além disso, o UUID de "m / reponame" parece suspeito. Eu acredito que deveria ser um número no formato hexadecimal como o da cópia de trabalho, então talvez essa ação melhore as coisas :-)

[Eu originalmente comentei na resposta do @ JesperE , mas criei essa resposta para torná-la mais óbvia para as pessoas e mais útil para o Google. Desde então, removi meus comentários. ]


0

Tivemos o mesmo problema, e tivemos o Slik 1.6.2 e o Tortoise na mesma máquina. O Tortoise foi atualizado (e atualizou a cópia de trabalho), mas Slik não, portanto, o Tortoise funcionou bem, mas as linhas de comando falharam com:

svn: '.' não é um diretório de cópias de trabalho

A remoção do Tortoise e do Slik e a reinstalação do Tortoise com as ferramentas de linha de comando ativadas corrigiram isso para mim.


0

para mac: - faça o checkout do lado do servidor e uma nova janela será aberta para selecionar o diretório da sua máquina local. Coloque todo o código na pasta selecionada, abra o svn local side e adicione e confirme o projeto


0

Hoje encontrei o mesmo problema /FILE_NAME/ is not a working copypela manhã e passei mais de duas horas para resolvê-lo. Depois de muito tempo de RND e Google, encontrei alguma solução e é isso CHECKOUT.

  1. CHECKOUTde SUBVERSIONpara local como novo projeto.
  2. Altere parte do código no arquivo java e COMMIT o projeto.
  3. Isso funciona para mim.

Espero que seja útil para você.


0

Recentemente eu estava usando outros desenvolvedores do Mac, tive a mesma situação, o problema era; primeiro eu precisava digitar get repo path para o terminal, mas não o fiz, pois diz qual é o seu nome de usuário e senha.


0

Acabei de encontrar um caso em que o diretório .svn está em um servidor nfs em uma máquina diferente e o cliente nfs não estava executando o serviço de bloqueio de arquivos ( lockd).

svn: E155007: '/mnt/svnworkdir' is not a working copy

Isso desapareceu assim que lockdfoi iniciado no host do cliente nfs.

Parece que o subversion pode aparecer com uma mensagem de erro melhor quando há problemas para bloquear arquivos. Esta foi a subversão 1.10.0


0

Fiz um novo check-out do mesmo projeto para um local diferente, copiei a pasta .svn e substituí-a pela minha antiga pasta .svn. Depois disso, chamou a função svn update e tudo foi sincronizado corretamente e atualizado.


-1

Exclua a pasta .svn presente na sua máquina local. Pressione o ícone do Windows e digite .svn, exclua a pasta inteira. Funcionou para mim.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.