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.

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

Prima generație

modificare

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ție

modificare

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ție

modificare

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.

Terminologie

modificare
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 Versiunilor

modificare
Vezi și Listă de software pentru controlul versiunilor