Tenk deg at det er din jobb å vedlikeholde et dokument for en avdeling i firmaet ditt, en håndbok av et eller annet slag. En dag spør en annen avdeling deg etter den samme håndboka, men med noen deler “spesialtilpasset” for dem, siden de gjør ting litt forskjellig.
Hva gjør du i denne situasjonen? Du gjør den opplagte tingen: Du lager en annen kopi av dokumentet og begynner å vedlikeholde de to kopiene separat. Etterhvert som hver avdeling ber deg om å gjøre små forandringer, legger du dem inn i den ene kopien eller den andre.
Du vil ofte ønske å gjøre den samme forandringen i begge kopiene. Hvis du for eksempel finner en skrivefeil i den første kopien, er det veldig sannsynlig at den samme trykkfeilen eksisterer i den andre kopien. De to dokumentene er nesten like når alt kommer til alt; forskjellene er små og spesifikke.
Dette er det grunnleggende konseptet for en forgrening – det vil si en utviklingslinje som eksisterer uavhengig av en annen linje, men som likevel deler en felles historie hvis du ser langt nok tilbake i tid. En forgrening begynner bestandig livet som en kopi av noe, og går videre derfra ved å lage sin egen historie (se Figur 4.1, “Forgreninger av utviklingen”).
Subversion har kommandoer for å hjelpe deg å vedlikeholde parallelle forgreninger av filene og katalogene dine. Programmet lar deg opprette forgreninger ved å kopiere data, og husker at kopiene er relaterte til hverandre. I tillegg får du også hjelp til å duplisere forandringer fra en gren til en annen. Til sist, Subversion kan la porsjoner av arbeidskopien reflektere forskjellige forgreninger, så du kan “blande og tilpasse” forskjellige utviklingslinjer i ditt daglige arbeid.