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.