O Que é um Ramo?

Suponha que seja sua função manter um documento para um setor da sua empresa, um manual de algum tipo. Um dia, um setor diferente lhe pede o mesmo manual, mas com algumas partes “ajustadas” para eles, uma vez que fazem coisas de de modo ligeiramente diferente.

O que você faz nessa situação? Você faz a coisa mais óbvia: você cria uma segunda cópia desse documento e começa a manter as duas cópias separadamente. À medida que cada departamento lhe pede para fazer pequenas mudanças, você as incorpora a uma cópia ou a outra.

Você frequentemente quer fazer a mesma mudança a ambas as cópias. Por exemplo, se você descobre um erro na primeira cópia, é muito provável que o mesmo erro exista na segunda cópia. Afinal, os dois documentos são quase os mesmos; eles só diferem em aspectos pequenos e específicos.

Esse é o conceito básico de um ramo— especificamente, uma linha de desenvolvimento que existe independentemente de outra linha, ainda que compartilhem uma história em comum se você fizer um retrospecto de tempo suficiente. Um ramo inicia sempre sua vida como uma cópia de alguma coisa, que se desenvolve a partir de lá, gerando sua própria história.(see Figura 4.1, “Ramos de desenvolvimento”).

Figura 4.1. Ramos de desenvolvimento

Ramos de desenvolvimento

Subversion tem comandos para lhe ajudar a manter ramos paralelos dos seus arquivos e diretórios. Ele lhe permite criar ramos copiando seus dados, e lembra que as cópias estão relacionadas a outra cópia. Ele até lhe ajuda a duplicar as mudanças de um ramo para outro. Finalmente, ele pode fazer as porções da sua cópia de trabalho refletirem ramos diferentes, de forma que você possa “misturar e casar” diferentes linhas de desenvolvimento em seu trabalho diário.