Reiniciando toda a cópia de trabalho svn de uma vez

Às vezes, quando você tem muitas alterações em sua cópia de trabalho que não precisa mais, você simplesmente deseja redefinir sua cópia de trabalho para um estado inalterado. Infelizmente, não existe um comando svn simples para fazer o trabalho. É por isso que escrevi a svn resetfuncionalidade sozinho.

Para redefinir uma cópia de trabalho svn, você precisa fazer duas coisas:

  1. reverter todos os arquivos alterados
  2. remover todos os arquivos que não estão sob controle de versão

Para fazer isso, criei uma nova função em meus arquivos .aliases :

svn() {
if [[ $@ == "reset" ]];
then
command svn revert
--recursive . && svn status | grep ^? | cut -c9- | xargs rm -r;
else command svn "$@";
fi;
}

Ele tem o mesmo nome do executável svn, então posso simplesmente digitar svn reset. A função primeiro verifica se foi chamado com “reset” e, se for o caso, executa a funcionalidade de reset. Caso contrário, ele apenas delega para o executável svn, de forma que todos os outros comandos integrados ainda funcionem. Se svn resettiver sido chamado, ele irá reverter a cópia de trabalho recursivamente do diretório de trabalho atual (portanto, só irá redefinir toda a cópia de trabalho se você estiver no diretório raiz). Depois de reverter a cópia de trabalho, pode haver arquivos não rastreados, portanto, esses arquivos devem ser identificados usando svn statuse, em seguida, excluídos.