Ramificação (controle de versão) - Branching (version control)

Ramificação , no controle de versão e gerenciamento de configuração de software , é a duplicação de um objeto sob controle de versão (como um arquivo de código-fonte ou uma árvore de diretório ). Cada objeto pode, a partir daí, ser modificado separadamente e em paralelo para que os objetos se tornem diferentes. Neste contexto, os objetos são chamados de ramos . Os usuários do sistema de controle de versão podem ramificar qualquer filial.

Os ramos também são conhecidos como árvores , riachos ou linhas de código . A ramificação de origem é às vezes chamada de ramificação pai , ramificação upstream (ou simplesmente upstream , especialmente se as ramificações forem mantidas por diferentes organizações ou indivíduos) ou fluxo de apoio . Filiais filhas são filiais que possuem um pai; uma ramificação sem pai é chamada de tronco ou linha principal .

Em alguns sistemas de controle de revisão distribuída , como Darcs , não há distinção feita entre repositórios e branches; nesses sistemas, buscar uma cópia de um repositório é equivalente a ramificar.

A ramificação também geralmente implica na capacidade de posteriormente mesclar ou integrar as alterações de volta na ramificação pai. Freqüentemente, as alterações são mescladas de volta ao tronco, mesmo que este não seja o ramo pai. Um branch que não se destina a ser mesclado (por exemplo, porque foi licenciado novamente sob uma licença incompatível por um terceiro ou tenta servir a um propósito diferente) é geralmente chamado de fork .

Motivações para ramificação

Ramificações permitem que partes do software sejam desenvolvidas em paralelo. Grandes projetos exigem que muitas funções sejam preenchidas, incluindo desenvolvedores, gerentes de construção e pessoal de garantia de qualidade . Além disso, pode ser necessário manter várias versões em diferentes plataformas de sistema operacional. As ramificações permitem que os contribuidores isolem as alterações sem desestabilizar a base de código, por exemplo, correções para bugs, novos recursos e integração de versões . Essas alterações podem ser mescladas posteriormente (ressincronizadas) após o teste.

Ramo de desenvolvimento

Um branch de desenvolvimento ou árvore de desenvolvimento de um software é uma versão que está em desenvolvimento e ainda não foi lançada oficialmente . Na comunidade de código aberto , a noção de lançamento é tipicamente metafórica, uma vez que qualquer pessoa geralmente pode verificar qualquer versão desejada, seja no ramo de desenvolvimento ou não. Muitas vezes, a versão que acabará por se tornar a próxima grande versão é chamado o ramo de desenvolvimento. No entanto, geralmente há mais de uma versão subsequente do software em desenvolvimento em um determinado momento.

Alguns sistemas de controle de revisão têm jargão específico para o ramo de desenvolvimento principal; por exemplo, no CVS , é denominado "PRINCIPAL"; no Git , é chamado de "mestre". Um termo mais genérico é " tronco ".

Sombra ou ramos mágicos

No cvc e CVSNT , uma sombra ou branch mágico "sombras" são feitas no branch upstream, para tornar mais fácil manter pequenas alterações (cvc é um sistema de construção de pacotes de código aberto que incorpora um sistema de controle de revisão para pacotes produzidos por rPath . )

Clones de repositório

No controle de revisão distribuída , todo o repositório, com ramificações, pode ser copiado e trabalhado posteriormente. Monotone (mtn), Mercurial (hg) e git chamam de "clone"; Bazaar chama isso de "filial".

Veja também

Referências