Quando i sistemi centralizzati creano un ramo, fanno varie cose . Perforce e Subversion sono unique nell'uso delle directory per i rami, e più tardi copiano l'idea dal primo. CVS ha filiali come concetto separato dalle directory e così fa la maggior parte degli altri sistemi di controllo delle versioni centralizzati.
L'uso delle directory per le filiali in Subversion è una riduzione apparente rispetto a un concetto più elementare che sfortunatamente ha i suoi aspetti negativi, perché l'unione ha senso solo per i rami, ma deve essere implementata per le directory arbitrarie in questo modello ed è generalmente complicata molto da questo.
L'uso di sottodirectory per le filiali non è adatto ai sistemi distribuiti, perché i rami sono la base per la distribuzione e quindi devono essere un concetto separato di prima classe.
La vera differenza tra la ramificazione nei sistemi centralizzati e distribuiti è che nei sistemi centralizzati per creare un ramo devi chiedere al server centrale, che significa nominare il ramo in un modo per evitare conflitti e round-trip al server e così via nel sistema distribuito ogni checkout è un ramo per progetto, quindi lo hai sempre quando ne hai bisogno.
E si noti che anche nel sistema centralizzato il checkout contenente le modifiche locali è una specie di ramo (ad eccezione delle viste dinamiche ClearCase). È solo un ramo con funzionalità molto limitate che può contenere solo le modifiche non vincolate.
Alcune note aggiuntive:
Subversion può cambiare ramo in un particolare checkout.
Subversion crea una nuova directory per un ramo, ma non duplica il contenuto dei file, quindi non c'è davvero molta differenza nell'efficienza dello storage.
Un sistema distribuito (in cui l'identità di revisione viene mantenuta durante lo spostamento tra repository) non può utilizzare le directory per le filiali, ma esiste un sistema decentralizzato, SVK , che è costruito sopra a subversion e usa le directory per i rami e funziona tramite il mirroring dei repository di subversion.