SVN (Subversion) Problema “O arquivo está agendado para adição, mas está faltando” - Usando Versões

94

Estou usando versões para SVN.

Eu tento confirmar e receber esta mensagem:

Falha na confirmação (detalhes a seguir): '/Users/mike/Sites/mysite.com/astss-cvsdude/Trunk/cart/flashfile.swf' está agendado para adição, mas está faltando

Suponho que seja porque adicionei arquivos ao repo e, em seguida, excluí-os por meio do sistema de arquivos.

Eu gostaria que ele simplesmente anotasse minha alteração e aplicasse a alteração ao repo.

Como posso resolver isso?

Mike
fonte

Respostas:

120

Não tenho certeza do que você está tentando fazer: se você adicionou o arquivo via

svn add myfile

você apenas disse ao svn para colocar este arquivo em seu repositório quando fizer seu próximo commit . Não há nenhuma mudança no repositório antes de você digitar um

svn commit

Se você deletar o arquivo antes do commit, o svnpossui em seus registros (porque você o adicionou), mas não pode enviá-lo para o repositório porque o arquivo não existe mais.

Então, ou você quer salvar o arquivo no repositório e então excluí-lo de sua cópia de trabalho: Neste caso, tente pegar seu arquivo de volta (da lixeira?), Faça o commit e exclua o arquivo depois via

svn delete myfile
svn commit

Se você deseja desfazer adde apenas jogar o arquivo fora, você pode

svn revert myfile

que diz svn(neste caso) para desfazer a operação add.

EDITAR

Desculpe, não sabia que você está usando o cliente GUI "Versions" para o Max OSX. Portanto, tente reverter o diretório que o contém usando a GUI ou pule na água fria e acione seu shell de comando oculto do Mac :-) (é chamado de "Terminal" no OSX alemão, nenhuma idéia de como abri-lo em inglês versão...)

MartinStettner
fonte
2
O problema aqui é que ele usa uma GUI. Se ele puder usar a linha de comando de qualquer maneira, ele poderá apenas svn rmo arquivo, mesmo se ele não existir no diretório.
Pikrass
Ok, eu não conhecia o cliente "Versions" para OSX. Ele deveria ser capaz de usar "reverter" de qualquer maneira, não deveria? Isso funcionaria com o TortoiseSVN no Windows.
MartinStettner
svn cleanups e svn rms mais tarde ... Obrigado pela ajuda, pessoal. Existe uma maneira de dizer ao svn, "olha, eu adicionei alguns arquivos por meio do gerenciador de arquivos padrão do meu sistema operacional, e agora, o material nesta pasta, é o que eu quero que seja o estado atual deste repositório ... agora deixe-o acontecer ... não me diga o que posso e o que não posso fazer com esses arquivos, mas sim, acompanhe tudo para mim. "?
Mike
1
Um svn add *adiciona automaticamente todos os arquivos novos não versionados e svn commitsalva imediatamente essas alterações no repositório. Afaik não existe uma operação equivalente para remoção, então se você remover arquivos, você tem que chamar svn rmmanualmente.
MartinStettner
Apenas FYI, eu também tive esse problema e svn rm, mesmo com --forcenão funciona - diz ele does not exist. Então, svn reverté a coisa certa a fazer aqui.
Michel Müller
24

Eu tive o mesmo problema com versões exibindo a mesma mensagem. Eu simplesmente cliquei com o botão direito nos arquivos ofensivos e selecionei 'Reverter ...' no menu do botão direito e tudo estava bom.

Basicamente, o Versions (na verdade o Subversion) pensa que você ainda deseja adicionar o arquivo, mas não pode encontrá-lo porque você o excluiu do sistema de arquivos. A opção Reverter diz ao Subversion para esquecer de adicioná-lo.

mmopy
fonte
Eu estava recebendo este erro porque excluí uma pasta da hierarquia do aplicativo. Acabei de adicionar uma pasta vazia com o mesmo nome e funcionou.
Yogi de
10

Adicionar um arquivo e, em seguida, excluí-lo é o tipo de operação considerada um erro - e o SVN está avisando você. Você disse a ele para esperar alguns dados de arquivo e depois não fornecê-los quando você enviar, as luzes vermelhas piscam e as sirenes desligam!

A resposta é desfazer seu add, alternativamente, commitar o arquivo e então usar 'svn rm' para removê-lo do sistema de arquivos e do repo.

gbjbaanb
fonte
Pego isso no Xcode, onde adiciono um arquivo e faço algo errado ou algo assim e digo ao Xcode para excluir (mover para a lixeira). Infelizmente o Xcode o deixa neste estado e não faz o rm do svn para mim, embora ele exclua o arquivo ...
chadbag
3

Isso resolveu meu problema semelhante. Eu usei para reverter as mudanças, então adicionei tudo e confirmei as mudanças no terminal com

svn add folder_path/*
svn commit -m "message"
Jose
fonte
2

Evite usar o Xcode para renomear arquivos em uma referência de pasta. Se você renomear um arquivo usando o Xcode, ele será marcado para confirmação. Se você excluí-lo mais tarde antes do commit, acabará com este erro.

Totoro
fonte
0

Acabei de deletar o arquivo do VS e, em seguida, do 'Repository Explorer', copiei o arquivo para a cópia de trabalho.

Behzad Sedighzadeh
fonte
0

Se você estiver usando o TortoiseSVN…

Na janela de confirmação da seção “Alterações feitas”, você pode selecionar todos os arquivos ofensivos, clicar com o botão direito e selecionar excluir. Conclua o commit e os arquivos serão removidos das adições programadas.

Howard
fonte