Pergunta

Atualmente estou reformulando a maneira nossa loja faz version-control. Nós estaremos usando uma solução de controle de versão centrada no servidor.

Eu gostaria de ver como outras pessoas estão se expandindo, e fazê-lo com sucesso, sem todas as dores de cabeça que eu li sobre.

O que são alguns testados em campo ramificação padrões que você já viu em um ambiente de produção que funcionou bem ou seja ramificação por liberação. Que políticas foram postas em prática para garantir que a ramificação ocorre sem problemas.

Graças

Foi útil?

Solução

Depende de que tipo de software que você está desenvolvendo.

Para nós, somos uma loja de web, de modo que não tem nenhum 'lançamentos' numeradas. Nós mantemo-tronco como o que é 'produção' digna e só comprometer diretamente pequenas alterações.

Quando temos um grande projeto, criamos um ramo e trabalhá-lo até a produção pronta, todos os durante a sincronização tronco muda para ele.

Se o projeto envolve uma grande reestruturação da base de código que geralmente criar uma tag na última revisão antes de instalar as mudanças de filiais.

Novamente, se você está criando pacotes de software que você precisa para manter diferentes versões isso não vai funcionar tão bem.

Para o registro, nós usamos Subversion .

Outras dicas

O subversão reservar descreve alguns usados padrões de ramificação (por exemplo, ramos, galhos de libertação apresentam, etc.).

3 coisas ao considerar ramificação.

Primeiro: Ramificação é bom, contanto que você tem a intenção de coisas mesclagem de volta mais tarde. Claro que você pode sempre ter um ramo com um patch específico para um de seu cliente com um problema específico. Mas eventualmente você deseja mesclar a maioria dos patches de volta para o tronco principal

Segundo: Assert suas necessidades. Eu vi árvores de todos os tamanhos, dependendo do tamanho do departamento, o número de clientes, etc. ...

Em terceiro lugar: Verifique como bom seu controle de origem é para ramificação e mesclagem. Por exemplo, CVS é ??notoriamente muito pobre para este tipo de operação. SVN "CVS feito à direita" como eles dizem, é um pouco melhor. Mas Linus Torvalds, que criou Git (que é especialmente bom para este tipo de operação) iria dizer-lhe CVS não pode ser feito à direita (ele disse que em uma apresentação muito interessante sobre Git). Então se você tem necessidade real de ramificação e mesclagem, pelo menos, obter SVN não CVS.

Tenha um olhar em padrões de ramificação:

http://www.cmcrossroads.com/bradapp/acme/branching/

Ele descreve uma série de padrões para trabalhar com padrões. Eu geralmente trabalhava de duas maneiras:

  • Stable Receber Line - todo o desenvolvimento é feito em ramos e fundidos em troncos apenas quando necessário. Isso significa que você sempre tem um único ponto versão estável.

  • principal linha de desenvolvimento - todo o trabalho é realizado em tronco. Quando se trata de liberar você tomar uma tag liberação e uso isso. Se grande retrabalho experimental é necessária ela é realizada em um ramo e integrado de volta para tronco quando estável.

Esta é a forma como fazemos e ele funciona bem para nós ...

Project
   |
   +--01-Development
   |  |
   |  +--Release1.0
   |  |  |
   |  |  +--Solution Files
   |  |   
   |  +--Release2.0
   |     |
   |     +--Solution Files
   |
   +--02-Integration
   |  |
   |  +--Release1.0
   |  |  |
   |  |  +--Solution Files
   |  |   
   |  +--Release2.0
   |     |
   |     +--Solution Files
   |
   +--03-Staging
   |
   +--04-Production

assim que você começa a idéia ...

NOTA: Esta é existir a estrutura de diretórios em Ramos Team Foundation Server apenas entre 01-Desenvolvimento / Release1.0 e 02-Integração / Release1.0, 02-Integração / Release1.0 e 03-O estadiamento / Release1.0, 03-Staging / Release1.0 e 04-Produção / Release1.0

Em outras palavras, você não seria capaz de mesclar 03-Staging / Release1.0 para 04-Produção / Release2.0, etc ...

O que isto significa para nós é que temos 4 ambientes separados desenvolvimento, integração (alpha servidor), o armazenamento temporário (servidor beta), Produção.

Código começa em começos de desenvolvimento em desenvolvimento e, em seguida, é promovido como teste QA (integração / alpha) e usuários (Staging / beta) e, finalmente, para a produção.

Características / alterações são recolhidos e agrupados em lançamentos que occure cada poucos meses.

Mas vamos dizer que você está em desenvolvimento para Release2.0 e você terá um problema de produção no Release1.0 ... Eu facilmente pode obter última versão do Release1.0 e corrigir o problema e promovê-lo sem efetuar qualquer coisa que eu têm vindo a trabalhar há Release2.0

Não estou dizendo que isso vai funcionar para todos em todas as situações, mas isso funciona muito bem para nós.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top