Faça commit das alterações para um branch diferente do branch atualmente em check-out com o subversion

115

Estive trabalhando no código retirado da linha de desenvolvimento e descobri que as alterações feitas podem ser interrompidas e precisam ser movidas para um branch experimental antes de se comprometer com a árvore de desenvolvimento principal. No entanto, não tenho o branch experimental verificado e não quero perder as alterações que já foram feitas.

Existe uma maneira de enviar as alterações na pasta de trabalho para um branch diferente do que originalmente retirado?

Paul Alexander
fonte

Respostas:

129

Você deve criar um branch a partir de um conhecido sourceURL(esta seria a sua 'linha de desenvolvimento' que você mencionou na pergunta) primeiro:

svn copy sourceURL branchURL

Em seguida, mude para esse branch:

svn switch branchURL

E comprometa suas alterações:

svn commit
Ryanprayogo
fonte
55

Você poderia fazer isso no TortoiseSVN assim:

  • Clique com o botão direito no diretório onde estão as alterações que você deseja ramificar. Não deve ser a raiz do repositório, menos para duplicar dessa forma;
  • Selecione TortoiseSVN -> " Branch / tag ... ";
  • Definir para URL : "svn: // host / repository / FooBar / branches / FooBarBranchName";
  • Certifique-se de que [*] Cópia de trabalho esteja selecionada . Isso garantirá que as alterações sejam confirmadas;
  • Mensagem de registro : "Experimentando com moscas :)";
  • Opcional: marque [*] Mudar cópia de trabalho para novo branch / tag . Isso é útil se você planeja continuar trabalhando no novo branch. Embora você também possa mudar para ele mais tarde.
  • Tente encontrar o botão OK . Dica: é centralizado na parte inferior da janela.

Aproveitar!

J Pollack
fonte
O que você quer dizer com "Não deve ser a raiz do repositório, menos para duplicar dessa forma"?
thekozak
Eu recomendo não escolher a pasta raiz com todas as subpastas irrelevantes que não estão sujeitas a serem modificadas no ramo. Posteriormente, será mais fácil mesclar o ramo (menor) de volta ao tronco.
J Pollack
No meu caso, comprometer apenas aquela pasta causou problemas porque o software depende de superpastas também. Acho que esse é o caso na maioria das vezes. Acho que, para a maioria dos casos de uso, é melhor apenas fazer o commit de tudo, então o commit da raiz, eu digo, é recomendado.
ikku100
@ ikku100 se não houver alterações nessas superpastas, qual será a diferença?
simpleuser
Pode ser porque as pessoas mais tarde podem enviar alterações lá, mas acho que você pode verificar a revisão correta da superpasta e, em seguida, verificar o branch da subpasta. O que é mais trabalho do que apenas se comprometer com o superdir, eu acho.
ikku100
8

Você pode criar um novo branch diretamente de seu diretório de trabalho e mudar o diretório de trabalho para esse branch.

Os comandos são svn copyesvn switch

Dima
fonte