Distribuert versjonskontroll - Distributed version control

I programvareutvikling er distribuert versjonskontroll (også kjent som distribuert revisjonskontroll ) en form for versjonskontroll der hele kodebasen , inkludert hele historien, speiles på hver utviklers datamaskin. Sammenlignet med sentralisert versjonskontroll, muliggjør dette automatisk forvaltning forgrening og sammenslåing , fremskynder de fleste operasjoner (bortsett fra å skyve og trekke), forbedrer muligheten til å jobbe offline og er ikke avhengig av et enkelt sted for sikkerhetskopiering. Git , verdens mest populære versjonskontrollsystem, er et distribuert versjonskontrollsystem.

I 2010 beskrev programvareutviklingsforfatter Joel Spolsky distribuerte versjonskontrollsystemer som "muligens det største fremskrittet innen programvareutviklingsteknologi de siste ti årene".

Distribuert kontra sentralisert

Distribuerte versjonskontrollsystemer (DVCS) bruker en node-til-node- tilnærming til versjonskontroll, i motsetning til klient-server- tilnærmingen til sentraliserte systemer. Distribuert revisjonskontroll synkroniserer lagre ved å overføre oppdateringer fra peer til peer. Det er ingen sentral versjon av kodebasen; i stedet har hver bruker en arbeidskopi og full endringshistorikk.

Fordelene med DVCS (sammenlignet med sentraliserte systemer) inkluderer:

  • Lar brukerne jobbe produktivt når de ikke er tilkoblet et nettverk.
  • Vanlige operasjoner (som forpliktelser, visningshistorikk og tilbakeføring av endringer) er raskere for DVCS, fordi det ikke er behov for å kommunisere med en sentral server. Med DVCS er kommunikasjon bare nødvendig når du deler endringer mellom andre jevnaldrende.
  • Tillater privat arbeid, slik at brukerne kan bruke endringene sine selv for tidlige utkast de ikke vil publisere.
  • Arbeidskopier fungerer effektivt som eksterne sikkerhetskopier, noe som unngår å stole på en fysisk maskin som et enkelt feilpunkt.
  • Lar ulike utviklingsmodeller brukes, for eksempel bruk av utviklingsgrener eller en kommandør/løytnant -modell.
  • Tillater sentralisert kontroll av "utgivelsesversjonen" av prosjektet
  • FOSS -programvareprosjekter er det mye lettere å lage en prosjektgaffel fra et prosjekt som er stoppet på grunn av lederkonflikter eller uenigheter.

Ulemper med DVCS (sammenlignet med sentraliserte systemer) inkluderer:

  • Første utsjekking av et depot er tregere sammenlignet med kassen i et sentralisert versjonskontrollsystem, fordi alle grener og revisjonshistorikk er kopiert til den lokale maskinen som standard.
  • Mangelen på låsemekanismer som er en del av de fleste sentraliserte VCS og fremdeles spiller en viktig rolle når det gjelder ikke-sammenslåbare binære filer, for eksempel grafiske eiendeler eller for komplekse enkeltfilers binære eller XML-pakker (f.eks. Kontordokumenter, PowerBI-filer, SQL Server Data Tools BI -pakker, etc.).
  • Ekstra lagring kreves for at hver bruker skal ha en komplett kopi av den komplette kodebasehistorikken.
  • Økt eksponering av kodebasen siden hver deltaker har en lokalt sårbar kopi.

Noen opprinnelig sentraliserte systemer tilbyr nå noen distribuerte funksjoner. For eksempel kan Subversion utføre mange operasjoner uten nettverk. Team Foundation Server og Visual Studio Team Services er nå vert for sentraliserte og distribuerte versjonskontrolllagre via hosting Git.

På samme måte tilbyr noen distribuerte systemer nå funksjoner som reduserer problemene med betalingstid og lagringskostnader, for eksempel Virtual File System for Git utviklet av Microsoft for å fungere med veldig store kodebaser, som avslører et virtuelt filsystem som bare laster ned filer til lokal lagring som de trengs.

Arbeidsmodell

Den distribuerte modellen er generelt bedre egnet for store prosjekter med delvis uavhengige utviklere, for eksempel Linux -kjerneprosjektet, fordi utviklere kan jobbe uavhengig og sende inn endringene for sammenslåing (eller avvisning). Den distribuerte modellen tillater fleksibelt bruk av arbeidsflyter for tilpasset kildekode. Den integrator arbeidsflyten er den mest brukte. I den sentraliserte modellen må utviklere serialisere arbeidet sitt for å unngå problemer med forskjellige versjoner.

Sentral- og filiallagre

Hvert prosjekt har et sentralt depot som regnes som det offisielle depotet, som administreres av prosjektholderne. Utviklere kloner dette depotet for å lage identiske lokale kopier av kodebasen. Kildekodeendringer i det sentrale depotet blir periodisk synkronisert med det lokale depotet.

Utvikleren oppretter en ny gren i sitt lokale depot og endrer kildekoden på den grenen. Når utviklingen er gjort, må endringen integreres i det sentrale depotet.

Trekk forespørsler

Bidrag til et kildekodeoppbevaringssted som bruker et distribuert versjonskontrollsystem, gjøres vanligvis ved hjelp av en pull -forespørsel , også kjent som en fletteforespørsel . Bidragsyteren ber om at prosjektets vedlikeholder trekker kildekoden endringen, derav navnet "pull request". Vedlikeholderen må slå sammen trekkforespørselen hvis bidraget skulle bli en del av kildebasen.

Utvikleren oppretter en pull -forespørsel for å varsle vedlikeholdere om en ny endring; en kommentarstråd er knyttet til hver trekkforespørsel. Dette gir mulighet for fokusert diskusjon av kodeendringer . Innsendte pull -forespørsler er synlige for alle med depottilgang. En trekkforespørsel kan godtas eller avvises av vedlikeholdere.

Når trekkforespørselen er gjennomgått og godkjent, slås den sammen til depotet. Avhengig av den etablerte arbeidsflyten, må koden kanskje testes før den inkluderes i den offisielle utgivelsen. Derfor inneholder noen prosjekter en spesiell gren for sammenslåing av uprøvde trekkforespørsler. Andre prosjekter kjører en automatisk testpakke på hver pull -forespørsel, ved hjelp av et kontinuerlig integreringsverktøy som Travis CI , og korrekturleseren sjekker at ny kode har passende testdekning.

Historie

De første åpen kildekode DVCS-systemene inkluderte Arch , Monotone og Darcs . Imidlertid var DVCS -er med åpen kildekode aldri veldig populære før utgivelsen av Git og Mercurial .

BitKeeper ble brukt i utviklingen av Linux -kjernen fra 2002 til 2005. Utviklingen av Git , nå verdens mest populære versjonskontrollsystem, ble bedt om av beslutningen fra selskapet som fikk BitKeeper til å oppheve gratis lisens som Linus Torvalds og noen andre Linux -kjerneutviklere hadde tidligere benyttet seg av.

Se også

Referanser

Eksterne linker