Git 🌙
Chapters â–Ÿ 2nd Edition

1.1 Kom igÄng - Om versionshantering

Detta kapitel kommer att handla om hur du kommer igÄng med Git. Vi börjar med en liten introduktion till versionshanteringsverktyg, sedan gÄr vi vidare med hur du fÄr igÄng Git pÄ din dator, och slutligen hur du kan börja anvÀnda det. I slutet av kapitlet skall du förstÄ varför Git finns, varför det skall anvÀndas och du skall vara redo att kunna anvÀnda det.

Om versionshantering

Vad Ă€r “versionshantering”, och varför skall du bry dig? Ett versionshanteringsverktyg Ă€r ett program som hĂ„ller reda pĂ„ Ă€ndringar i en eller flera filer över tid sĂ„ att du kan Ă„terskapa specifika versioner vid en senare tidpunkt. I exemplena i denna boken, kommer du att anvĂ€nda kĂ€llkod som de filer som skall versionshanteras, men i verkligheten kan du göra samma sak med nĂ€stan vilken typ av fil som helst pĂ„ en dator.

Om du Ă€r grafiker eller webdesigner och vill spara varje version av en bild eller layout (vilket du med största sannolikt vill), sĂ„ Ă€r ett versionshanteringssysttem (VCS, efter engelskans “Version Control System”) en bra sak att anvĂ€nda. Det tillĂ„ter dig att Ă„terskapa valda filer eller hela projekt till ett tidigare tillstĂ„nd, jĂ€mföra Ă€ndringar över tid, se vem som senast Ă€ndrade nĂ„got som kan ge upphov till ett problem, vem som introducerade ett fel och nĂ€r, samt mycket mer. Att anvĂ€nda ett VCS betyder Ă€ven att om du klantar till det eller förlorar filer, sĂ„ kan du i regel med lĂ€tthet Ă„terstĂ€lla allt. Allt detta fĂ„r du utan att det ger speciellt mycket merarbete.

Lokala versionshanteringssystem

MÄnga vÀljer att kopiera filer till ett annan mapp för som en primitiv versionshanteringsmetod (förslagsvis en mapp med aktuell tid i namnet, om man har tÀnkt till). Detta arbetssÀtt Àr mycket vanligt för att det Àr sÄ enkelt, men det Àr ocksÄ vÀldigt felkÀnsligt. Det Àr lÀtt att glömma vilken mapp du Àr i och rÄkar skriva till fel fil eller skriver över filer som du inte hade tÀnkt.

För att hantera detta problem, utvecklade programmerare för lÀngesedan lokala VCS som hade en simpel databas för att hÄlla koll pÄ Àndrigarna i filerna som var versionshanterade.

Local version control diagram
Figur 1. Lokal versionshantering.

En av de mer populÀra VCS-verktygen var ett system som kallades RCS, vilket Àn idag distribueras med mÄnga datorer. RCS arbetar genom att hÄlla reda pÄ s.k. patchar (d.v.s. skillnader mellan filer) i ett speciellt format pÄ hÄrddisken; det kan Äterskapa hur en fil sÄg ut vid en speciell tidpunkt genom att summera de olika patcharna.

Centraliserade Versionshanteringssystem

NÀsta stora problem folk stöter pÄ Àr nÀr de skall samarbeta med andra utvecklare pÄ andra system. För att hantera detta problem utvecklade man centrala versionshanteringssystem (CVCS). Dessa system (som t.ex. CVS, Subversion, och Perforce) har en enda server som innehÄller alla versionshanterade filer och ett antal klienter som checkar ut filer frÄn den centrala servern. Under mÄnga Är var detta det vanligaste sÀttet att versionshantera.

Centralized version control diagram
Figur 2. Centraliserad versionshantering.

Denna setup ger mÄnga fördelar, speciellt över lokala VCS. Till exempel sÄ vet alla, till viss del, vad andra gör i projektet. Administratörer har detaljerad kontroll över vem som kan göra vad, och det Àr betydligt enklare att administrera ett centralt system Àn att hantera lokala databaser pÄ varje klient.

Dock har denna setup nĂ„gra verkliga tillkortakommanden. Den mest uppenbara Ă€r den felkritiska del som en enda central server utgör. Om servern gĂ„r ner under en timme sĂ„ kan ingen samarbeta alls eller spara versionshanterade Ă€ndringar av nĂ„got de jobbar med för tillfĂ€llet. Om hĂ„rddisken pĂ„ servern blir korrupt eller skadas, och att inga sĂ€kerhetskopior har sparats, sĂ„ förloras allt — hela projektets historik, förutom enstaka versioner som folk rĂ„kar ha pĂ„ sina lokala maskiner. Lokala versionshanteringssystem lider av samma problem — om hela projektets historik finns lagrat pĂ„ ett enda stĂ€lle, riskerar man att förlora allt.

Distribuerade Versionshanteringssystem

Det Àr hÀr distribuerade versionshanteringssystem (DVCS) kommer in. I ett sÄdant system, checkar klienterna inte ut den senaste versionen av filerna; istÀllet speglar de hela förvaret, inklusive all historik. SÄledes, om en server dör och systemen samarbetar via den servern, sÄ kan vilken som helst av klienternas förvar kopieras upp till servern för att ÄterstÀlla den. Varje klon Àr i sjÀlva verket en fullstÀndig sÀkerhetskopia av all data.

Distribuerad versionshantering.
Figur 3. Distribuerad versionshantering.

Vidare hanterar dessa systemen ganska bra med att ha flera fjÀrrförvar som de kan jobba med, sÄ du kan samarbeta med olika personer pÄ olika sÀtt samtidigt inom samma projekt. Detta ger möjligheten att anvÀnda sig av olika arbetsflöden som inte Àr möjliga med centrala system, som t.ex. hierarkiska modeller.

scroll-to-top