none
Dúvidas Sobre Label.

    Pergunta

  • Olaa,

     

            Sou iniciante no Team Foundation Server 2010, e possuo o seguinte cenário, conforme explicitado abaixo:

     

    Cenário: Possuo Branch denominado Repositório, nesse Branch tenho a intenção de armazenar e homologar diferentes versões do sistema, realizei tal ação usando o o recurso de Label, mas algumas dúvidas surgiram, conforme mostrado abaixo:

     

    a) É correto usar o Label para definir versões do sistema ? Se sim é considerada uma boa prática ? senão qual a melhor forma de proceder para realizar tal controle ??

     

    b) Como efetuar um Build de uma versão que foi homologada atraves do Label ??

     

    Desde Já, Agradeço.


    Tiago Carmo Santos
    terça-feira, 17 de maio de 2011 14:09

Respostas

  • Tiago,

    Nossa, essa é uma pergunta extremamente complicada porque na realidade não existe uma resposta certa e existem algumas "brigas" quando começamos a falar de Branch para uma equipe ágil.

    Mas se você quiser utilizar Branch na sua estrutura, o controle vai ser um pouco diferente. Você não precisa gerar branches por versões nem mesmo label. O que vai acontecer é que você só vai jogar para uma branch de homologação ou produção as funcionalidades que você realmente terminou. Quando você for jogar de um Branch para o outro através do merge, você também tem que fazer um check-in.

    Ao fazer o check-in você gera um changeset, que é a únião dos arquivos, usuário que fez o check-in, data, e etc. Por aí vocês já tem um controle.

    Porém, existem pessoas que dizem o seguinte: Em uma equipe ágil não existe um bom motivo para você gerar branches, pois a versão não é controlada. Resumindo, se o objetivo da sprint é ao final dela gerarmos algo de valor para o nosso usuário, sempre vamos ter um produto fechado que o usuário poderá já usar.

    Qualquer alteração que for requisitada pelo usuário, ela deverá entrar no backlog e deverá ser avaliada para uma próxima sprint. Sendo assim, não precisamos ter um controle rígido, concorda?

    Mas na prática existem equipe usando agilidade e trabalhando com Branch. Um bom exemplo é descrito nesse post: http://blogs.msdn.com/b/billheys/archive/2011/01/18/branching-for-scrum.aspx

    Geralmente nas consultorias que faço, chegamos num modelo Branch For Small Scrum Teams

    Abs


    Claudio Leite Visual Studio ALM Ranger | PSD Trainner by Scrum.org Twitter: @claudiobernardo Blog: http://www.claudioleite.com
    terça-feira, 17 de maio de 2011 21:37

Todas as Respostas

  • Thiago,

    É correto sim. Você pode utilizar sem problemas. O próprio Visual Studio, quando você dispara uma build através do team build (a pasta de Builds no Team Explorer) gera uma label para aquela build, fazendo referência que foi aquela versão do código que você utilizou para gerar aquele resultado de build.

    O que deve ser avaliado é o porque você precisa ter essas versões e o quanto você precisa alterar elas. Por exemplo, se você trabalha com um produto especifico e precisa ficar dando suporte para clientes, talvez o label não será a melhor opção, pois você sempre terá que pegar os arquivos com aquele label, puxar para alguma área trabalhar eles compilar e fazer o check-in.

    Nesse caso a melhor sugestão seria você trabalhar com outros branches. Para cada versão do seu sistema que você fosse lançar e tiver que dar suporte, basta você ir no branch daquela versão e realizar todos os trabalhos necessários.

    O Label geralmente é mais utilizado para gerenciar alguma versão que você vá utilizar por pouco tempo. Nada que precise ser revisto daqui há 2 anos por exemplo. Nesse documento tem uma explicação melhor http://branchingguidance.codeplex.com/releases/view/2483 - Labeling Vs Branching

    No caso que eu descrevi, você poderia utilizar uma estratégia de branch por release. Para esse modelo, olha o Branch Guide dos ALM Visual Studio Rangers http://tfsbranchingguideiii.codeplex.com/releases/view/38849

    Sobre o como efetuar um build você pode na sua Build Definition, aba Advanced, tem a opção Get Version onde você pode especificar uma versão especifica. Se não estiver trabalhando com o build controller, você terá que baixar os arquivos daquela label para o seu workspace e realizar a build de forma manual.

    Se você quiser esse controle para o que passou por homologação, você faz o merge com o de produção, gera a label para aquelas versões e gera a build.

    Se tiver alguma dúvida a mais, fale um pouco mais sobre como você pretenderia usar o Label e Build, vai ajudar para chegarmos na solução.

    abs


    Claudio Leite Visual Studio ALM Ranger | PSD Trainner by Scrum.org Twitter: @claudiobernardo Blog: http://www.claudioleite.com
    terça-feira, 17 de maio de 2011 15:16
  • Prezado Claudio Leite,

     

     

                                    Novamente muito obrigado por sua atenção e dedicação nas respostas aos questionamentos, entendi que o Label pode ser utilizado para homologar e armazenar versões do código no processo de desenvolvimento, porêm não é o mais recomendado devido a sua estrutura, ou seja, não mantém um historico de mudanças realizadas no Label e dada certas permissões os labels podem ser facilmente modificados ou deletados, invalidando dessa forma aquela homologação, etc. Foi entendido os beneficios do uso do Branch para o armazenamento e homologação de versão, ou seja, teriamos um maior poder de controle de mudanças no branch que contém a versão. Mas temos algumas dúvidas, conforme mostradas abaixo:

     

    a) Trabalhamos com o Scrum, e no processo de desenvolvimento temos entregas no fim de cada Sprint, ou seja, se em todo o ciclo de       desenvolvimento de um produto tivermos 100 iterações, teremos 100 branches para homologação dessas diferentes versões ???

     

    b) Caso decidissemos trabalhar com o LABEL para homologar diferentes versões geradas por essas iterações, e dessemos permissões mais restritas as pessoas envolvidas no projeto, você nos aconselharia a usar o LABEL ?? Sendo que em qualquer momento do projeto sejamos capazes de pesquizar um Label específico a fim de efetuar um Publish.

     

    Novamente Obrigado pela atenção.

     

    Um grande abraço.


    Tiago Carmo Santos
    terça-feira, 17 de maio de 2011 18:12
  • Tiago,

    Nossa, essa é uma pergunta extremamente complicada porque na realidade não existe uma resposta certa e existem algumas "brigas" quando começamos a falar de Branch para uma equipe ágil.

    Mas se você quiser utilizar Branch na sua estrutura, o controle vai ser um pouco diferente. Você não precisa gerar branches por versões nem mesmo label. O que vai acontecer é que você só vai jogar para uma branch de homologação ou produção as funcionalidades que você realmente terminou. Quando você for jogar de um Branch para o outro através do merge, você também tem que fazer um check-in.

    Ao fazer o check-in você gera um changeset, que é a únião dos arquivos, usuário que fez o check-in, data, e etc. Por aí vocês já tem um controle.

    Porém, existem pessoas que dizem o seguinte: Em uma equipe ágil não existe um bom motivo para você gerar branches, pois a versão não é controlada. Resumindo, se o objetivo da sprint é ao final dela gerarmos algo de valor para o nosso usuário, sempre vamos ter um produto fechado que o usuário poderá já usar.

    Qualquer alteração que for requisitada pelo usuário, ela deverá entrar no backlog e deverá ser avaliada para uma próxima sprint. Sendo assim, não precisamos ter um controle rígido, concorda?

    Mas na prática existem equipe usando agilidade e trabalhando com Branch. Um bom exemplo é descrito nesse post: http://blogs.msdn.com/b/billheys/archive/2011/01/18/branching-for-scrum.aspx

    Geralmente nas consultorias que faço, chegamos num modelo Branch For Small Scrum Teams

    Abs


    Claudio Leite Visual Studio ALM Ranger | PSD Trainner by Scrum.org Twitter: @claudiobernardo Blog: http://www.claudioleite.com
    terça-feira, 17 de maio de 2011 21:37
  • Prezado Claudio Leite,

     

     

                      Novamente muito obrigado. As suas respostas nos tem sido de grande ajuda. Compreendemos que há um impasse sobre a utilização do Label ou Branch para definir versões de um sistema. Estamos avaliando a melhor saida para o nosso cenário.

     

    Novamente grato pela atenção.

    E um grande abraço.


    Tiago Carmo Santos
    quarta-feira, 18 de maio de 2011 14:36