Como você remove o controle do Subversion de uma pasta?

259

Eu tenho uma pasta, c:\websites\teste ela contém pastas e arquivos que foram retirados de um repositório que não existe mais. Como faço para o Subversion parar de rastrear essa pasta e qualquer uma das subpastas e arquivos?

Eu sei que poderia simplesmente excluir a .svnpasta, mas há muitas subpastas em várias camadas.

Brian Boatright
fonte
1
Se você estiver usando o TortioseSVN, escrevi uma postagem no blog que mostra a maneira mais rápida de fazer isso. Minha postagem tem instruções passo a passo com fotos. Esse post é disponível em http://www.ecofic.com/about/blog/disconnecting-folder-from-svn
Chad Campbell
Consulte a minha resposta que ajudou muitos. stackoverflow.com/questions/4889619/…
Ajit Vaze

Respostas:

258

Além disso, se você estiver usando o TortoiseSVN, exporte para o local atual da cópia de trabalho e ele removerá as pastas e os arquivos .svn.

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion

Resposta atualizada para o Subversion 1.7:
No Subversion 1.7, a cópia de trabalho foi revisada extensivamente. Há apenas uma pasta .svn, localizada na base da cópia de trabalho. Se você estiver usando o 1.7, apenas excluir a pasta .svn e seu conteúdo é uma solução fácil (independentemente do uso do TortoiseSVN ou das ferramentas de linha de comando).

crashmstr
fonte
8
O link agora é 404. Novo link: tortoisesvn.net/docs/release/TortoiseSVN_en/… A exportação por sobrecorrente parece ser apenas um caso especial que remove apenas os arquivos .svn se você também quiser manter os arquivos não versionados.
lilbyrdie
após a remoção bem-sucedida para recuperar o ícone da pasta em normal, reinicie o servidor svn e isso é tudo
3ehrang 27/02/2012
O servidor não teria nada a ver com os ícones da pasta Tortoise. Mas se eles não atualizarem, tente matar o processo TSVNCache. Deve reiniciar automaticamente.
crashmstr 27/02
1
No meu caso, eu deletei pasta git também em conjunto com a pasta .svn
Aftab Ahmed Kalhoro
155

No Linux, isso funcionará:

  find . -iname ".svn" -print0 | xargs -0 rm -r
Max Cantor
fonte
10
Também funciona no Mac OS.
emish
2
antes de executar o comando certifique-se de digitar o diretório apropriado, por exemplo: mySVNdirectoryWhereToRemoveTheSubfolders cd
Camaleo
Eu recebo rm: desaparecido operando
Inverno
119

Tente svn export .

Você deve conseguir fazer algo assim:

svn export /path/to/old/working/copy /path/to/plain/code

E então basta excluir a cópia de trabalho antiga.

O TortoiseSVN também possui um recurso de exportação , que se comporta da mesma maneira.

pkaeding
fonte
4
Obrigado por fornecer uma resposta que funcione com a linha de comando. :) Ótimo para aqueles que usam terminais.
epochwolf
16
Se bem entendi, este comando exportará apenas os arquivos atualmente sob controle do subversion. Então, se alguns arquivos ou pastas ainda não foram adicionados determinados a subversão ou foram removidos do controle de subversão, você vai perder esses arquivos em sua exportação ...
Chris
@ Chris, sim, você está correto. Isso exportará apenas os arquivos com versão. Isso é bom para exportar o código e deixar para trás artefatos derivados, etc., mas pode não ser a ferramenta certa para todos os trabalhos.
pkaeding
4
Vale a pena comentar que isso ainda funciona se o servidor SVN estiver longe; se você tentar exportar usando o VisualSVN ou o Tortoise SVN, ele tentará entrar em contato com o servidor, mas a versão da linha de comando acima funcionou para mim sem o servidor SVN ainda em execução.
Dave
Eu recebo um erro:svn: E000002: Can't stat '/.classpath': No such file or directory
IgorGanapolsky
32

Se você estiver executando o Windows, poderá fazer uma pesquisa nessa pasta .svne listar todas elas. Pressionar Ctrl+ Aselecionará todos eles e pressionar excluir removerá todo o material 'Subestivo' irritante.

graham.reeds
fonte
chato de fato ;-) Eu só preciso limpá-lo e colocá-lo de volta em um novo repositório.
Brian Boatright 30/09/08
2
essa também é uma ótima maneira de excluir as pastas de extensão ainda mais desagradáveis ​​do frontpage!
Brian Boatright 30/09/08
Faça o download e use o utilitário Everything Search para encontrar e excluir pastas .svn em velocidade da luz :) apenas no Windows voidtools.com !
Endo64
23

No Linux, o comando é:

svn delete --keep-local file_name
bunteKnete
fonte
21

Descobri que você nem precisa copiar para um local temporário. Você pode fazer um

svn export --force .

e os arquivos .svn serão removidos in situ , deixando os outros arquivos como estão. Muito conveniente e menos propenso a desordem.

IJ Kennedy
fonte
4
Não sei o que é, mas por algum motivo não funcionou para mim.
Áries VII
1
Este comando funciona apenas para a cópia de trabalho, não para uma pasta dentro dela. Talvez uma variante do mesmo ...?
2
Isso não funcionará se a versão instalada do Subversion for 1.7 e o repositório for 1.6. No entanto, "svn upgrade" pode ser executado antes da exportação e funcionará.
Peter Mortensen
11

Sem subshells no Linux para excluir .svnpastas:

find . -name .svn -exec rm -r -f {} +

rm = remove
-r = recursive (folders)
-f = force, avoids a lot of "a your sure you want to delete file XY".
user1439712
fonte
8

Nenhuma dessas respostas foi satisfatória para a minha situação. Estou no subversion 1.8 e tinha uma cópia de trabalho que só tinha uma única .svnpasta na primeira pasta, raiz. No entanto, eu queria remover algumas ramificações da cópia de trabalho.

Não importa o que eu fiz, sempre que eu executava uma 'atualização' ele restaurava esses arquivos e os trazia de volta. Eu não queria removê-los do repositório, apenas do meu computador - mas precisava manter o restante da cópia de trabalho intacta (portanto, não era possível remover apenas a pasta .svn).

Solução? svn update --set-depth exclude <dir>

Esta é uma "atualização" do lado do cliente que exclui um diretório específico. Pode ser encontrado nos manuais em svnbook.com . Em resumo, descreve isso como:

A partir do Subversion 1.6, você pode adotar uma abordagem diferente. Primeiro, verifique o diretório na íntegra. Em seguida, execute svn update --set-depth exclude no subdiretório no qual você não se importa.

Para o TortoiseSVN, você também pode fazer o mesmo clicando com o botão direito do mouse na pasta que não deseja, clique em Update to revision...e defina 'Update Depth' Excludecomo, como visto nesta captura de tela:

insira a descrição da imagem aqui

brazilianldsjaguar
fonte
Você não pode remover as pastas raiz das cópias de trabalho.
Jabe
8

Isso funcionou bem para mim:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf
Manikandan S
fonte
Esta é uma solução tão simples, mas funciona como um encanto.
IgorGanapolsky
@IgorGanapolsky Estou feliz. Minha solução é ajudada.
precisa
enquanto ninguém foi executado mkdir -p ';echo Hi Johnny;/.svn'- nesse caso, a invocação {} de achado ainda deve funcionar embora
Never Sleep Novamente
7

Use o svn exportcomando:

cd c:\websites\test
svn export c:\websites\test_copy

Todos os arquivos sob controle de versão serão exportados. Verifique novamente para garantir que você não perdeu nada.

1800 INFORMAÇÃO
fonte
4

Basta remover a pasta .svn dentro da pasta necessária e o controle será removido automaticamente.

Ramudu
fonte
3

No Windows, você pode adicionar um link rápido ao menu do botão direito do mouse do explorer. Basta iniciar este script de registro:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

Isso adicionará um item chamado "Excluir pastas SVN" ao menu do botão direito. Isso excluirá todas as pastas .svn nesta pasta e todas as subpastas.

Fonte (alemão): http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/

Tobias
fonte
2

Você pode usar "svn export" para criar uma cópia dessa pasta sem os dados svn, ou pode adicionar essa pasta para ignorar a lista

andy.gurin
fonte
2

Para aqueles que usam o NetBeans com SVN, existe a opção 'Subversion> Exportar'.

Ladik
fonte
2

Há também uma pequena ferramenta de código aberto chamada SVN Cleaner, que adiciona três opções ao menu de contexto do Windows Explorer:

  • Remover tudo .svn
  • Remover tudo menos raiz .svn
  • Remover arquivos de repositório local
Martin Buberl
fonte
2

No Windows 7, basta abrir a pasta do projeto e pesquisar ".svn" se os arquivos ocultos estiverem ativados e excluir todas as pastas .svn encontradas.

Unknown_Guy
fonte
1
Win Win XP que funciona muito bem também. Observe que, com o SVN 1.7, os .svndiretórios não existem mais espalhados. Para mais detalhes, consulte subversion.apache.org/docs/release-notes/1.7.html#wc-ng
Joao Coelho
1

A resposta é surpreendentemente simples - exporte a pasta para si mesma ! O TortoiseSVN detecta esse caso especial e pergunta se você deseja tornar a cópia de trabalho sem versão. Se você responder sim, os diretórios de controle serão removidos e você terá uma árvore de diretórios simples e não versionada.

Srikanth
fonte
1
Isso não está apenas citando novamente a resposta aceita dada há 5 anos?
Ben Thurley
1

Outra solução Linux (mais simples):

rm -r `find /path/to/foo -name .svn`
Dougvj
fonte
1

A MANEIRA MELHOR E MAIS FÁCIL

Se você acha que pode ganhar com um simples comando mágico, está com falha! O SVN é realmente complicado e sempre volta de alguma forma com uma nova mensagem de erro no Xcode. Mais cedo ou mais tarde, prometa ... então você deve fazê-lo de maneira inteligente!

Como você sabe, a prática recomendada e regular no Xcode é excluir um arquivo no painel do projeto à esquerda. Se você o perdeu e de alguma forma o excluiu no Finder, está com problemas. Grande problema! Mas você pode resolvê-lo e poupar tempo se fizer bem.

Primeiro, você precisa excluir a referência SVN do arquivo ou pasta antes de poder excluí-la realmente

  1. Se você pudesse simplesmente colocar o arquivo / pasta de volta no lixo ou desfazer a última etapa ao excluí-lo, então ...

  2. Vá para o Terminal - sim, o bom e velho terminal - e vá para esse local. Da melhor maneira, basta digitar cd e puxar a pasta / arquivo para o Terminal. Você receberá algo semelhante

cd / Users / UserName / Documents / Apps_Developing / ...

Você pode verificar onde está

ls

comando que lista seus arquivos.

  1. Então você precisa excluir a referência svn com um comando SVN:

    svn delete --keep-local fileName_toDelete

Isso excluirá o arquivo do repositório SVN, mas você deverá excluí-lo manualmente no Finder.

Sapateiro
fonte
0

Eu uso o rsync:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped
gritando
fonte
0

Os usuários do NetBeans IDE podem fazer o seguinte:

  1. Abra o projeto SVN no seu IDE
  2. Selecione o projeto

    clique com o botão direito do mouse em Subversion Export

  3. Na caixa de diálogo

    exportar para a pasta / var / tmp / projectname, pressionar export wait, será exibido completo, perguntará se você deseja abri-lo, abra em tempo real

  4. Agora você pode mudar para o Git :)

Peter Mortensen
fonte
0

Minha idéia é remover a pasta .svn e mover todos os outros arquivos para uma nova pasta. É tão simples quanto isso.

Alvin567
fonte
0

Quando você estiver usando o sistema operacional Windows, vá para o local da pasta e verifique se os arquivos ocultos estão abertos e, em seguida, você pode ver a pasta SVN lá. Apenas remova essa pasta.

dush88c
fonte
0

svn export funciona bem, mas acho que é isso:

svn rm --keep-local <folder/file>

Ele o remove do seu repositório local.

Javier Salinas
fonte
0

Como ponto vital, quando você usa o shell para excluir pastas .svn, você precisa do argumento -pth para impedir que o comando find entre no diretório que acabou de ser excluído e mostre mensagens de erro como, por exemplo,

"find: ./.svn: Esse arquivo ou diretório não existe"

Como resultado, você pode usar o find comando abaixo:

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;
fatihk
fonte
0

Em uma linha de comando do Windows:

rmdir .svn /s /q
Michael Ross
fonte
0

Use o seguinte:

svn rm --keep-local <folder name> para remover a pasta e tudo dentro dela.

svn rm --keep-local <folder name>/* para manter a pasta, mas remova tudo dentro da pasta.

Aqui está um exemplo do que acontece:

~/code/web/sites/testapp $ svn rm --keep-local includes/data/*
D         includes/data/json
D         includes/data/json/index.html
D         includes/data/json/oembed
D         includes/data/json/oembed/1.0
D         includes/data/json/oembed/1.0/embed1.json
D         includes/data/json/oembed/1.0/embed2.json
D         includes/data/json/oembed/1.0/embed3.json
Ryan
fonte
-1

No Windows 10, precisamos acessar e Windows Explorer, em seguida, Viewselecionar e marcar a caixa de seleção View hidden files.

Em seguida, navegue até a pasta que possui o SVN vinculado no Windows Explorer e exclua a .svnpasta / arquivo.

Praseeda
fonte
Embora eu tenha editado a formatação, esta resposta não responde à pergunta. O usuário já sabe como excluir a .svnpasta base , mas está perguntando sobre todas as subpastas. Por favor, leia a pergunta completamente.
precisa saber é o seguinte