Porquê um sistema de controle de versão?

Mas a primeira questão poderá ser: porquê usar um sistema de controle de versão? Veja como a fonte é manuseada pelo pacote Debian. Primeiro, temos a fonte original pura, que geralmente é mantida por outra pessoa. O autor original tem a sua própria linha de desenvolvimento e lança a fonte em snapshots (geralmente chamadas de lançamentos ou versões do programa).

O responsável Debian adiciona um conjunto próprio de modificações, levando a uma versão própria do pacote original. O conjunto de diferenças entre estas duas versões acaba finalmente nos ficheiros .diff.gz da Debian, e este conjunto-patch é geralmente aplicado às versões originais futuras de modo a obter as "versões Debian".

Então a maneira óbvia de lidar com as actualizações/alterações da origem é usar cópias, patch, ferramentas de patch diferentes e scripts locais para automatizar tudo isto, ex. uupdate. No entanto, geralmente torna-se desagradável e desconfortável e não há maneira de desfazer alterações que possa fazer por engano.

Neste ponto, o sistema Subversion pode ser usado para simplificar esse trabalho. Faz as mesmas coisas que normalmente faria manualmente mas mantêm um arquivo próprio (um repositório). Armazena as linhas de desenvolvimento das fontes Original e Debian, mantendo-as em directórios diferentes (branches diferentes). Os branches estão ligados internamente (o VCS "conhece" o histórico do ficheiro e segue as diferenças entre as versões Original e Debian). Quando é instalada uma nova versão original, as diferenças entre as versões originais antiga e nova e a versão Debian são juntas.

Você pode criar imagens da sua versão Debian (etiquetá-las) e mudar para um estado anterior, ou ver as alterações feitas nos ficheiros. Você pode armazenar quando submete o ficheiro para o repositório ou colocar etiquetas personalizadas nos ficheiros ("propriedades") servindo vários objectivos.