Distribuerad versionskontroll - Distributed version control

I mjukvaruutveckling är distribuerad versionskontroll (även känd som distribuerad revisionskontroll ) en form av versionskontroll där hela kodbasen , inklusive dess fullständiga historia, speglas på varje utvecklares dator. Jämfört med centraliserad versionskontroll möjliggör detta automatisk hantering av grenar och sammanslagningar , påskyndar de flesta operationer (förutom att trycka och dra), förbättrar möjligheten att arbeta offline och förlitar sig inte på en enda plats för säkerhetskopiering. Git , världens mest populära versionskontrollsystem, är ett distribuerat versionskontrollsystem.

År 2010 beskrev programvaruutvecklingsförfattaren Joel Spolsky distribuerade versionskontrollsystem som "möjligen det största framsteg inom mjukvaruutvecklingsteknik under de [senaste] tio åren".

Distribuerat kontra centraliserat

Distribuerade versionskontrollsystem (DVCS) använder en peer-to-peer- metod för versionskontroll, i motsats till klient-server- tillvägagångssättet för centraliserade system. Distribuerad revisionskontroll synkroniserar lagringsplatser genom att överföra patchar från peer till peer. Det finns ingen enda central version av kodbasen; i stället har varje användare en fungerande kopia och hela ändringshistoriken.

Fördelarna med DVCS (jämfört med centraliserade system) inkluderar:

  • Tillåter användare att arbeta produktivt när de inte är anslutna till ett nätverk.
  • Vanliga operationer (t.ex. commits, visningshistorik och återställning av ändringar) är snabbare för DVCS, eftersom det inte finns något behov av att kommunicera med en central server. Med DVCS är kommunikation endast nödvändig när du delar förändringar mellan andra kamrater.
  • Tillåter privat arbete, så att användare kan använda sina ändringar även för tidiga utkast som de inte vill publicera.
  • Arbetskopior fungerar effektivt som fjärransäkerhetskopior, vilket undviker att förlita sig på en fysisk maskin som en enda felpunkt.
  • Tillåter att olika utvecklingsmodeller används, till exempel att använda utvecklingsgrenar eller en Commander/Lieutenant -modell.
  • Tillåter centraliserad kontroll av "releaseversionen" av projektet
  • FOSS -mjukvaruprojekt är det mycket lättare att skapa en projektgaffel från ett projekt som har fastnat på grund av ledarskapskonflikter eller oenigheter.

Nackdelarna med DVCS (jämfört med centraliserade system) inkluderar:

  • Inledande utcheckning av ett arkiv är långsammare jämfört med kassan i ett centraliserat versionskontrollsystem, eftersom alla grenar och revisionshistorik kopieras till den lokala datorn som standard.
  • Avsaknaden av låsmekanismer som är en del av de flesta centraliserade VCS och fortfarande spelar en viktig roll när det gäller icke-sammanfogbara binära filer som grafiska tillgångar eller för komplexa enfiliga binära eller XML-paket (t.ex. kontorsdokument, PowerBI-filer, SQL Server Data Tools BI -paket, etc.).
  • Ytterligare lagring krävs för att varje användare ska ha en fullständig kopia av den fullständiga kodbashistoriken.
  • Ökad exponering av kodbasen eftersom varje deltagare har en lokalt sårbar kopia.

Vissa ursprungligen centraliserade system erbjuder nu några distribuerade funktioner. Till exempel kan Subversion utföra många operationer utan nätverk. Team Foundation Server och Visual Studio Team Services är nu värd för centraliserade och distribuerade versionskontrollförråd via hosting Git.

På samma sätt erbjuder vissa distribuerade system nu funktioner som minskar problemen med utcheckningstider och lagringskostnader, till exempel det virtuella filsystemet för Git som utvecklats av Microsoft för att fungera med mycket stora kodbaser, vilket exponerar ett virtuellt filsystem som bara laddar ner filer till lokal lagring som de behövs.

Arbetsmodell

Den distribuerade modellen är i allmänhet bättre lämpad för stora projekt med delvis oberoende utvecklare, till exempel Linux -kärnprojektet, eftersom utvecklare kan arbeta självständigt och skicka sina ändringar för sammanslagning (eller avslag). Den distribuerade modellen möjliggör flexibelt antagande av anpassade arbetsflöden för källkod. Den integrator arbetsflöde är den mest använda. I den centraliserade modellen måste utvecklare serialisera sitt arbete för att undvika problem med olika versioner.

Centrala och filialförråd

Varje projekt har ett centralt förvar som anses vara det officiella förvaret, som hanteras av projektunderhållarna. Utvecklare klonar detta arkiv för att skapa identiska lokala kopior av kodbasen. Källkodändringar i det centrala förvaret synkroniseras periodiskt med det lokala förvaret.

Utvecklaren skapar en ny gren i sitt lokala arkiv och ändrar källkoden på den grenen. När utvecklingen är klar måste förändringen integreras i det centrala förvaret.

Dra förfrågningar

Bidrag till ett källkodförråd som använder ett distribuerat versionskontrollsystem görs vanligtvis med hjälp av en dragbegäran , även känd som en sammanfogningsbegäran . Bidragsgivaren begär att projektunderhållaren drar ändringen av källkoden, därav namnet "dragbegäran". Underhållaren måste slå ihop dragbegäran om bidraget skulle bli en del av källbasen.

Utvecklaren skapar en dragbegäran för att meddela underhållare om en ny ändring; en kommentarstråd är kopplad till varje dragbegäran. Detta möjliggör fokuserad diskussion av kodändringar . Skickade dragförfrågningar är synliga för alla med lagringsåtkomst. En dragbegäran kan accepteras eller avvisas av underhållare.

När dragbegäran har granskats och godkänts slås den samman i förvaret. Beroende på det etablerade arbetsflödet kan koden behöva testas innan den ingår i den officiella versionen. Därför innehåller vissa projekt en särskild gren för att slå samman otestade pull -begäranden. Andra projekt kör en automatiserad testsvit för varje dragbegäran, med hjälp av ett kontinuerligt integrationsverktyg som Travis CI , och granskaren kontrollerar att varje ny kod har lämplig testtäckning.

Historia

De första DVCS-systemen med öppen källkod inkluderade Arch , Monotone och Darcs . Öppen källkod DVCS var dock aldrig särskilt populär förrän Git och Mercurial släpptes .

BitKeeper användes vid utvecklingen av Linux -kärnan från 2002 till 2005. Utvecklingen av Git , nu världens mest populära versionskontrollsystem, föranleddes av beslutet från företaget som fick BitKeeper att upphäva den kostnadsfria licensen som Linus Torvalds och några andra Linux -kärnutvecklare hade tidigare utnyttjat.

Se även

Referenser

externa länkar