Hvad er versionsstyring?
Versionsstyring er det system der gemmer hver ændring i et projekts kode med hvem der lavede den, hvornår og hvorfor. Det gør at man kan gå tilbage til en tidligere tilstand og at mange kan arbejde parallelt uden at overskrive hinanden. Git er standarden i dag, med tjenester som GitHub og GitLab bygget ovenpå.
Versionsstyring er noget af det mest grundlæggende i moderne softwareudvikling, men også noget af det der sjældent bliver forklaret for den der køber udviklingen. Det er værd at forstå, for det hænger direkte sammen med et af de vigtigste spørgsmål overhovedet: Ejer I virkelig jeres kode? Her er hvad det betyder.
Definitionen
Versionsstyring er det system der gemmer hver ændring i et projekts kode med oplysninger om hvem der lavede den, hvornår og hvorfor. I stedet for at koden kun findes i én tilstand der hele tiden ændrer sig, opbygges en fuldstændig historik hvor hvert trin er bevaret, og hvor man kan vende tilbage til ethvert af dem.
Det løser to problemer på én gang. For det første kan man altid gå tilbage til en tidligere tilstand hvis noget går galt: en uendeligt meget stærkere fortryd-funktion. For det andet kan mange udviklere arbejde i den samme kodebase parallelt uden at overskrive hinandens arbejde fordi systemet holder styr på ændringerne og fletter dem sammen.
Git er standarden
I praksis betyder versionsstyring i dag næsten altid Git. Det er værktøjet der står for selve historikken, og det er blevet så dominerende at det er den selvfølgelige standard i stort set alle professionelle udviklingsteams.
Oven på Git ligger tjenester som GitHub og GitLab. De opbevarer koden centralt på et sikkert sted og tilføjer alt det der gør teamarbejde smidigt: code review, rettighedsstyring, håndtering af issues og automatiske tests. Git er motoren under kølerhjelmen; GitHub og GitLab er platformene hvor teamet samles om koden. Forskellen er værd at kende, for det er på platformen at din adgang som kunde ligger.
To begreber: commit og branch
To ord går hele tiden igen, og de er enklere end de lyder.
En commit er en gemt ændring. Hver gang en udvikler har afsluttet et trin, gemmes resultatet som en commit: et navngivet punkt i historikken med en kort beskrivelse af hvad der blev gjort. Det er som at sætte et bogmærke efter hvert afsluttet trin så man altid kan finde tilbage.
En branch, på dansk gren, er en parallel arbejdskopi af koden. Her kan en udvikler bygge noget nyt eller afprøve en idé uden at røre den kode der virker og allerede er i drift. Når arbejdet er færdigt og testet, flettes grenen sammen med hovedsporet. Grene er det der gør at flere personer kan bygge forskellige ting på samme tid uden at stå i vejen for hinanden.
Kundevinklen: kræv adgang til repoet
Her bliver det forretningskritisk. Al kode i et projekt bør ligge i et versionsstyret repository, et repo, og det afgørende er hvem der har adgang til det.
Ligger koden i et repo som I som kunde ejer og har fuld adgang til, har I kontrollen. I kan når som helst gennemgå hvad der er bygget, hente en anden leverandør ind der fortsætter hvor den forrige slap, og være trygge ved at hele historikken er bevaret. Ligger koden derimod kun hos leverandøren, sidder I fast: I er afhængige af deres velvilje for at få adgang til jeres eget system, og et afsluttet samarbejde kan blive meget dyrt.
Kravet er enkelt at stille og bør stilles tidligt: Al kode skal ligge i et versionsstyret repo som jeres organisation ejer eller har administratoradgang til. Det er en af de billigste forsikringer mod vendor lock-in der findes. Hos Weapp ser vi det som en selvfølge at kunden ejer sin kode; det er trods alt jer der har betalt for den.
Sådan bruger du det
Du behøver ikke at kunne Git for at stille de rigtige krav. Spørg hvor koden opbevares og om den er versionsstyret, og sørg for at I står som ejer eller administrator på platformen, ikke bare som inviteret gæst. Så har I både historikken og kontrollen over jeres system, uanset hvordan samarbejdet udvikler sig. Vil I have hjælp til at finde ud af hvordan jeres kode håndteres i dag, så kontakt os.
Ofte stillede spørgsmål
Hvad er versionsstyring, forklaret enkelt?
Det er en detaljeret ændringshistorik for kode. Hver gang en udvikler laver en ændring, gemmes den som et punkt i historikken med hvem, hvornår og hvorfor. Man kan når som helst gå tilbage til en tidligere tilstand, sammenligne versioner og se præcis hvad der er ændret. Tænk på fortryd-funktionen i et dokument, bare langt stærkere og lavet til teamarbejde.
Hvad er forskellen på Git, GitHub og GitLab?
Git er selve værktøjet der står for versionsstyringen og kører der hvor koden bygges. GitHub og GitLab er webtjenester oven på Git som opbevarer koden centralt og tilføjer samarbejde: review, rettigheder, issues og automatisering. Git er motoren, GitHub og GitLab er platformene hvor teams samles om koden. Man kan bruge Git uden dem, men sjældent omvendt.
Hvad betyder commit og branch?
En commit er en gemt ændring: et navngivet punkt i historikken der fortæller hvad der blev ændret og hvorfor, lidt ligesom at sætte et bogmærke efter hvert afsluttet arbejdstrin. En branch, eller gren, er en parallel arbejdskopi hvor man kan bygge noget nyt uden at røre den kode der virker, og derefter flette det sammen med hovedsporet når det er færdigt og testet.
Hvorfor er versionsstyring vigtigt for mig som kunde?
Det afgør om I faktisk ejer og kontrollerer jeres kode. Ligger koden i et versionsstyret repo som I har adgang til, kan I når som helst skifte leverandør, gennemgå hvad der er bygget og være sikre på at intet går tabt. Uden det ligger hele historikken hos leverandøren, og I er afhængige af deres goodwill for at få adgang til jeres eget system.
Hvad skal jeg konkret kræve af min leverandør?
Kræv at al kode ligger i et versionsstyret repository som I har adgang til, helst ejet af jeres organisation. Bed om at stå som ejer eller administrator på GitHub eller GitLab, ikke bare som inviteret gæst. Så har I kontrol over koden uanset hvad der sker med samarbejdet, og undgår at stå hjælpeløse hvis I går hver til sit.