Broncodebeheer en versiebeheer verkennen

Voltooid

Het gebruik van bron- en versiebeheer is een fundamentele DevOps-procedure. Het is ook een vereiste voor procedures zoals continue integratie en infrastructuur als code, die beide essentieel zijn voor het bereiken van het volledige DevOps-potentieel. De organisatie in ons voorbeeldscenario moet de huidige strategie voor het ontwikkelen van gezamenlijke software beoordelen en overstappen op een gedistribueerd versiebeheermodel zoals Git, met name gezien de plannen voor het gebruik van GitHub voor het beheer van de softwarelevenscyclus. Dit vereist echter een goed begrip van de principes voor versie- en broncodebeheer en hun voordelen, die hier worden besproken.

Broncodebeheer en versiebeheer

Schermopname van een broncodebeheersysteem met meerdere bestanden en hun versiegeschiedenis.

De termen broncodebeheer en versiebeheer worden vaak door elkaar gebruikt, en in veel contexten verwijzen ze naar hetzelfde concept. In het algemeen zijn beide gekoppeld aan de praktijk van het beheren van wijzigingen in code in een gedeelde ontwikkelomgeving. U kunt echter meer genuanceerde scenario's tegenkomen waarin hun betekenis iets anders is. In deze scenario's wijst broncodebeheer een systeem aan dat wijzigingen in broncodebestanden beheert, terwijl versiebeheer wijzigingen van elk bestandstype omvat voor doeleinden die verder gaan dan alleen broncode. In de toekomst gebruiken we het term versiebeheer om op Git gebaseerde samenwerkingssoftwareopslagplaatsen te vertegenwoordigen die beschikbaar zijn in GitHub en Azure DevOps.

Wat zijn de voordelen van versiebeheer?

Versiebeheer houdt wijzigingen in bestanden bij binnen het beheerbereik. Dit biedt een breed scala aan voordelen:

  • Geschiedenis- en versietracering: u hebt de mogelijkheid om de geschiedenis van wijzigingen in elk bestand te controleren, inclusief de mogelijkheid om te bepalen wanneer elke afzonderlijke wijziging heeft plaatsgevonden en wat hun bereik was. Dit biedt ook traceerbaarheid, meestal door elke set wijzigingen te koppelen aan een unieke id.

  • Terugdraaien en herstellen: als er een fout of een probleem is, kunt u eenvoudig wijzigingen herstellen om de bekende, werkende versie van het betrokken bestand te herstellen.

  • Vertakking en samenvoegen: Als u de functionaliteit van de huidige code wilt uitbreiden door een andere functie toe te voegen of een nieuw gedetecteerde fout op te lossen, kunt u een zogenaamde vertakking maken, waarmee u onafhankelijk van de bestaande codebasis kunt werken. De nieuwe tak is in eerste instantie identiek aan de hoofdtak die de huidige code beheert. Nadat u de wijzigingen hebt voltooid, voegt u de nieuwe tak samen met de hoofdtak. Hoewel dit nog steeds tot conflicten kan leiden (als een andere ontwikkelaar heeft besloten om dezelfde set bestanden in de tussentijd te wijzigen via een andere vertakking), is hun bereik beperkt en kunnen ze meestal eenvoudig worden geïdentificeerd en opgelost.

    Schermopname van een vertakkingsstrategie met meerdere vertakkingen, waaronder hoofd-, bugfix- en functies.

  • Samenwerking en parallelle ontwikkeling: conflictoplossingsbepalingen die worden aangevuld door vertakking en samenvoeging, vergemakkelijken dat meerdere ontwikkelaars op dezelfde codebasis werken, waardoor de efficiëntie toeneemt. Met gedistribueerde besturingssystemen, zoals Git, is het zelfs mogelijk om code te schrijven in een niet-verbonden modus. Samenwerking omvat ook wederzijdse peerbeoordelingen van pull-aanvragen, het bevorderen van kennisdeling en transparantie.

  • Automatisering: Versiebeheer is een essentieel onderdeel van continue integratie en geautomatiseerde implementaties. Geautomatiseerd bouwen en testen kan automatisch worden geactiveerd wanneer een nieuwe versie van de code wordt gepusht naar de opslagplaats voor versiebeheer of wordt samengevoegd met de hoofdbranch. Verschillende versies van de code kunnen in verschillende omgevingen worden geïmplementeerd.