Mesclar duas revisões de ramificação usando Subversion

95

Gostaria de mesclar todas as mudanças que ocorreram entre rev 10 e HEAD rev em http: // url-of-branch-a e aplicá-las a http: // url-of-branch-b .

Algo como...

svn merge -r 10:HEAD http://url-of-branch-a 

Isso é possível? Em caso afirmativo, qual é a sintaxe?

Estou executando o cliente SVN a partir da linha de comando do Unix. A versão do cliente SVN é 1.4

EDIT: Sim, minha solução específica foi ...

  1. mude o diretório para a localização da minha cópia de trabalho que deseja receber as mudanças (branch-b)
  2. svn merge -r 10: HEAD http: // url-of-branch-a

Isso mescla as alterações de 'branch-a' em 'branch-b'

user62732
fonte
4
Você também precisa saber quando o galho foi tomado. Você pode fazer isso (svn log --stop-on-copy.) Em seu branch para obter o número de revisão de onde você ramificou.
jmc de
@jmc você não precisa mais disso desde o ano de 2008 quando SVN 1.5 foi lançado, AFAIR
bahrep

Respostas:

55

Check-out URL A. Use SVN merge para mesclar URL B à sua cópia de trabalho de A. Commit A.

Ou vice-versa, é claro :)

Billy ONeal
fonte
127

O processo é como se segue:

  1. Estabeleça uma cópia de trabalho do branch B ( svn checkout http://branch-b)
  2. Mesclar as alterações do branch A na cópia de trabalho de B ( svn merge -r 10:HEAD http://branch-a .)
  3. Enviar (depois de resolver conflitos) a cópia de trabalho B para o ramal b ( svn commit)

Verifique a página de manual (arquivo de ajuda) para a semântica do svn merge. Mostra que svn merge sempre despeja os resultados em uma cópia de trabalho.

Confira o SVNBook para todos os detalhes.

Jamie Hale
fonte
Você também poderia dar uma ideia de como fazer isso usando o plugin SVN no eclipse?
Snehal Masne,
Isso funciona para mim: svn merge --force --allow-mixed-revisions -r 10: HEAD branch-a
Minh Nguyen
2
por que especificamos a revisão 10 para HEAD? Por que dois pontos de extremidade de revisão em vez de apenas uma revisão para usar como um instantâneo? a qual branch "10 to HEAD" se refere?
ahnbizcad
2

Principalmente confundir mergetentando fazer em svn repo, não podemos mesclar diretamente com svn repo, podemos mesclar para a cópia de trabalho da máquina local da seguinte maneira:

  • Esta cópia de trabalho deve ser destination URLmesclada (isto é, destino de verificação).

  • mesclar a cópia de trabalho com a source URLmesclagem.

  • commit para o destino.

Prática recomendada : Merge In, Merge Out.

Premraj
fonte