introduction to vcs
DESCRIPTION
A short introduction to Version Control SystemsTRANSCRIPT
Dennis Degryse
DEBOCOM bvba
• Inleiding
• Structuur & werking
• Best-practices
• Git
• Demo: Git, SourceTree & Atlassian Stash
• Vervolg
• Q&A
Versiebeheer
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• 7 jaar ervaring met ≠ VCS
– SVN, Git, TFVC, Hg
• Niet exotisch, maar essentieel
– Hobby developers
– Community teams
– Professionele teams
VCS : Version Control system
SVN: Subversion
TFVC: Team Foundation VC
Hg: Mercurial
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• Code
– Continu in verandering
– ≠ developers
– ≠ componenten
– ≠ machines
Ontwerpen
Code schrijven
Resultaat testen
Versie afleveren
Research
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• Hoe zag bestand X er op tijdstip T uit?
• Welke devs hebben aan bestand Y gewerkt?
• Vanaf welke toestand S vertrekt de versie bij klant K?
• Wanneer en hoe werd bug B gefixt?
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
Netwerk-locaties
FTP
• Geen geschiedenis
• Geen sync oplossing
• Niet atomisch
SAMBA
• Geen geschiedenis
• Geen sync oplossing
• Extreem traag
• Niet atomisch
Sync toolsRSYNC
• Geen geschiedenis
• Omslachtige filters
• Niet atomisch
Beyond Compare
• Geen geschiedenis
• Niet atomisch
HandmatigTekst document
• Niet onderhoudbaar
• Lastig om in te zoeken
Mappen per versie
• Niet onderhoudbaar
• Onoverzichtelijk
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
Versiebeheer
• Centrale database
• Geschiedenis (revisies)
Repository
• 1 developer
• 1 revisie
• Volledige tree
Lokale kopie
• Communicatie tussen repo en lokale kopie
• Interface voor bekijken van geschiedenis/broncode
Client
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• Revisie– 1 wijziging in de code-base
• Incrementele diff-files
– Beschrijving van de wijziging• Kort, maar volledig
– Naam van de developer
– Verwijzing naar vorige/volgende wijziging
• Tagging– Labelen van een revisie
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• Branching
– Isoleren van instabiele/experimentele code
– Vertakking vanaf een bepaalde revisie
– Samenvoegen wanneer stabiel (merging)
• Merging
– Revisies samenvoegen
– Conflicten?
• Atomische operaties
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• Lokale versie
– Veilig om te bewerken
• Klassieke VCS
– 1 revisie
• Gedistribueerde VCS
– Volledige geschiedenis
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• Downloaden van de lokale revisie
• Updaten van de lokale revisie
• Branching en merging
• Klassieke VCS
– Uploaden van de lokale wijzigingen
• Gedistribueerde VCS
– Registreren van de lokale wijzigingen
– Uploaden van de lokale wijzigingen
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
Versiebeheer
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• High cohesion– Wijzigingen moeten een nauw verband vormen
– Duidelijke beschrijving voor de wijziging
• Continuous integration– Upload wijzigingen frequent
– Download updates frequent
– Merge branches z.s.m.
• Broncode != binaries– Outputbestanden horen niet thuis op de repo
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
Versiebeheer
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• Project gestart door Linus Torvalds (2005)
• Snel en schaalbaar
• Gedistribueerd VCS
– Lokale kopie van volledige geschiedenis
– Niet-lineaire ontwikkeling
– Server down?
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• git clone <repo> [<destination>]
– Download een lokale kopie van de repository
• git commit [-m <message>]
– Registreren van een wijziging + omschrijving
• git push
– Uploaden van geregistreerde wijzigingen
• git pull
– Downloaden van nieuwe wijzigingen
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• git checkout -b <naam>– Maak een branch + markeer die als huidige branch
• git checkout <naam>– Schakel om naar een branch
• git merge <naam>– Voeg de branch <naam> samen met de huidige
branch
• git branch -d <naam>– Verwijder een branch.
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• Waarom?
– Locatie-afhankelijke bestanden/metadata
– Dummy bestanden
– Output/binaries/logging
• .gitignore
– Bepaalt welke bestanden/mappen git moet negeren
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
Versiebeheer
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
Versiebeheer
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• Issue
– Een bug/feature
– Prioriteit
– Toegewezen developer
– (Feature) branch in de source tree
– Opvolging (comments, meta-data, commits)
• Backlog
– Lijst met issues volgens prioriteit
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
• Release
– Deliverable
– Tag in de source tree
– 1 downloadbaar archief
– Change log
– Beschrijving van inhoud, installatie & configuratie
In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A
Dennis Degryse@dennisdegryse
DEBOCOM@DEBOCOMbvba