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?

mpen
fonte
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.

Tomasz Nurkiewicz
fonte
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
Tobias
fonte
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
fogões
fonte
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 {} \;
gauss256
fonte
3

Você já tentou realizar uma limpeza svn?

jwir3
fonte
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.

Jerryb
fonte
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.

Chisey88
fonte
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.

Sujeet
fonte