SVN: A pasta já está sob controle de versão, mas não está funcionando?


111
mark@mark-ubuntu:~/myproject$ svn stat
?       runserver.sh
?       media/images/icons
?       apps/autocomplete
mark@mark-ubuntu:~/myproject$ svn add apps/autocomplete
svn: warning: 'apps/autocomplete' is already under version control

svn statdiz que não está sob controle de versão, então tento adicioná-lo e ele me diz que está. Quando eu faço um svn ci, ele não fica comprometido e não aparece quando tento navegar para o repositório online.

Como faço para fazer o commit?


3
A pasta "autocomplete" contém um subdiretório ".svn" corrompido? Além disso, você fez a limpeza? :)
bzlm

1
Você já tentou uma limpeza: svn, apenas uma facada no escuro?
shaunhusain

Eu tive esse problema quando copiei um diretório verificado para outra pasta em meu projeto. Excluir o antigo .svn funciona!
paulrehkugler

I vigorosamente aditados os arquivos: svn add --force /path/to/fileou se você quiser adicionar o diretório de forma recursiva: svn add --depth infinity --force /path/to/directory.
joker de

Respostas:


162

Copie a pasta problemática em algum diretório de backup e remova-a do diretório de trabalho SVN. Lembre-se de excluir todos .svnos diretórios ocultos da pasta copiada.

Agora atualize seu projeto, limpe e comprometa o que sobrou. Agora mova sua pasta de volta para o diretório de trabalho, adicione-a e envie. Na maioria das vezes, essa solução alternativa funciona, parece que basicamente o SVN se confundiu ...

Atualização: citando comentário de @Mark :

Não precisava mover a pasta, apenas deletar a .svnpasta e então adicionar svn funcionou.


52
Não precisava mover a pasta, apenas deletar a .svnpasta e então adicionar svn funcionou.
maio

6
+1 por fazer meu dia ;-) Como Mark disse, para mim foi o suficiente para remover os diretórios .svn dentro da pasta problemática.
rturrado de

23
Obrigado por identificar o SVN como BS total.
Steve K,

1
agora que você só tem .svn na pasta superior, você não pode fazer isso BS, se os metadados estiverem corrompidos, você está
frito

desmarque a pasta pai (apps / autocomplete) da lista se já tiver
confirmado

20

Tive um problema parecido depois de adicionar uma árvore de diretórios que continha diretórios .svn (porque era um svn: externo em seu ambiente de origem): svn status me disse "?", Mas ao tentar adicioná-lo, ele "já estava" sob controle de versão ".

Como nenhum outro diretório versionado estava presente, eu fiz

find . -mindepth 2 -name '.svn' -exec rm -rf '{}' \;

para remover os diretórios .svn errados; depois de fazer isso, fui capaz de adicionar o novo diretório.

Nota :

  • Se outros diretórios versionados estiverem contidos, a expressão find deve ser alterada para ser mais específica
  • Se não tiver certeza, primeiro omita a parte "-exec ..." para ver o que seria excluído

Embora essa resposta tenha funcionado para mim, na primeira vez que a usei, estava na pasta errada e baguncei bastante. Parece ser um bom lugar para lembrar as pessoas de "medir duas vezes, cortar uma vez", ou seja, verifique os detalhes antes de executar este.
BishopZ

Eu recomendo o 'se não tiver certeza' para ... -exec echo {} \;que você possa fazer seu switch -exec funcionar bem também.
FlipMcF

também recomendo adicionar um -type dao encontrar. Me chame de exigente até que você rm -rfvá longe demais. Além dos meus defeitos - acho que esta é a resposta correta.
FlipMcF

15

Uma variação da resposta de @ gauss256 , deletar .svn, funcionou para mim:

rm -rf troublesome_folder/.svn
svn add troublesome_folder
svn commit

Antes da solução de Gauss eu tentei a abordagem de @ jwir3 e não tive alegria:

svn cleanup
svn cleanup *
svn cleanup troublesome_folder
svn add --force troublesome_folder
svn commit

14

(1) Isso acabou de acontecer comigo, e achei interessante como aconteceu. Basicamente, copiei a pasta para um novo local e a modifiquei, esquecendo que ela traria todos os diretórios .svn ocultos. Depois de perceber como isso acontece, é mais fácil evitar no futuro.

(2) Remover os diretórios .svn é a solução, mas você tem que fazer isso recursivamente em toda a árvore de diretórios. A maneira mais fácil de fazer isso é:

find troublesome_folder -name .svn -exec rm -rf {} \;

3

Você já tentou realizar uma limpeza svn?


2
Eu também corri para este problema. Então tentei svn cleanupe não adiantou.
imacake de

3

Verifique se há um diretório 'apps / autocomplete / .svn'. Mova-o para um lugar seguro (no caso de você precisar restaurá-lo porque isso não funcionou) e veja se isso resolve o problema.


0

Encontrei uma solução caso você tenha instalado o Eclipse (Luna) com o SVN Client JavaHL (JNI) 1.8.13 e Tortoise :

Abra o Eclipse: primeiro tente adicionar o módulo project / maven ao controle de versão (Projeto -> Menu de contexto -> Equipe -> Adicionar ao controle de versão)

Você verá a seguinte mensagem de erro do Eclipse:

org.apache.subversion.javahl.ClientException: A entrada já existe svn: 'PathToYouProject' já está sob controle de versão

Depois disso, você tem que abrir o diretório do seu espaço de trabalho no seu explorador, selecionar seu projeto e resolvê-lo via Tortoise (Projeto -> Menu de Contexto -> TortoiseSVN -> Resolver)

Você verá a seguinte caixa de diálogo de mensagem: "A lista de arquivos está vazia "

Pressione cancelar e atualizar o projeto no Eclipse. Seu projeto deve estar sob controle de versão novamente.

Infelizmente não é possível resolver mais um projeto ao mesmo tempo ... você não precisa deletar nada, mas dependendo do tamanho do seu projeto pode ser um pouco trabalhoso.


0

Para mim, fazer uma atualização de svn, seguida de svn commit funcionou. Não havia pastas .svn presentes na pasta que falhou ao adicionar.

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.