Se eu tenho uma cópia de trabalho de um repositório do Subversion, existe uma maneira de excluir todos os arquivos não versionados ou ignorados nessa cópia de trabalho com um único comando ou ferramenta? Basicamente, estou procurando o analógico SVN git clean
.
Uma linha de comando ou uma solução da GUI (para o TortoiseSVN) seria aceitável.
svn
tortoisesvn
ignore
Nick Meyer
fonte
fonte
Respostas:
Usando o TortoiseSVN:
fonte
svn cleanup --remove-unversioned --remove-ignored .
Este possui os seguintes recursos:
--xml
opção e analisar a saída xml resultante)svn status
imprima outros caracteres de status antes do nome do arquivo (o que não deveria porque os arquivos não são rastreados, mas apenas no caso ...)Eu uso um script de shell chamado
svnclean
que contém o seguinte:fonte
IFS
voltar ao que era antes. Quando você faz issoVARNAME=value command
, a atribuição devalue
aVARNAME
se aplica apenas durante a execução decommand
(com algumas exceções que não se aplicam aread
). Consulte a especificação POSIX e este relatório de erros do POSIX para obter mais detalhes.Eu sei que isso é antigo, mas no caso de alguém tropeçar nele, versões mais recentes (1.9 ou posterior) do suporte ao svn
--remove-unversioned
, por exemplosvn cleanup . --remove-unversioned
.https://subversion.apache.org/docs/release-notes/1.9.html#svn-cleanup-options
fonte
svn cleanup . --remove-ignored
Esse oneliner pode ajudar você a:
Use com cuidado!
fonte
svn status --no-ignore
para capturar um poço dos arquivos ignorados.Modificando as respostas de Yanal-Yves Fargialla e gimpf usando o Powershell (mas não é permitido comentar a postagem original de Stackoverflow):
Isso adiciona o quilate ("^") para especificar o início da linha, evitando a correspondência de todos os arquivos que contêm a letra "i". Adicione também os sinalizadores para -recurse e -force para rm para tornar esse comando não interativo e utilizável em um script.
fonte
Muitas coisas no SVN podem ser feitas de maneiras diferentes, conforme evidenciado pelas variadas respostas da linha de comando fornecidas aqui. Com o advento da versão 1.7, existe outra técnica para o TortoiseSVN que, de fato, fornece uma resolução mais refinada do que a resposta de Stefan, permitindo que você selecione arquivos sem versão separadamente dos arquivos ignorados. Basta selecionar
TortoiseSvn >> Clean up...
para abrir esta caixa de diálogo.fonte
Com PowerShell:
Na linha de comando:
fonte
-match '[\?i]' -replace '^.{8}'
, que funciona corretamente mesmo que um nome de arquivo comece com um espaço em branco e também exclua os arquivos ignorados.code
@ (svn status --no-ignore) -match '[\? I]' -place ''. {8} '| rm `. Descobri-lo com a ajuda deste postpowershell -Command "&{(svn status --no-ignore) -match '[\?i]' -replace '^.{8}' | remove-item -force -recurse}"
Este oneliner funciona para mim (com base na resposta de Richard Hansen, que surpreendentemente não funcionou para arquivos que contenham espaços):
fonte
-fr
aorm
comando: svn status --no-ignore | grep '^ [I?]' | corte -c 9- | xargs -d "\ n" -I {} rm -fr {}Usando o TortoiseSVN:
Não é realmente uma solução agradável e limpa, mas a maneira mais rápida que conheço (no Windows).
Obrigado ao pkh pela dica com os arquivos ignorados.
fonte
Isso é semelhante a outras respostas, mas na verdade recebe arquivos ignorados (observe o 'I' nos REs):
fonte
Alguém disse que você não pode fazer isso na linha de comando do Windows.
Touro.
Faz isso em uma linha e não requer uma única ferramenta GNU. :)
fonte
for /f "tokens=2 delims= " %%I IN ('svn st --no-ignore ^| findstr /R "^[I?]"') DO (DEL /S /F /Q /A:H "%%I" & rmdir /S /Q "%%I")
%%
over%
você não pode excluí-los apenas com a linha de comando SVN (embora não tenha certeza das ferramentas da GUI) se estiver no sistema linux, isso pode ajudar:
http://www.guyrutenberg.com/2008/01/18/delete-unversioned-files-under-svn/
O outro método (brutal) é confirmar alterações, excluir tudo da pasta e fazer checkout novamente.
fonte