În timp ce depozitele Subversion (SVN) sunt similare cu depozitele Git, diferența dintre cele două este destul de subtilă. Ambele sunt cele două sisteme cele mai populare de control al versiunilor disponibile folosite pentru a urmări schimbările sursă în timp, dar au o cotă echitabilă de diferențe în termeni de arhitectură. Ei pot face lucruri similare, cum ar fi etichetarea și ramificarea, dar ele diferă dramatic în modul în care stochează lucrurile. Git este un sistem de control al versiunii liber și open-source distribuit sub licența GNU, în timp ce SVN este un sistem centralizat de control al versiunilor distribuit sub licența open-source. Acest articol evidențiază unele diferențe majore dintre cele două.
Inițial creat pentru dezvoltarea kernelului Linux de către Linus Torvalds folosind un DVCS propriu numit BitKeeper, Git a inaugurat un nou nivel de codificare colaborativă în rândul comunității dezvoltatorilor. Git este unul dintre cele mai populare instrumente folosite în aproape mii de proiecte și adoptat de milioane de dezvoltatori din întreaga lume. Este un sistem de control al versiunii distribuite, proiectat să păstreze filele privind modificările la codul sursă de-a lungul timpului, menținând un tip special de bază de date denumit depozit local, care este clona exactă a depozitului central, care permite utilizatorilor să stocheze istoricul versiunii curente și anterioare fișiere în mașinile lor locale. Principalul avantaj al Git este că nu depinde de accesul la rețea pentru operațiunile sale care asigură integritatea conținutului.
Subversion sau SVN este un sistem gratuit de control al versiunilor cu versiuni deschise, folosit pentru gestionarea și stocarea fișierelor, precum și modificările aduse acestora în timp într-un server centralizat. Acesta este distribuit sub licența Apache ca open source. Fondată de CollabNet în 2000, SVN a fost în jur de peste un deceniu și continuă să se bucure de adoptarea pe scară largă ca un instrument de succes VCS atât în comunitatea open source, cât și în cadrul ecosistemului corporativ. Spre deosebire de Git, SVN stochează istoricul versiunilor de fișiere într-un server centralizat. Creează sucursale în interiorul depozitului central reprezentate ca directoare. Atunci când un utilizator dorește să facă modificări în cod, acesta face acest lucru de la propriile mașini, iar după terminarea lor, ele împing codul înapoi la depozitul central.
În timp ce ambele sunt cele mai populare două versiuni software de control al versiunii open source folosite pentru a păstra tab-urile cu privire la modificările sursă în timp, acestea sunt foarte diferite una de cealaltă. Git este un sistem de control al versiunii distribuite care utilizează un sistem distribuit pentru a cataloga toate versiunile unui fișier de proiect. Subversion (svn), pe de altă parte, este un sistem centralizat de control al versiunilor și reviziilor distribuit sub licența open-source.
Git este un sistem de control al versiunii distribuite care înseamnă mai degrabă decât să folosească un server centralizat pentru a stoca și gestiona codul sursă, creează un depozit local care nu este altceva decât clona a depozitului central care permite dezvoltatorilor să facă schimbări la nivel local. Depozitul local constă în totul, de la istoricul versiunilor la sucursale până la metadate, totul. Pe de altă parte, atunci când dezvoltatorii se angajează să subversie, ei trimit toate modificările înapoi la depozitul central.
Când utilizatorii verifică un depozit în Git, ei primesc o clonă completă a întregului lucru care este stocat pe mașinile locale. Ei trebuie să "împingă" modificările aduse codului pentru al partaja cu alți utilizatori sau să "tragă" pentru sincronizarea acestuia cu un depozit la distanță. Acest lucru facilitează colaborarea mai multor utilizatori fără a deranja depozitul central. În subversiune, fiecare utilizator partajează același depozit central prin ramificare.
Git este cel mai puțin susceptibil de acces la rețea deoarece majoritatea operațiilor sale sunt disponibile offline. Utilizatorii pot face fuzionarea, rebasele și ramificațiile fără a fi îngrijorați de accesul la rețea. Cu toate acestea, rețeaua este necesară numai atunci când utilizatorii trebuie să sincronizeze repositoryle locale cu depozitul central. Subversiunea, pe de altă parte, necesită acces la rețea pentru majoritatea operațiunilor sale deoarece nu are un depozit local pentru a stoca modificările la nivel local.
Totul din Git este verificat sumar criptografic folosind algoritmul hash SHA-1 înainte de a fi stocat, ceea ce asigură robustețea conținutului codului. Aceasta face practic imposibilă modificarea conținutului codului fără ca Git să știe despre el. Subversiunea, dimpotrivă, nu conține conținuturi rulate, ceea ce înseamnă că nu garantează integritatea conținutului în caz de defectare a rețelei sau discului. Git este, fără îndoială, cea mai bună alternativă atunci când vine vorba de integritatea conținutului.
Git este, fără îndoială, unul dintre cele mai populare și utilizate pe scară largă sisteme de control disponibile, care este proiectat special pentru a se ocupa de orice, de la proiecte mici la mari. Este un sistem de control al versiunii distribuite cu sursă deschisă, folosit pentru stocarea și menținerea schimbărilor în codul sursă în timp într-un depozit local care nu este altceva decât clona a depozitului central. SVN este, de asemenea, un sistem de control al versiunii utilizat în esență în același scop, cu excepția modului în care stochează lucrurile. Spre deosebire de Git, SVN folosește un server centralizat pentru a menține versiunile curente și anterioare ale fișierelor, cum ar fi codul sursă, documentația, paginile web etc. Un avantaj deosebit pe care Git îl are asupra SVN este că utilizatorii Git pot avea controlul versiunii fără îngrijorare cu privire la rețea acces care este foarte puțin probabil în SVN.