Git is een veelgebruikt versiebeheersysteem dat in de wereld van softwareontwikkeling een cruciale rol speelt. Het biedt ontwikkelaars de mogelijkheid om hun code te beheren, wijzigingen bij te houden en samen te werken aan projecten. Maar hoe past Git in de context van Programmable Logic Controllers (PLC’s)?
Wat is Git?
Git is een gedistribueerd versiebeheersysteem dat oorspronkelijk is ontworpen door Linus Torvalds, de maker van de Linux-kernel, in 2005. Het systeem wordt gebruikt om de broncode van softwareprojecten te beheren, maar het kan ook worden toegepast op andere soorten projecten waarbij versiebeheer nodig is, zoals documentatie, configuratiebestanden en zelfs om grafische ontwerpen te beheren.
De sterke punten van Git zijn:
- Eenvoudig om met meerdere programmeurs samen aan een project te werken. Iedere programmeur kan werken in een eigen programma, genaamde branches. Git maakt het vervolgens mogelijk om eenvoudig de wijzigingen samen te voegen tot een nieuwe versie van de software.
- Git houdt de complete geschiedenis bij van alle aanpassingen die zijn gedaan in de software. Hierdoor is het vrij eenvoudig om release notes te genereren.
- Met Git is het mogelijk om verschillende versies van een programma te archiveren en te ontwikkelen. Daarnaast is het vrij eenvoudig om aanpassingen tussen de verschillende versies over te nemen.
Een belangrijk uitgangspunt bij Git is dat files worden opgeslagen als platte tekstfiles waarbij bij voorkeur voor iedere functie een aparte file gebruikt wordt. Dit is noodzakelijk om verschillende wijzigingen, door verschillende programmeurs, te kunnen samenvoegen. Deze files mogen uiteraard ook XML, JSON, SVG of iets dergelijks zijn, mits ze maar leesbaar zijn.
In de softwareontwikkeling is dit vaak het geval.
Echter, in de industriële softwareontwikkeling zijn er nog fabrikanten die de code opslaan in een binair formaat. Op deze manier kun je er eigenlijk niets mee en dan heeft Git gebruik ook niet zo veel toegevoegde waarde. Je kan dan hoogstens de verschillende versies van de software opslaan, maar juist de sterke punten van Git, zoals het samenvoegen en vergelijken van verschillende versies, zijn niet mogelijk.
Inmiddels zien we dat steeds meer PLC-fabrikanten ondersteuning bieden voor Git. Sommige fabrikanten doen dit native door alle code- en configuratiefiles op te slaan als tekstfiles, zoals bijvoorbeeld Beckhoff. Anderen leveren extra tooling of in- en exportfuncties zoals bijvoorbeeld Siemens en Codesys.
Binnen Gain hebben we inmiddels ruime ervaring met het gebruik van Git binnen de Beckhoff omgeving. Tegenwoordig worden alle Beckhoff projecten uitgevoerd met behulp van Git. Bij overige PLC-projecten wordt, indien mogelijk, gebruik gemaakt van Git.
Niet alleen tijdens de ontwikkeling van nieuwe software is Git een handige tool, maar zeker ook voor de periode erna. Met behulp van Git is het eenvoudiger om machines of installaties in het veld te voorzien van updates en/of bugfixes. Hierbij is het belangrijk dat je van tevoren goed nadenkt over hoe je omgaat met nieuwe features en bugfixes Een duidelijke workflow is aan te raden. Git kan hierbij helpen door te werken met verschillende branches van de software. Iedere branch kan worden gebruikt voor de implementatie van de verschillende features cq. bugfixes. Nadat een nieuwe feature of bugfix is gecodeerd en getest kan deze eenvoudig worden samengevoegd met de bestaande code (merging). Een updateschema kan er als volgt uitzien:
Het schema bestaat uit 2 branches, namelijk:
- Main, dit is de gereleasete versie van de software
- Development, dit is de versie van de software die in ontwikkeling is voor een eventueel volgende release.
Eventuele bugfixes worden gedaan op de main branch en kunnen direct bij de eindklanten worden geïmplementeerd. Nieuwe features worden afgeleid van de development branche. Nadat een nieuwe feature klaar is, kan deze worden samengevoegd met de development branch. Zodra alle nieuwe features zijn geïmplementeerd kunnen deze worden samengevoegd met de main branch. Hierna kan de main branch worden uitgerold op de machine of installatie.
Het voordeel van deze aanpak is dat alle aanpassingen in de software herleidbaar zijn. Daarnaast is het mogelijk om bepaalde aanpassingen door middel van Cherry Picking over te nemen. Hierbij moet je dan bijvoorbeeld denken aan het overnemen van bugfixes.
In eerste instantie lijkt het gebruik van Git vrij omslachtig en complex, maar zodra je eraan gewend bent en de werkwijze goed ingericht hebt, wil je niet meer terug. Vooral de eenvoud waarmee aanpassingen traceerbaar zijn en de mogelijkheid om gecontroleerd wijzigingen door te voeren zijn een verademing.
~Marco Conrads
Geplaatst: juni 2024
Heeft dit blog je geïnspireerd?
Wil je werken bij Gain of weten of wij ook jou kunnen helpen bij jouw verbetertraject? Neem gerust contact met ons op.