Sunteți pe pagina 1din 35

PROGRAMAREA ÎN REȚEA

TEMA 2.
Versionarea codului
sursă utilizînd git

Aureliu Zgureanu,
conf. univ., dr.

Chișinău 2020
Agenda

1. Noțiune de SCV

2. Istoricul dezvoltării SCV/ Clasificare

3. Terminologie

4. Exemple de de SCV

5. Git. Instalare. Noțiuni de bază. Particularități


Definiție

 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.
 Un sistem de control al versiunilor (SCV)
reprezintă un produs software.
Clasificare SCV
Prima generatie
Prima generatie de unelte pentru
controlul versiunilor
foloseau/versionau cate un
singur fisier si nu aveau o
corespundere intre diferite fisiere
din repository. Acestea nu aveau
suport pentru retea.
Exemple de astfel de unelte:
Source Code Control System
(SCCS), Revision Control
Clasificare SCV
A doua generatie (centralizate)
A doua generatie de unelte
pentru controlul versiunilor
folosesc/versionează mai multe
fisiere și aveau o corespundere
directă între ele. Acestea erau
centralizate.
Exemple de astfel de unelte:
Concurrent Versions System
(CVS), Subversion (SVN), TFS,
Perforce, SVK, VSS.
Clasificare SCV
A treia generatie (distribuite)
A treia generatie de unelte pentru
controlul versiunilor
folosesc/versioneaza mai multe
fisiere si aveau o corespundere
directa intre ele dar sunt
descentralizate.
Exemple de astfel de unelte: git,
BitKeeper (BK), Bazaar.
Terminologie

 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
Terminologie

 Clone
– Creeaza o noua instanta de repository, care este copia unui alt
repository.
 Push
– Copiaza seturi de schimbari (changesets) de pe o instante locala
de repository pe una straina.
 Pull
– Copiaza seturi de schimbari de pe o instanta straina pe una locala
Terminologie

 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
Terminologie

 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 SCV

• Bazaar
• BitKeeper
• CVS
• Darcs
• Git
• Mercurial
• Perforce
• StarTeam
• Subversion
• Visual SourceSafe
• Visual Studio Team System
Git. Instalare. Noțiuni de bază.

GIT este un sistem de versionare distribuit


ce ruleaza, sub licenta GNU, pe majoritatea
sistemelor de operare existente:
Linux, OSX, Windows
Git. Instalare. Noțiuni de bază.

 Autorul Git este Linus Torvalds, parintele


Linux, cel care l-a conceput in 2005 ca urmare
a conflictului aparut cu BitKeeper, vechiul
sistem de versionare folosit pentru kernelul de
Linux.
 Proiecte majore ce folosesc GIT: linux-kernel,
debian, eclipse, Fedora, GNOME, GTK, rsync,
Ruby on Rails
Git. Instalare. Noțiuni de bază.

Original author(s) Linus Torvalds


Developer(s) Junio Hamano and others
Initial release 7 April 2005;
Stable release 2.14.1 / 4 August 2017;
Repository git-scm.com/downloads
Development status Active
Git. Instalare. Noțiuni de bază.

Written in C, Shell, Perl, Tcl, Python


Operating system POSIX: Linux, Windows, macOS
Platform IA-32, x86-64
Available in English
Type Version control
License GNU GPL v2[5] and GNU LGPL v2.1
Website git-scm.com
Instalare Git

 https://git-scm.com/downloads
Git. Instalare. Noțiuni de bază.

GIT este un sistem de versionare distribuit


ce ruleaza, sub licenta GNU, pe majoritatea
sistemelor de operare existente:
Linux, OSX, Windows
Sistem Centralizat
Sistem distribuit.
Instantanee (Snapshots)
Sistem distribuit.
Instantanee (Snapshots)
Integritatea (SHA-1)
Stări ale datelor în GIT
Stări ale datelor în GIT
Stări ale datelor în GIT

 consemnat (eng. committed)

 modificat (eng. modified)

 în așteptare (eng. staged)


Stări ale datelor în GIT

consemnat (eng. committed):


modificările aduse au fost stocate
în directorul GIT (eng. GIT
directory/repository); în acesta sunt
reținute toate metadatele și obiectele bazei
de date locale conținând istoricul tuturor
versiunilor, elemente preluate de fiecare
dată când sunt descărcate actualizări ale
proiectului;
Stări ale datelor în GIT

modificat (eng. modified):


modificările aduse nu au fost stocate în baza
de date locală; astfel de fișiere se regăsesc
în zona de lucru (eng. working area), de pe
discul local, în care a fost descărcată o
anumită versiune a proiectului, spre a fi
modificată;
Stări ale datelor în GIT

în așteptare (eng. staged):


modificările aduse au fost consemnate spre a fi
incluse într-un instantaneu ce va fi stocat în
baza de date locală; acestea sunt reținute
în zona de așteptare (eng. staging area), un
fișier (denumit și index) din directorul GIT care
conține toate modificările ce vor fi consemnate
în următoarea versiune.
Unelte GIT web

https://github.com/
https://bitbucket.org/
https://gitlab.com/
Configurare git

git config (--global) user.name <username>

git config (--global) user.email <email>


Creare repository

git init <directory>


Clone repository

git clone <repository>


Asocierea cu proiect remote

git remote add <nume> <URL-ul proiectului>


Starea fișierelor

git status
git log
git diff
Ignorarea anumitor fisiere

Fisierele sau directoarele ce se doresc a fi ignorate


de sistemul de versionare pot fi trecute intr-un fisier
numit .gitignore.
Ex:
bin/ # va ignora toate fisierele din folderul bin
target/ # va ignora toate fisierele din folderul target
*.log # va ignora toate fisierele cu extensia .log

S-ar putea să vă placă și