Controlul versiunilor

Controlul versiunilor (din engleză: version control sau revision control) este un domeniu software care se ocupă cu gestionarea mai multor versiuni (numite și revizii) ale unor fișiere. Este aplicată cu predilecție în programare, cu scopul de a păstra versiuni succesive ale codului sursă al unui program de calculator. O soluție ar fi arhivarea separată și completă a fiecărei versiuni a programului într-o bază de date (pe un purtător de date extern), dar această metodă ar necesita în general prea mult spațiu de memorie. În locul ei se utilizează tehnici speciale, care reduc memoria totală necesară și care facilitează reconstrucția „în zbor”, la cerere, a oricărei versiuni din istoria programului.

IstorieModificare

Istoria uneltelor de Control al versiunilor poate fi împarțită în trei generații:

Prima generațieModificare

Prima generație de unelte pentru controlul versiunilor foloseau/versionau câte un singur fișier și nu aveau o corespundere între diferite fișiere din repository. Acestea nu aveau suport pentru rețea.

Exemple de astfel de unelte: Source Code Control System (SCCS), Revision Control System (RCS).

A doua generațieModificare

A doua generație de unelte pentru controlul versiunilor folosesc/versionează mai multe fișiere si aveau o corespundere directă între ele. Acestea erau centralizate.

Exemple de astfel de unelte: Concurrent Versions System (CVS), Subversion (SVN), TFS, Perforce, SVK, VSS.

A treia generațieModificare

A treia generație de unelte pentru controlul versiunilor folosesc/versionează mai multe fișiere si aveau o corespundere directă între ele dar sunt descentralizate.

Exemple de astfel de unelte: git, BitKeeper (BK), Bazaar.

TerminologieModificare

repository
„depozitul“ în care sunt păstrate fișierele curente și versiunile anterioare. Deseori acest depozit este o bază de date găzduită pe un server.
working copy (copie de lucru)
copie a fișierelor din repository pe calculatorul de lucru al unui dezvoltator (de unde și numele). Acestea sînt fișierele pe care lucrează un dezvoltator în mod obișnuit.
check-out
operația de creare a unei copii de lucru luate din repository
commit sau check-in
operația de introducere în repository a schimbărilor din copia de lucru
update (actualizare)
introducerea în copia de lucru a schimbărilor făcute de alte persoane (colegi la același proiect) la repository
branch (ramificare)
bifurcarea unui set de fișiere în două căi de dezvoltare distincte
merge (integrare)
unirea a două versiuni diferite ale unui aceluiași fișier într-o singură versiune
tag
o „etichetă“ aplicată fișierelor din repository la un anumit moment important din "viața" programului, de exemplu la lansarea unui produs

Exemple de programe și sisteme pentru Controlul VersiunilorModificare

Vezi și Listă de software pentru controlul versiunilor