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.


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).


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

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.


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.


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


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.


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".

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


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

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.


4

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


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/


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


2

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


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



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.


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`

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.


0

Eu uso o rsync:

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

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 :)


0

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


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.


0

svn export funciona bem, mas acho que é isso:

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

Ele o remove do seu repositório local.


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 {} \;


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

-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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.