Bör Du Använda en Git Alternativ?

0
196

Git är otroligt populära och stöds nästan överallt. Med det i praktiken är standard version control system, det väcker frågan, vad är ditt alternativ? Är de värt att överväga, och hur är de olika?

Observera att denna artikel diskuterar alternativ till git som källa control software. Om du bara letar efter alternativ till en tjänst som Github, kan du läsa vår guide till värd Git lösningar istället.

Nackdelar för Git

För att bättre förstå de begränsningar av Git, bör vi först börja med vad det inte rätt.

Git använder en distribuerad källa kontroll modell; varje användares lokala förrådet är egentligen inte kopplad till någon central server. Att användaren kan gå offline, göra en massa förändringar, och ingen annan kommer att se dessa förändringar tills de trycks på fjärrkontrollen. Detta fungerar extremt bra för utvecklingen av öppen källkod; Git är mycket snabbare för de flesta åtgärder, eftersom enskilda användare kan klona ett förråd och gör sina egna små förändringar utan att behöva oroa dig för vad andra människor gör.

Dessa förändringar kan integreras i master repository med hjälp av dra-förfrågningar (användaren att göra ändringar begär för master repository att dra förbinder sig från sin egen version av repo), och uppdateringar skjuts från autentiserade användare, tillhandahåller alla samman konflikter är ordentligt löst.

Denna modell gör massor av känsla för denna distribuerad miljö för utveckling, men problemet med Git gäller när du försöker att anpassa den för användning i ett företags miljö, där du ofta har många personer som arbetar på samma bitar av kod, och en god samordning är nyckeln.

Inte få oss fel här—det är fortfarande fantastisk, särskilt när det paras ihop med externa fråga mjukvara och CI – /CD-rörledningar, något som tjänster som GitLab och BitBucket göra ganska bra. Men Git var inte direkt är byggd för att vara företagets control, där du är nästan alltid kommer att ha en central server som fungerar som master repository. Det kräver mycket korrekt användning (och ofta externa verktyg) för att vara effektiva för agila team skjuta en hel del ändringar i koden.

Med Git, varje klient lagrar en kopia av det projekt ändringsloggen. Varje gång du gör en commit i Git, det lagrar de förändringar som begår görs lokalt på ditt system. Detta gör du arbetar med Git mycket snabbt, eftersom du bara behöver fråga en hårddisk och inte en central server. Det gör också att du kan arbeta offline mycket lättare. Men med stora projekt med en lång ändra historien, detta kan också leda till .git-mappen tar upp en orimlig mängd utrymme.

Också, om du har flera projekt, du förmodligen inte vill ha källkoden för allt synligt för alla utvecklare. I Git, detta problem brukar lösas genom att ha ett separat förråd för varje projekt, som fungerar ganska bra, men är inte perfekt om du behöver för att integrera ihop dem till ett sammanhängande stycke. Med centraliserad version control kan du ge åtkomst till specifika mappar.

Så, medan Git är nog inte fel val för ditt företag, speciellt om de genomförs på rätt sätt, det är en annan källa kontroll alternativ som byggdes specifikt för företagets arbetsflöden, och det kan vara värt att titta på tävlingen.

RELATERAT: Hur man sätter Upp en Personlig Gitlab Server

Det Primära Alternativet: Centraliserad Kontroll Av Version

Den vanligaste skillnaden mellan Git och alternativ är det paus från decentraliserad kontroll av version till förmån för en central, auktoritära servern. Apache Subversion och Team Foundation Version Kontroll är större version control system som följer det här formatet.

För jämförelse, i en DVC-system, varje användare har ett lokalt arkiv om att de begår sina egna ändringar. När de är redo att skicka uppdateringar till master-servern, är det möjligt för andra användare att du har olika versioner av samma fil som du arbetar på. Detta är känt som en sammanfogning av konflikter, och det är en mycket vanlig (dock enkelt lösas) problemet med Git.

I centraliserad version control (CVC) som Apache Subversion, det är en enda server arkivet, och många klienter som är anslutna direkt till den. Om du gör en ändring i en fil är uppdaterad på andra användare av maskiner när de uppdaterar. Begår görs direkt till master-servern.

För att förhindra att sammanfoga konflikter, de flesta CVC system använder lås. Om En Användare vill jobba med en fil, och inte vill att någon annan ska jävlas med det, de kan låsa filen tills de är klara, att hindra andra användare från att göra samma sak. Detta krävs inte i Subversion, och sammanfoga konflikter kan fortfarande hända, men de är mindre av en olycka.

Problemet är oftast lindras med förgreningar och lokala kopior, som tillåter flera användare att arbeta på sina egna versioner för längre tid innan samman ändringar.

En annan bra funktion för centraliserad kontroll av version är tillstånd förvaltning, snarare än att ge tillgång till hela arkivet, CVC gör det lätt att avsnitt av tillgång till specifika mappar. Team Foundation Version Kontroll fungerar på ungefär samma sätt som Subversion, så granulat tillstånd delegationen ner till filen nivå.

Alla dessa funktioner gör centraliserad version kontroll ett konkurrenskraftigt alternativ till DVC. Efter alla, Google är värd all sin kod i en massiv, centraliserat system, som är mycket större än någon distribuerade system kan hantera. Beviljas, Windows kodbasen är en 300 GB Git-repo, men det är med hjälp av Git: s Virtuella filsystem plugin som tillåter användare att ladda ner filer som de behöver och inget mer.

En nackdel med Subversion är dock att det ofta har en hel del av kopiering och nedladdning att göra, vilket kan göra det mycket långsammare än Git: s lokal-modell.

RELATERAT: De Bästa Alternativen till Github

Andra Alternativ

Samtidigt som vi har fokuserat på centraliserad version control system som kan ersätta Git, det finns andra distributed version control system som du kan använda, framför allt Mercurial.

Mercurial är lite enklare att använda än Git, och de är båda ungefär samma prestanda-wise, men generellt är de väldigt lika. Verkligen, det finns inte mycket anledning att välja Mercurial över Git, andra än personliga preferenser, som förmodligen inte vara dikterar företagens beslut.

Mercurial används för att vara ett alternativ i BitBucket, men de tappade stöd för den nyligen, den primära orsaken är att Git är bara sättet mer populära och har ett brett stöd. Det är så gott som standard version control system, och om inte ett alternativ är att radikalt förändra modellen (som CVC), det är inte värt att överväga.