Estou em um projeto onde todo o trabalho entra via pull requests. E não é código open source, é projeto para cliente, código fechado. O que percebemos é que o PR é um excelente instrumento de code review, valendo a pena mesmo em projetos fechados. Até uns anos atrás o TFS/VSTS não dava suporte a PR, e agora o suporte existe e está cada vez melhor.

Eu precisava começar a fazer builds dos PRs, e descobri uns meses atrás que é possível, basta configurar uma política de branch:

image

Com isso, ele vai fazer o build de todo PR para a branch master. O que eu não sabia é que, ao atualizar o branch de destino (nesse caso, o master), o PR aparece como desatualizado.

Fiz um teste, criei um PR do branch “b” para o master. Ele fez o build. Em seguida, fiz outro commit no branch master, ou seja, o branch master foi atualizado depois que o PR foi criado.

O TFS percebe que houve alteração, e oferece para reavaliar o merge, para confirmar se se haverá ou não um conflito. E mostra que houve uma build anterior, mas ela está expirada. E ao clicar em re-evaluate, o VSTS vai verificar se o PR ainda integra sem problemas:

image

Ele faz então a verificação, mas não faz de fato o merge, só confirma:

image

Se o PR pode ser integrado sem problemas, vai continuar marcando a build anterior como expirada:

image

E então inicia, sozinho, o novo build (não há necessidade de clicar em “rebuild”):

image

E assim que o build terminar, ele demonstra o que aconteceu. No meu exemplo abaixo, o build passou. Ele vai permitir também integrar o PR:

image

Abaixo vocês podem ver que a build foi iniciada, várias vezes, pelo mesmo PR:

image

Achei ótimo e queria compartilhar com vocês. Funciona exatamente como eu esperava que funcionava. E ainda mantém um histórico de consulta fácil, tudo integrado. Excelente! E tudo isso de graça!

Você já usaram? O que acham? Contem aí nos comentários.

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.