Desfazer svn add sem reverter edições locais

157

Eu acidentalmente corri svn add *e adicionei um monte de arquivos que não deveriam estar no repositório. Também tenho edições locais em alguns arquivos que quero manter. Existe uma maneira simples de desfazer a svn addação sem reverter as edições locais? A principal sugestão que vejo no Google é svn revertque, supostamente, desfaz as edições locais.

jonderry
fonte

Respostas:

282

Isso seria:

svn rm --keep-local

A mesma coisa aconteceu comigo. :-P

Muitas pessoas comentaram que você deve usar:

svn rm --keep-local FILENAME

aplicar o comando em um ou vários arquivos, em vez de tudo, o que pode ter efeitos colaterais não intencionais.

Nostradamus1935
fonte
1
Isso não teve efeito para mim. Eu executei o código como acima (incluindo o período à direita) da pasta base. Não tenho certeza se estou perdendo alguma coisa.
Zzz
8
Observe que você precisa adicionar o nome do arquivo ao comando para que assim seja svn rm --keep-local FILENAME. O FILENAMEpode usar * para corresponder a vários arquivos (se você tiver a sorte de ter um padrão).
Adam Badura
4
Aviso! - usando este comando ao usar svn externos remove todos os externos ligados, bem ...
kostja
2
Se você confirmar isso, o commit não incluirá a remoção do arquivo em questão do repositório?
Jwg 01/04
1
//, tenho a mesma pergunta que jwg. Fiz algumas edições em um arquivo controlado por SVN. Quero manter essas edições localmente. No entanto, não quero remover completamente o arquivo do repositório. Eu só não quero enviar minhas edições locais para o arquivo.
Nathan Basanese
34

Se esses arquivos estiverem em um diretório que ainda não foi confirmado, você poderá remover todo o conteúdo do diretório da próxima confirmação, executando:

svn delete --keep-local /path/to/directory

No entanto, se esses arquivos já estiverem no repositório e agora contiverem alterações que você não deseja confirmar, você poderá confirmar o restante dos arquivos usando as listas de alterações:

svn changelist somename /file/to/be/committed
svn commit --changelist somename
Juampy NR
fonte
7

Você pode corrigir seu checkout da seguinte maneira:

  1. Faça backup de seus arquivos locais
  2. Reverta a verificação SVN
  3. Restaure os arquivos

-

rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR 
Brice M. Dempsey
fonte
O comando final sempre cria um nível de diretório extra, ou seja, terminando com YOURDIR/YOURDIR/, embora eu ache que o problema está no comando de backup inicial criando YOURDIR.bak/YOURDIR/.
James
Para evitar que o rsync exija uma barra no diretório de origem. Eu editei a resposta.
Brice M. Dempsey
3

Eu tive o mesmo problema, acidentalmente adicionei um diretório / via svn addque contém os binários e o arquivo compilado. Este comando realmente exclui o diretório.

svn rm --force <directory-name>

No meu caso, não preciso do diretório, por isso era seguro excluir. Se você deseja manter os arquivos / diretórios salvos em um local antes de aplicar o comando e depois copiá-los novamente

pushya
fonte