"Vandaag ga ik je vertellen over de twee populairste versiebeheerprogramma's: SVN en Git."

"SVN werkt ongeveer zoals ik in de vorige les heb beschreven. Git is iets gecompliceerder en ik ben van plan het in meer detail te bespreken."

"Kun je me links geven naar de documentatie voor SVN en Git?"

"Natuurlijk, een momentje."

http://svnbook.red-bean.com/en/1.7/svn-book.html

https://githowto.com  (dit is gewoon een meesterwerk)

"Dus Git ."

"Het is iets ingewikkelder dan SVN.  Met Git heeft elke gebruiker zijn of haar eigen lokale repository naast de serverrepository. "

"Dus waar zet je je toe?"

"Gebruikers committeren zich altijd aan hun lokale repository."

"Maar hoe zit het met de serverrepository?"

"Om de lokale en serverrepository's te synchroniseren, zijn er speciale Pull- en Push-commando's .

"Daar is een reden voor. Soms moet een programmeur zelf veel werk doen, wat honderden commits kan inhouden voordat het aan de gedeelde repository kan worden toegevoegd."

"Om dit in SVN te doen, zou je een aparte branch moeten starten en deze vervolgens samenvoegen met de trunk."

"Met Git commit je je gewoon altijd aan de lokale repository en stuur je alle wijzigingen als een batch naar de centrale repository op de server als je klaar bent."

"Deze methode lijkt misschien een beetje overdreven als je maar een beetje code schrijft. Maar als je taken zo groot zijn dat ze zich over weken uitstrekken, dan begrijp je dat je niet de hele tijd kunt schrijven zonder je vast te leggen."

"Waarom kun je niet gewoon twee weken werken en dan je wijzigingen eenmalig op de server vastleggen?"

"Nou, een versiebeheerprogramma biedt veel gemak."

"Stel je voor dat je elke dag vastlegt en op de 10e dag ontdek je dat de wijzigingen die je de afgelopen twee dagen hebt aangebracht niet werken zoals gepland. En je wilt terugkeren naar de code die je op de 8e dag had en de taak aanpakken anders."

"U draait eenvoudig de wijzigingen terug die in de afgelopen twee dagen in de lokale repository zijn aangebracht en keert terug naar de gewenste staat. Dit staat bekend als een rollback- operatie."

"Je zegt me dat je dat kunt doen?"

"Ja. Bovendien, omdat de commit-geschiedenis wordt opgeslagen, kun je erachter komen wanneer en waarom iets is vastgelegd, en door wie, de relevante functies/bugs, en welke tien bestanden tegelijkertijd zijn gewijzigd als onderdeel van dit werk."

"Stel dat iemands bugfix de code van iemand anders breekt. Je kunt de code gewoon terugdraaien ( rollback ) en doorgaan alsof de wijziging nooit heeft plaatsgevonden."

"Oké, dat is cool. Ik ben overtuigd. Kun je me een paar voorbeelden laten zien die illustreren hoe dit allemaal werkt?"

"Zeker."

"Zo kloon je de centrale repository naar je lokale computer:"

Toezeggingen en vestigingen - 1

"Dus de Checkout-operatie is niet langer nodig."

"Ja. En hier zijn voorbeelden van push- operaties:"

Toezeggingen en vestigingen - 2

"En Pull- operaties:

Toezeggingen en vestigingen - 3

"Ah. Dat is min of meer logisch."

"Trouwens, er is een coole service genaamd GitHub."

"Elke programmeur kan zich daar registreren en zijn eigen Git-repository's maken. Ik stel voor dat je er meer vertrouwd mee raakt."

"Hier zijn een paar handige links:"

https://githowto.com

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

https://articles.assembla.com/using-git/getting-started/set-up-git-on-windows-with-tortoisegit

"Merk op dat er nogal wat Git-clients zijn."

"Ten eerste is er   GitBash , waarmee je tekstcommando's kunt invoeren."

"Dan is er TortoiseGit , een goed programma dat is ingebouwd in Windows Verkenner. Hiermee kun je rechtstreeks in Verkenner met bestanden in een Git-repository werken."

"IntelliJ IDEA ondersteunt Git en laat je allerlei complexe commando's uitvoeren met slechts een paar klikken rechtstreeks vanuit de omgeving."

"Dus, welke moet ik leren?"

"Ik raad je aan om ze allemaal te leren kennen."

"Je slaagt voor je sollicitatiegesprek en komt aan op je werk. Je krijgt een link naar Git, een login en wachtwoord - en dat is alles. Daarna sta je er alleen voor."

"Hoe bedoel je, «in je eentje»?"

"Ik bedoel dat je Git zelf opzet, zelf een kopie van de repository haalt,..."

"En dan moet je het project bouwen en proberen uit te voeren."

"De bouwinstructies zullen hoogstwaarschijnlijk ook in de Git-repository staan, samen met de projectdocumentatie."

"Je teamleider komt 's avonds naar je toe en zegt:  "Wel, wat heb je tot nu toe bedacht?" "

"En je zult zeggen: 'Ik probeer Git hier op te zetten, maar heb nog geen succes gehad. 'Je gaat me toch niet ontslaan?' "

"Or, while it's still midday, you can go to the team lead and say, «I installed Git, pulled the project, and browsed through the documentation, but there are hundreds of files and I haven't sorted everything out yet. Where are the current build instructions?'»"

"Can you feel the difference?"

"Yes. In the second case, I'm a super rock-star programmer, but in the first, I'm some robo-doofus who doesn't even know how to pull a project from Git. In other words, I screwed up before I even got to start programming. I suppose that after that they wouldn't even let me write code."

"See, you answered your own questions. So study and figure it out. Nobody will do it for you."

"You aren't going to help me?"

'Ik heb al geholpen. We leren hier Java, voor het geval je het vergeten bent. Voor de rest sta je er alleen voor. Of is je hoofd alleen maar om te drinken?'

"Oké, ik snap het. Dank je, Bilaabo!"