Eu estive lendo sobre ramificação / fusão com o Subversion 1.5 usando o excelente e gratuito Version Control with Subversion . Eu acho que entendo como usar o cliente de linha de comando do Subversion para executar as ações necessárias com mais freqüência, que são:
Atualizar ramificação com alterações do tronco
No diretório de trabalho da filial, execute:
svn merge http://svn.myurl.com/proj/trunk
Mesclar ramificação no tronco
No diretório de trabalho do tronco, execute:
svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch
No entanto, estamos usando o TortoiseSVN 1.5 como nossa interface para o Subversion. Gostaria de saber qual a melhor maneira de executar essas operações com o TortoiseSVN. A nova caixa de diálogo fornece três opções diferentes no menu principal.
- Mesclar várias revisões
- Reintegrar uma ramificação
- Mesclar duas árvores diferentes
Pelo que entendi, o TortoiseSVN sempre executa svn com a seguinte sintaxe.
svn merge [--dry-run] --force From_URL @ revN To_URL @ revM PATH
Além disso, a reintegração de uma ramificação geralmente falha com uma mensagem informando que alguns destinos não foram mesclados e, portanto, ela não pode continuar; portanto, tive que usar a opção nº 3.
Minhas perguntas são:
- Como uso o TortoiseSVN 1.5 para mesclar alterações do tronco para um ramo?
- Como uso o TortoiseSVN 1.5 para mesclar a ramificação ao tronco, com e sem o método de reintegração?
- Qual das opções acima devo usar para cada uma e por quê?
EDITAR
Através de testes "dry run", descobri que a operação do Subversion na linha de comando
svn merge http://svn.myurl.com/proj/trunk
é análogo à opção 1 (Mesclar um intervalo de revisões) no TortoiseSVN, desde que eu deixe o intervalo de revisões em branco.
fonte
Respostas:
O comportamento depende da versão do seu repositório. O Subversion 1.5 permite 4 tipos de mesclagem:
O Subversion anterior a 1.5 permitiu apenas os 2 primeiros formatos.
Tecnicamente, você pode executar todas as mesclagens com os dois primeiros métodos, mas os dois últimos habilitam o rastreamento de mesclagem do subversion 1.5.
As opções do TortoiseSVN mesclam um intervalo ou mapas de revisões para o método 3 quando o seu repositório é 1.5+ ou para o método um quando o repositório é mais antigo.
Ao mesclar recursos em uma ramificação de liberação / manutenção, você deve usar o comando 'Mesclar um intervalo de revisões'.
Somente quando você deseja mesclar todos os recursos de uma ramificação de volta a uma ramificação pai (geralmente tronco), você deve usar 'Reintegrar uma ramificação'.
E o último comando - surgir duas árvores diferentes - só é útil quando você deseja sair do comportamento normal de ramificação. (Por exemplo, comparando versões diferentes e depois mesclando a diferença para outra ramificação)
fonte
Não consegui seguir corretamente as outras respostas, aqui está mais um guia de manequins ...
Você pode fazer isso de qualquer maneira para ir
trunk -> branch
oubranch -> trunk
. Eu sempretrunk -> branch
corrigo todos os conflitos lá e depois faço a mesclagembranch -> trunk
.Mesclar tronco em uma ramificação / tag
fonte
trunk
ebranch
, em seguida, certificando-se de que você mesclar as alterações detrunk
quebranch
, logo que possível irá evitar conflitos, tanto quanto possível. Isto significa que quando você mesclarbranch
paratrunk
não deve haver quaisquer conflitos.Você deve usar "mesclar um intervalo de revisão".
Para mesclar alterações do tronco para uma ramificação, dentro da cópia de trabalho da ramificação, escolha "mesclar intervalo de revisões" e insira a URL do tronco e as revisões de início e fim a serem mescladas.
O mesmo da maneira oposta para mesclar um ramo no tronco.
Sobre o sinalizador --reintegrate, consulte o manual aqui: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate
fonte
Dê uma olhada no svnmerge.py . É uma linha de comando, não pode ser invocada pelo TortoiseSVN, mas é mais poderosa. Do FAQ :
fonte
Clique com a tecla Shift pressionada na pasta e selecione TortoiseSVN -> Mesclar tudo
fonte