Advertentie
Als webontwikkelaars werken we vaak aan lokale ontwikkelingssites en uploaden dan alles als we klaar zijn. Dit is prima als jij het bent en de veranderingen klein zijn, maar als je met meer dan één te maken hebt iemand die aan iets werkt, of aan een groot project met veel gecompliceerde componenten, dat is gewoon niet haalbaar. Dat is wanneer we ons wenden tot iets dat versiebeheer wordt genoemd.
Vandaag heb ik het over een open source versiebeheersoftware genaamd Git. Hierdoor kan meer dan één persoon veilig aan hetzelfde project werken zonder elkaar te storen, maar het is zoveel meer dan dat.
Waarom versiecontrolesoftware gebruiken?
Allereerst moet de naam het weggeven. Met versiecontrolesoftware kunt u "versies" van een project hebben, die de wijzigingen tonen die in de loop van de tijd in de code zijn aangebracht, en u in staat stellen om indien nodig terug te gaan en die wijzigingen ongedaan te maken. Alleen al deze mogelijkheid - om twee versies te kunnen vergelijken of wijzigingen om te keren, maakt het van onschatbare waarde bij het werken aan grotere projecten.
Je hebt dit waarschijnlijk ooit zelf gedaan, waarbij je op verschillende punten kopieën van een project hebt opgeslagen, zodat je een back-up hebt. In een versiebeheersysteem worden alleen de wijzigingen opgeslagen - een patchbestand dat op één versie kan worden toegepast om het hetzelfde te maken als de volgende versie. Met één ontwikkelaar is dit voldoende.
Maar wat als er meer dan één ontwikkelaar aan een project werkt? Dat is wanneer het idee van een gecentraliseerde versiebeheerserver binnenkomt. Deze zijn al lange tijd de standaard, waarbij alle versies op een centrale server worden opgeslagen en individuele ontwikkelaars afrekenen en wijzigingen terug uploaden naar deze server. Als je ooit naar de bewerkingsgeschiedenis van een Wikipedia-pagina hebt gekeken, heb je een goed idee van hoe dit werkt in een real-world scenario:
De voordelen van een systeem als dit is dat meerdere ontwikkelaars wijzigingen kunnen aanbrengen en dat elke wijziging vervolgens kan worden toegeschreven aan een specifieke ontwikkelaar. Aan de andere kant betekent het feit dat alles is opgeslagen in een externe database dat er geen wijzigingen kunnen worden aangebracht wanneer die server uitvalt; en als de centrale database verloren gaat, heeft elke client alleen de huidige versie van waar ze aan werkten.
Dat brengt ons op Git en andere zogenaamde gedistribueerde versiebeheersystemen. In deze systemen bekijken klanten niet alleen de huidige versie van de bestanden en werken ze eraan - ze weerspiegelen de volledige versiegeschiedenis. Elke ontwikkelaar heeft altijd een volledige kopie van alles. Er wordt nog steeds een centrale server gebruikt, maar mocht het ergste gebeuren, dan kan alles nog worden hersteld van alle clients met de nieuwste versies.
Git werkt specifiek door "snapshots" van bestanden te maken; als bestanden ongewijzigd blijven in een bepaalde versie, wordt er eenvoudig naar de vorige bestanden gelinkt - dit houdt alles snel en slank.
Het kan je ook interesseren om te leren dat Git wordt gebruikt om de kern linux kernel - het basisbouwblok waarop alle Linux-distributies zijn gebouwd.
Wat is Github?
Hoewel u uw eigen Git-server lokaal kunt uitvoeren, Github is zowel een externe server, een gemeenschap van ontwikkelaars als een grafische webinterface voor het beheren van uw Git-project. Het is gratis te gebruiken voor maximaal vijf openbare opslagplaatsen, dat wil zeggen wanneer iedereen uw code kan bekijken of splitsen, met goedkope plannen voor privéprojecten. Ik raad je ten zeerste aan om je aan te melden voor een gratis account, zodat je kunt gaan spelen met je eigen projecten of iemand anders kunt vragen.
Vorken en vertakken
Dit zijn kernconcepten van de Git-ervaring, dus laten we even de tijd nemen om het verschil uit te leggen.
Je hebt waarschijnlijk het werk 'fork' gehoord als je te maken hebt met Linux-distributies. Als je bekend bent met de mediacenter-app Plex, weet je dat het oorspronkelijk een splitsing was van de vergelijkbare open source Xbox Media Center Aeon Nox 3.5: mooi en aanpasbaar thema voor XBMCStel uw mediacenter precies in zoals u dat wilt. Aeon Nox 3.5 is de meest recente versie van wat misschien wel het beste thema is voor XBMC, en het is een zeldzame combinatie: mooie ... Lees verder . Dit betekent simpelweg dat sommige ontwikkelaars in het verleden de code van XBMC gebruikten en besloten om hun eigen weg te gaan; dat werd Plex.
Dit is natuurlijk volledig toegestaan als het project open source is - je kunt de code nemen, ermee doen wat je wilt. Met Git, als je denkt dat je veranderingen goed genoeg zijn om terug te worden gerold in het "master" -project, jij kan een “pull request” doen aan de auteur, met het verzoek om je wijzigingen terug te zetten in hun origineel project. Hierdoor kunt u op elk moment honderdduizenden ontwikkelaars aan een project laten werken, en geen van allen noodzakelijk worden goedgekeurd voor toegang tot de code - ze kopiëren gewoon de code, brengen wijzigingen aan en vragen om terug te worden gerold in de meester. Het is natuurlijk aan de eigenaar van het oorspronkelijke project of ze besluiten je wijzigingen al dan niet te accepteren.
Vertakken is iets dat intern wordt gedaan op een project door de geautoriseerde ontwikkelaars. Hiermee kunt u eenvoudig specifieke problemen of functies scheiden en eraan werken zonder de hoofdbestanden te verbreken. Zodra u er zeker van bent dat uw branche het probleem heeft opgelost, voegt u het terug in de master. Er kunnen op elk moment zoveel takken zijn als je wilt; ze interfereren niet met elkaar. U kunt ook wijzigingen tussen vertakkingen samenvoegen zonder de master aan te raken.
Hier is een geweldig diagram van een voorbeeldworkflow van Vincent Driessen:
De volgende keer zullen we kijken hoe we een werkend Git-voorbeeld kunnen opzetten en hoe we binnen branches branches kunnen wijzigen. Versiebeheer is een enorm onderwerp. Ik heb hier slechts het kortste overzicht gegeven, maar als ontwikkelaar die gewend is om alleen maar wijzigingen aan te brengen en ze ongedaan te maken als ze niet werken, is het hele concept bij me opgekomen - ik hoop dat het ook van jou is.
Ben jij een doorgewinterde ontwikkelaar met ervaring in Git? Ben je net begonnen en denk je dat je het wilt proberen? Geluid uit in de reacties!
James heeft een BSc in Artificial Intelligence en is CompTIA A + en Network + gecertificeerd. Hij is de hoofdontwikkelaar van MakeUseOf en brengt zijn vrije tijd door met het spelen van VR paintball en bordspellen. Hij bouwt al pc's sinds hij een kind was.