maio
12
2011

Utilização de Trunk, Branch e Tag no SVN

Utilização de Trunk, Branch e Tag no SVN

Utilização de Trunk, Branch e Tag no SVN

Conceito

Trunk/Tronco

A pasta trunk é principal área de desenvolvimento.

Todas as atualizações efetuadas dia-a-dia são armazenadas na pasta trunk.

Geralmente contém os arquivos mais atuais do projeto, bem como as correções de bugs e os últimos recursos adicionados ao projeto.

Branch/Ramo

A pasta branch contém uma cópia de determinada revisão de trunk quando este estiver estável ou for necessário criar uma nova funcionalidade que posteriormente será mesclada devolta ao tronco ou até mesmo para criar outra linha de desenvolvimento intependente do tronco.

Tag

Normalmente utilizada para lançamentos de “releases”, a tag marca um ponto estável do desenvolvimento.

A seguir um exemplo de utilização

Um projeto inicia e um repositório é criado. Ex.: meuprojeto 1.0.

O projeto é desenvolvido na pasta trunk.

Quando chega a hora de liberar uma versão, a pasta trunk é copiada para a pasta branch e dado um nome de versão.

Este branch é congelado e não sofre mais alterações, apenas correções. Rigorosos testes são efetuados.

Quando os testes efetuados encima de um branch estão completos, a versão que se encontra no branch é copiada para a pasta tags, formando assim um “release” ou uma versão “liberada”. Ex.: meuprojeto 1.0.

O projeto continua em desenvolvimento em trunk até que chegue a hora de lançar uma nova versão. Ex.: meuprojeto 2.0.

Havendo mais algum bug na tag “meuprojeto 1.0″, será corrigido no branch correspondente e criada uma nova tag, evitando ter que liberar a versão mais nova – possivelmente inacabada ou não testada. Ex.: meuprojeto 1.1.

Qualquer modificação em branch, deve ser copiada para a pasta de tags e ser mesclado ao trunk, após todos os testes.

Branchs e tags em SVN são leves – no servidor, ele não faz uma cópia completa dos arquivos, apenas um marcador dizendo “esses arquivos foram copiados nesta revisão”, que ocupa apenas alguns bytes. Com isto em mente, você nunca deve se preocupar sobre espaço ocupado.

Written by Luis com S in: PHP | Tags:, , , , ,

Deixe um Comentário

Loading Disqus Comments ...
Loading Facebook Comments ...

10 Comments »

  • Eldius disse:

    Mandou bem, rapaz…
    Há um tempo atrás eu procurei algo resumido sobre o assunto e não encontrei…

  • Antonio disse:

    eu li em algum lugar, quando vamos adicionar uma função ou tela temos que primeiro fazer um branch,
    é verdade??

    ai como ficaria
    trunk codigo do repositorio

    programador 1 faz um branch tela 1
    programador 2 faz um branch tela 2

    ai depois o gerente de desenvolvimento tem que faz o merge para o trunk

    depois de todos os merge para trunk
    e estabilizado o programa tem que fazer um branch 2.0

    realizar os testes no branch 2.0
    copiar tag release

    esta certo oque escrevi ??

    • Luis com S disse:

      Boa tarde,
      Primeiramente obirgado pelo comentário, ficarei feliz em responder suas perguntas.
      Abaixo as respostas:

      P: Eu li em algum lugar, quando vamos adicionar uma função ou tela temos que primeiro fazer um branch,
      é verdade?

      R: Sim e não. Explico:
      Digamos que estamos em desenvolvimento no projeto X que atualmente está na versão 1.0, o desenvolvimento desta versão no trunk.
      Quando for a hora de lançar a versão estável do projeto cria-se um branch(X 1.0). Feitos os testes cria-se uma tag(X 1.0), é feito merge no trunk e seque o desenvolvimento da versão 2.0 no trunk. Porém se na versão 1.0 for necessário adicionar uma função/tela antes do lançamento da versão 2.0 desenvolve-se isso a partir do branch(X 1.0) criado no lançamento da versão para não interferir no desenvolvimento da versão 2.0. Quando concluída a adição da função/tela é feito merge no trunk e cria-se outra tag(X 1.1).
      Se a função/tela for pate do desenvolvimento da versão 2.0 não é neccesário criar branch/tag para isso pois a versão 2.0 vai ser um conjunto de funções/telas que representam alguma melhoria.

      Espero ter ajudado.

  • Herberts Cruz disse:

    Boa tarde Luis.

    Parabéns pela iniciativa, teu post é realmente esclarecedor e de fácil entendimento, estou aplicando agora esta estrutura versão de projeto em meu departamento e teu post me foi muito útil para entende-la e criar uma cultura de versionamento de software. Em fim obrigado pela iniciativa. Também tenho um blog com algumas matérias, se lhe interessar faça uma visita, ficarei feliz em postar algo que seja de teu interesse.

  • Excelente artigo (simples e direto)!

    Mas só uma observação: após realizar as correções no branch e gerar a nova tag, o branch deve ser mesclado com o trunk para disponibilizar as correções na próxima versão também. Senão o trunk vira uma pilha de bugs…

    Certo?

    vlw,
    Marcus V. Paiva

  • Gostei muito desse post… super claro e simples. E a figura, ficou sensacional, deu pra visualizar claramente tudo q irá acontecer. Obrigada.

  • jordan disse:

    Parábens pelo tutorial, me ajudou muito.

RSS feed for comments on this post. TrackBack URL


Leave a Reply to jordan


Time limit is exhausted. Please reload CAPTCHA.

Design: TheBuckmaker.com Web Templates