quarta-feira, março 23, 2011

Como fazer merges entre branches não relacionados com o TFS 2010

O TFS 2010 é uma solução de Gestão do Ciclo de Vida de Aplicações (ALM - Application Lifecycle Management) completa. Um dos recursos disponíveis é o controle de versões avançado e extremamente poderoso.

O TFS 2010 Source Control permite a criação de branches, inclusive quando necessário com relações e hierarquias pai-filho entre branches. Realizar o merge entre branches relacionados pode ser feito via linha de comando ou diretamente da interface gráfica do Team Explorer.

No exemplo abaixo podemos ver uma hierarquia de branches:
Se pedirmos para realizar um merge a partir do branch HotFix ele abrirá a seguinte janela de wizard:

Notem que não aparece a opção para realizar um merge de HotFix para Dev ou HotFix para Prod. Apenas de HotFix para QA. Isso acontece porque HotFix só está relacionado com o branch QA.

Para fazer um merge entre branches não relacionados, o TFS 2010 dá a opção de realizar um baseless merge. O baseless merge deve inicialmente ser feito via linha de comando (no TFS 2010, mas via interface gráfica já é um pedido de usuários do produto e provavelmente aparecerá em novas versões do Team Foundation Server). O comando para fazer o merge entre HotFix e Dev, sem passar pelo branch QA, seria o seguinte:

tf merge /baseless Hotfix Dev /recursive

Após a realização de um baseless merge, via linha de comando, a interface do Team Explorer já mostra o merge realizado através de uma linha pontilhada ligando os branches não relacionados. E outra vantagem é que nos próximos merges entre esses branches já é possível usar a própria interface gráfica!



Do ponto de vista teórico não é recomendado fazer merges entre branches não relacionados, mas é possível com o TFS 2010! Para mais dicas de estratégias de branching recomendo o Visual Studio TFS Branching Guide 2010.

1 Comentários:

At 3:45 PM, Blogger Leonardo Stern disse...

Considero fundamental que os merges sejam feitos com 3 pontos de referencia (base comum, branch A e branch B)

No exemplo citado, o TFS consegue identificar a versão base (neste caso específico,o changeset da branch dev utilizado para criar a branch QA) e repassar para uma ferramenta externa automaticamente ?

 

Postar um comentário

Links para este artigo:

Criar um link

<< Home


Veja as Estatísticas