Utforska källkontroll och versionskontroll

Slutförd

Användning av käll- och versionskontroll är en grundläggande DevOps-metod. Det är också en förutsättning för sådana metoder som kontinuerlig integrering och infrastruktur som kod, som båda är avgörande för att nå hela DevOps-potentialen. Organisationen i vårt exempelscenario bör granska sin nuvarande strategi för utveckling av samarbetsprogram och övergå till en distribuerad versionskontrollmodell, till exempel Git, särskilt med tanke på dess planer på att använda GitHub för dess livscykelhantering för programvara. Detta kräver dock en god förståelse av principerna för version och källkontroll och deras fördelar, som vi kommer att ta upp här.

Källkontroll och versionskontroll

Skärmbild av ett källkontrollsystem med flera filer och deras versionshistorik.

Termerna källkontroll och versionskontroll används ofta omväxlande, och i många sammanhang refererar de till samma begrepp. I allmänhet är båda associerade med praxisen att hantera ändringar av kod i en delad utvecklingsmiljö. Du kan dock stöta på mer nyanserade scenarier där deras betydelse skiljer sig något. I dessa scenarier anger källkontroll ett system som hanterar ändringar i källkodsfiler medan versionskontroll inkluderar ändringshantering av alla filtyper för ändamål som sträcker sig utöver enbart källkod. För konsekvensens skull använder vi termen versionskontroll för att representera Git-baserade lagringsplatser för samarbetsprogram som är tillgängliga i GitHub och Azure DevOps.

Vilka är fördelarna med versionskontroll?

Versionskontrollen håller reda på ändringar i filer inom dess hanteringsområde. Detta erbjuder ett brett utbud av fördelar:

  • Historik och versionsspårning: Du har möjlighet att granska historiken för ändringar i alla filer, inklusive möjligheten att avgöra när varje enskild ändring ägde rum och vad deras omfång var. Detta ger också spårbarhet, vanligtvis genom att associera varje uppsättning ändringar med en unik identifierare.

  • Återgång och återställning: Om det finns ett fel eller ett problem kan du enkelt ångra ändringar för att återställa den kända, fungerande versionen av den berörda filen.

  • Förgrening och sammanslagning: Om du behöver utöka funktionen för den aktuella koden genom att lägga till en annan funktion eller åtgärda en nyupptäckt bugg kan du skapa en så kallad gren som gör att du kan arbeta oberoende mot den befintliga kodbasen. Den nya grenen är ursprungligen identisk med den huvudgrenen som är värd för den aktuella koden. När du har slutfört ändringarna sammanfogar du den nya grenen med huvudgrenen. Även om detta fortfarande kan leda till konflikter (om en annan utvecklare har valt att ändra samma uppsättning filer under tiden via en annan gren), är deras omfång begränsat och de kan vanligtvis enkelt identifieras och lösas.

    Skärmbild av en grenstrategi med flera grenar, inklusive huvudgren, bugfix-gren och funktionsgrenar.

  • Samarbete och parallell utveckling: Konfliktlösningsbestämmelser kompletterade med förgrening och sammanslagning underlättar att flera utvecklare arbetar med samma kodbas, vilket ökar effektiviteten. Med distribuerade kontrollsystem, till exempel Git, är det till och med möjligt att skapa kod i frånkopplat läge. Samarbete omfattar också ömsesidiga peer-granskningar av pull-begäranden, främjande av kunskapsdelning och transparens.

  • Automation: Versionskontroll är en viktig del av kontinuerlig integrering och automatiserade distributioner. Automatisk version och testning kan utlösas automatiskt när en ny version av koden skickas till lagringsplatsen för versionskontroll eller slås samman med huvudgrenen. Olika versioner av koden kan distribueras till olika miljöer.