Excluindo uma ramificação SVN

89

Criei um branch de um projeto SVN chamado 'features', e agora sempre que tento atualizar o referido projeto, ele traz consigo uma pasta de recursos, que contém outra cópia do projeto do branch. Existe uma maneira de remover o branch do repositório completamente para que isso não aconteça mais?

GSto
fonte
Possível duplicata de Excluir uma filial
Jim G.

Respostas:

109

Claro: svn rma pasta indesejada e confirme.

Para evitar essa situação no futuro, eu seguiria o layout recomendado para projetos SVN:

  • Coloque seu código na /someproject/trunkpasta (ou apenas /trunkse quiser colocar apenas um projeto no repositório)
  • Filiais criadas como /someproject/branches/somebranch
  • Coloque as tags sob /someproject/tags

Agora, quando você fizer o check-out de uma cópia de trabalho, certifique-se de fazer o check-out apenas trunkou algum branch individual. Não verifique tudo em uma cópia de trabalho enorme contendo todos os ramos. 1

1 A menos que você saiba o que está fazendo, nesse caso você sabe como criar cópias de trabalho superficiais.

Wim Coenen
fonte
58

Assumindo que este branch não é externo ou um link simbólico, a remoção do branch deve ser tão simples como:

svn rm branches/< mybranch >

svn ci -m "message"

Se você gostaria de fazer isso no repositório, atualize para removê-lo de sua cópia de trabalho, você pode fazer algo como:

svn rm http://< myurl >/< myrepo >/branches/< mybranch >

Então corra:

svn update
Grmartin
fonte
26
do livro : "A exclusão de um URL, no entanto, é imediata, então você deve fornecer uma mensagem de registro [com -m]", portanto, svn rm -m message http://...e não é updatenecessário
rymo
56

Para aqueles que usam TortoiseSVN , você pode fazer isso usando o Navegador de repositório (é rotulado como "Navegador de repositório" no menu de contexto.)

menu contextual

Encontre a pasta da filial que deseja excluir, clique com o botão direito e selecione “Excluir”.

excluindo a pasta

Digite sua mensagem de confirmação e pronto.

comprometendo

2rs2ts
fonte
Faça uma atualização do SVN para remover pastas do seu disco (se não for excluído antes de remover o branch)
ArieKanarie
12

Você também pode excluir a ramificação no controle remoto diretamente. Feito isso, a próxima atualização irá removê-lo de sua cópia de trabalho.

svn rm "^/reponame/branches/name_of_branch" -m "cleaning up old branch name_of_branch"

O ^é uma abreviação para a URL do controle remoto, conforme visto em 'svn info'. As aspas duplas são necessárias na linha de comando do Windows, porque ^é um caractere especial.

Este comando também funcionará se você nunca fez check-out do branch.

CodeKid
fonte
Eu usei isso de um Mac e funcionou bem! Quando tentei a primeira resposta, obtive a resposta "'/ local / caminho / para / repo / branches / branch-name' não é uma cópia de trabalho" então presumivelmente eu nunca consegui verificar o branch que fiz
Mad Bernard
3

Você pode deletar a pasta de recursos como qualquer outra em seu checkout e então confirmar a mudança.

Para evitar isso no futuro, sugiro que você siga as convenções de nomenclatura para layout SVN.

Dê a cada projeto uma pasta de tronco, ramos e tags quando eles forem criados.

svn
+ project1
  + trunk
    + src
    + etc...
  + branches
    + features
      + src
      + etc...
  + tags
+ project2
  + trunk
  + branches
  + tags
Chris Nava
fonte
3

Da cópia de trabalho:

svn rm branches/features
svn commit -m "delete stale feature branch"

sbi
fonte
3

O comando para excluir um branch é o seguinte:

svn delete -m "<sua mensagem>" <branch url>

Se você deseja não buscar / verificar todo o repositório, execute o seguinte comando em seu terminal:

1) obtenha o caminho absoluto do diretório que conterá sua cópia de trabalho
> pwd
2) Inicie svn code checkout
> svn checkout <branch url> <caminho absoluto do ponto 1>

As etapas acima fornecerão os arquivos dentro da pasta branch e não a pasta inteira.

Alvin Chettiar
fonte