Existe um único comando Subversion que “redefiniria” uma cópia de trabalho exatamente para o estado que está armazenado no repositório? Algo como git reset --hard
ou (ha, hard Git reset também não remove arquivos não versionados!) rm -rf wc && svn co <url> wc
.
Atualização: Não estou atrás de uma simples reversão, já que isso não exclui arquivos extras na cópia de trabalho. Eu realmente quero algo que seja o mesmo que excluir a cópia de trabalho e fazer check-out novamente, só que sem ter que baixar os dados novamente. (Obviamente, não me importo em perder todas as alterações não comprometidas.)
git clean -xdf
para remover coisas que não estão sob controle de origem.git clean
citações exatamente o que estou procurando: “Isso pode ser usado (possivelmente em conjunto com git reset) para criar um diretório de trabalho pristine para testar uma construção limpa.” É uma pena que o Subversion não pareça ter nada parecido com isso embutido.Respostas:
Você pode reverter recursivamente assim:
svn revert --recursive .
Não há como (sem escrever um script criativo) para remover coisas que não estão sob o controle da origem. Acho que o mais próximo que você pode fazer é iterar sobre todos os arquivos, usar o resultado de
svn list
grep e, se o grep falhar, excluí-lo.EDIT : A solução para o script criativo está aqui: Remover automaticamente os arquivos não versionados do Subversion
Portanto, você pode criar um script que combine
revert
com a resposta na pergunta vinculada que melhor se adequar a você.fonte
svn cleanup
primeiro no wc também. Esta é minha prática padrão para limpar após mesclagens abortadas e outros enfeites.Para reverter arquivos rastreados
Para limpar arquivos não rastreados
A
-rf
princípio pode / deve parecer assustador, mas uma vez compreendido, não será por estes motivos:rm
-rf
é obrigatório, caso contrário, esses diretórios não serão removidosPara reverter e depois limpar (a questão OP)
Para uma facilidade de uso consistente
Adicione um alias permanente aos seus .bash_aliases
fonte
awk: fatal: error reading input file '-': Input/output error
?
noawk
comando, caso contrário, ele correspondeu a todas as linhas na saída desvn status
Exclua tudo dentro de sua cópia local usando:
E reverta tudo recursivamente usando o comando abaixo.
Isso é muito mais rápido do que excluir todo o diretório e, em seguida, fazer um novo checkout, porque os arquivos estão sendo restaurados dos metadados SVN locais. Nem precisa de uma conexão de rede.
fonte
para reiniciar tudo.
para um único arquivo
fonte
Exclua arquivos não versionados e reverta quaisquer alterações:
Fora:
fonte
Solução cmd / bat do Windows puro:
fonte
Excluir a cópia de trabalho do sistema operacional e verificar novamente é o mais simples, mas obviamente não é um único comando.
fonte
Muito rápido e simples e faz exatamente o que você deseja
O /(config|.ini)/ é para meus próprios propósitos.
E pode ser uma boa idéia adicionar --no-ignore ao comando svn
fonte
Para remover arquivos não rastreados
Consegui listar todos os arquivos não rastreados relatados por
svn st
no bash fazendo:Se estiver com sorte, você pode substituir
echo
porrm
para excluir arquivos não rastreados. Ou copie os arquivos que deseja excluir manualmente, se não tiver sorte.(Usei a resposta de @abe-voelker para reverter os arquivos restantes: https://stackoverflow.com/a/6204601/1695680 )
fonte