Medan Subversion (SVN) repositories liknar Git repositories är skillnaden mellan de två ganska subtila. Båda är de två mest populära versionskontrollsystemen som används för att spåra ändringar i källkoden över tiden, men de har sin rättvisa andel av skillnader vad gäller arkitektur. De kan göra liknande saker som märkning och förgrening, men de skiljer sig dramatiskt i hur de lagrar saker. Git är ett fritt och open source-versionsstyrningssystem som distribueras under GNU-licens, medan SVN är ett centraliserat versionsstyrningssystem som distribueras under öppen källkodslicens. Denna artikel lyfter fram några viktiga skillnader mellan de två.
Initialt skapad för utveckling av Linux-kärnan av Linus Torvalds med hjälp av en egen DVCS-kallad BitKeeper, har Git inlett en ny nivå av samverkande kodning bland utvecklingssamhället. Git är ett av de mest populära verktygen som används i nästan tusentals projekt och antas av miljontals utvecklare runt om i världen. Det är ett distribuerat versionsstyrsystem som är utformat för att hålla flikar över ändringarna till källkoden över tiden genom att behålla en speciell typ av databas som kallas det lokala förvaret som är den exakta klonen i centralförvaret som tillåter användare att lagra både aktuella och tidigare versionshistorier av filer i sina lokala maskiner. Den största fördelen med Git är att den inte är beroende av nätverksåtkomst för sin verksamhet som säkerställer innehållsintegritet.
Subversion, eller SVN, är ett fritt och open source-versionsstyrningssystem som används för att hantera och lagra filer och de ändringar som gjorts dem över tiden på en centraliserad server. Det distribueras under Apache-licensen som öppen källkod. Grundat av CollabNet 2000 har SVN funnits i över ett decennium och fortsätter att njuta av omfattande adoption som ett framgångsrikt VCS-verktyg i både open source-samhället och företagsekosystemet. Till skillnad från Git lagrar SVN versionsversionerna av filer på en centraliserad server. Det skapar filialer i centrala förvaret som utgörs av kataloger. När en användare vill göra ändringar i koden gör de det från sina egna maskiner och när de är klara, trycker de koden tillbaka till centralförvaret.
Medan båda är de två populäraste källkodsprogramvarusystemen som används för att hålla flikar över förändringar i källkod över tiden, skiljer de sig väldigt olika från varandra. Git är ett distribuerat versionsstyrningssystem som använder ett distribuerat system för att katalogisera alla versioner av en projektfil. Subversion (svn) å andra sidan är ett centraliserat versionerings- och revisionskontrollsystem som distribueras under öppen källkodslicens.
Git är ett distribuerat versionsstyrningssystem som betyder snarare än att använda en centraliserad server för att lagra och hantera källkoden, det skapar ett lokalt arkiv som är inget annat än klonet i det centrala förvaret som gör det möjligt för utvecklare att göra förändringar av hela saken lokalt. Det lokala förvaret består av allt från versionshistorik till filialer till metadata, allting. Å andra sidan, när utvecklare åtar sig att subversion, skickar de alla ändringar tillbaka till centralförvaret.
När användarna kolla ett förråd i Git får de en komplett klon av det hela som lagras på sina lokala maskiner. De måste "trycka" de ändringar som gjorts i koden för att dela den med andra användare, eller "dra" för att synkronisera den med ett fjärrförråd. Detta gör det enkelt för flera användare att samarbeta utan att störa centralförvaret. I subversion delar varje användare samma centrala förråd via förgrening.
Git är minst beroende av nätverksåtkomst eftersom de flesta av dess operationer är tillgängliga offline. Användare kan göra sammanslagning, rebase och branching utan att ens oroa sig för nätverksåtkomst. Nätverk krävs emellertid bara när användare behöver synkronisera sitt lokala förråd med centralförvaret. Subversion kräver å andra sidan nätverksåtkomst för de flesta operationer eftersom det inte har något lokalt förråd för att lagra ändringarna lokalt.
Allt i Git är kryptografiskt sammankopplat med hjälp av SHA-1 hash-algoritmen innan den lagras vilket säkerställer att kodens innehåll är robust. Det gör det praktiskt taget omöjligt att ändra innehållet i koden utan att Git vet om det. Subversion, tvärtom, har inte hashed-innehåll vilket betyder att det inte garanterar innehållsintegritet i händelse av nätverks- eller diskfel. Git är utan tvekan det bättre alternativet när det gäller innehållsintegritet.
Git är utan tvekan ett av de mest populära och mest använda versionskontrollsystemen som är speciellt utformade för att hantera allt från små till stora projekt. Det är ett styrsystem för öppen källkod distribuerad version som används för att lagra och behålla ändringar i källkoden över tiden i ett lokalt arkiv, vilket bara är klonet i det centrala förvaret. SVN är också ett versionsstyrningssystem som används för i princip samma syfte med undantag för hur de lagrar saker. Till skillnad från Git använder SVN en centraliserad server för att behålla aktuella och tidigare versioner av filer som källkod, dokumentation, webbsidor etc. En stor fördel Git har över SVN är att Git-användare kan ha versionskontrollen utan att ens oroa sig för nätverket tillgång som är mycket osannolikt i SVN.