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?

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

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!


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

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.