Broncodebeheer
Broncodebeheer (SCM) wordt gebruikt om wijzigingen in een broncoderepository bij te houden. SCM houdt een lopende geschiedenis van wijzigingen bij in een codebasis en helpt bij het oplossen van conflicten tijdens het samenvoegen van updates van meerdere bijdragers. SCM is ook synoniem met versiebeheer.
Naarmate in softwareprojecten het aantal coderegels en het aantal bijdragers toeneemt, stijgen ook de kosten van de communicatie-overhead en neemt de complexiteit van het beheer toe. SCM is een cruciaal instrument om de organisatorische belasting als gevolg van stijgende ontwikkelingskosten te verminderen.
Het belang van tools voor broncodebeheer
Wanneer meerdere ontwikkelaars binnen een gedeelde codebase werken, komt het vaak voor dat er wijzigingen worden aangebracht in een gedeeld stuk code. Afzonderlijke ontwikkelaars werken misschien aan een schijnbaar geïsoleerde functie, maar voor deze functie wordt mogelijk een gedeelde codemodule gebruikt. Daarom kan ontwikkelaar 1 die aan Functie 1 werkt wat wijzigingen aanbrengen en er later achter komen dat ontwikkelaar 2, die aan Functie 2 werkt, conflicterende wijzigingen heeft aangebracht.
Vóór de invoering van SCM was dit een nachtmerriescenario. Ontwikkelaars konden tekstbestanden rechtstreeks bewerken en ze naar externe locaties verplaatsen met behulp van FTP of andere protocollen. Ontwikkelaar 1 kon wijzigingen aanbrengen en Ontwikkelaar 2 kon vervolgens zijn of haar wijzigingen onbewust over het werk van Ontwikkelaar 1 opslaan en de wijzigingen van Ontwikkelaar 1 tenietdoen. De rol van SCM als beschermingsmechanisme tegen dit specifieke scenario staat bekend als versiebeheer.
SCM heeft waarborgen voor versiebeheer ingevoerd om te voorkomen dat er werk verloren gaat als gevolg van het overschrijven van conflicten. Deze veiligheidsmaatregelen werken door de wijzigingen van elke individuele ontwikkelaar bij te houden, conflictgebieden te identificeren en overschrijvingen te voorkomen. SCM geeft deze conflictpunten vervolgens door aan de ontwikkelaars, zodat deze ze veilig kunnen bekijken en oplossen.
Dit fundamentele mechanisme voor conflictpreventie heeft als neveneffect dat het aan het ontwikkelteam passieve communicatie biedt. Het team kan dan het werk in uitvoering dat door het SCM in de gaten wordt gehouden, volgen en bespreken. De SCM volgt een hele geschiedenis van wijzigingen in de codebasis. Dit stelt ontwikkelaars in staat om wijzigingen die mogelijk bugs of regressies hebben geïntroduceerd, te onderzoeken en beoordelen.
gerelateerd materiaal
Git cheat sheet
Oplossing bekijken
Git leren met Bitbucket Cloud
De voordelen van broncodebeheer
Naast versiebeheer biedt SCM nog een reeks andere handige functies om de ontwikkeling van gezamenlijke code gebruiksvriendelijker te maken. Zodra SCM is begonnen met het bijhouden van alle wijzigingen in een project in de loop van de tijd, wordt een gedetailleerd historisch verslag gemaakt van de levensloop van het project. Dit historische verslag kan vervolgens worden gebruikt om wijzigingen in de codebase 'ongedaan te maken'. De SCM kan de codebase onmiddellijk terugzetten naar een eerder tijdstip. Dit is uiterst waardevol om regressies op updates te voorkomen en fouten ongedaan te maken.
Het SCM-archief van elke wijziging die is aangebracht gedurende de levensloop van een project, biedt een waardevol overzicht waarin releasenotities over verschillende projectversies worden bijgehouden. Een schoon en goed onderhouden SCM-geschiedenislogboek kan door elkaar worden gebruikt als releasenotities. Dit biedt inzicht en transparantie in de voortgang van een project en kan worden gedeeld met eindgebruikers of niet-ontwikkelingsteams.
SCM vermindert de communicatiekosten van een team en vergroot de releasesnelheid. Zonder SCM verloopt de ontwikkeling langzamer omdat bijdragers extra moeite moeten doen om een niet-overlappende ontwikkelingssequentie te plannen voor releases. Met SCM kunnen ontwikkelaars onafhankelijk werken aan verschillende branches van de ontwikkeling van functies, en deze uiteindelijk samenvoegen.
Over het algemeen is SCM een geweldig hulpmiddel voor technische teams om de ontwikkelingskosten te verlagen omdat technische middelen efficiënter kunnen worden aangewend. SCM is een must in de moderne tijd van softwareontwikkeling. Professionele teams gebruiken versiebeheer en dat zou je team ook moeten doen.
Beste praktijken voor broncodebeheer
Commit vaak
Commits zijn goedkoop en makkelijk te maken. Ze moeten regelmatig worden gemaakt om updates in een codebasis vast te leggen. Elke commit is een snapshot waarnaar de codebase kan worden teruggezet indien nodig. Regelmatige commits bieden veel mogelijkheden om werk terug te draaien of ongedaan te maken. Een groep commits kan met behulp van een rebase worden gecombineerd tot één commit om de ontwikkelingslog te verduidelijken.
Zorg ervoor dat je werkt met de nieuwste versie
SCM maakt snelle updates van meerdere ontwikkelaars mogelijk. Er is een risico dat lokale kopieën van de codebase achterlopen op de globale versie. Zorg er daarom voor dat je de laatste code ophaalt of pullt met git pull voordat je de update uitvoert. Dit helpt conflicten tijdens de samenvoeging te voorkomen.
Maak gedetailleerde aantekeningen
Elke commit heeft een corresponderende logvermelding. Op het moment dat de commit werd aangemaakt, is een bericht toegevoegd aan dit logitem. Het is belangrijk om beschrijvende verklarende logberichten voor commits toe te voegen. In deze commit-logberichten moet het 'wat' en 'waarom' van de inhoud van commits worden uitgelegd. Deze logberichten vormen de canonieke geschiedenis van de ontwikkeling van het project en laten een spoor achter dat toekomstige bijdragers kunnen bekijken.
Bekijk wijzigingen voordat je ze commit
SCM's bieden een 'staginggebied'. Het staginggebied kan worden gebruikt om een groep wijzigingen te verzamelen voordat ze naar een commit worden geschreven. Het staginggebied kan worden gebruikt om wijzigingen te beheren en controleren voordat de snapshot van de commit wordt gemaakt. Door het staginggebied op deze manier te gebruiken, ontstaat er een buffergebied om de inhoud van de commit te helpen verfijnen.
Gebruik branches
Branching is een krachtig SCM-mechanisme waarmee ontwikkelaars een aparte ontwikkelingslijn kunnen aanmaken. Branches moeten vaak worden gebruikt omdat ze snel en goedkoop zijn. Branches stellen meerdere ontwikkelaars in staat om parallel te werken aan verschillende ontwikkelingslijnen. Deze ontwikkelingslijnen zijn over het algemeen verschillende productfuncties. Wanneer de ontwikkeling van een branch is voltooid, wordt deze samengevoegd met de belangrijkste ontwikkelingslijn.
Word het eens over een workflow
SCM's bieden standaard een heel vrije manier om bij te dragen. Het is belangrijk dat teams gedeelde samenwerkingspatronen ontwikkelen. SCM-workflows leggen patronen en processen vast voor het samenvoegen van branches. Als een team het niet eens wordt over een gedeelde workflow, kan dat leiden tot een inefficiënte communicatie-overhead op het moment dat branches worden samengevoegd.
Samenvatting
SCM is een hulpmiddel van onschatbare waarde voor moderne softwareontwikkeling. De beste softwareteams gebruiken SCM en jouw team zou dat ook moeten doen. SCM is heel eenvoudig op te zetten voor een nieuw project en het investeringsrendement is hoog. Atlassian biedt enkele van de beste SCM-integratietools ter wereld die je helpen om snel aan de slag te gaan.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.