3. Versiebeheer
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
4. • 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 leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
6. • 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 leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
7. Handmatig
• Geen geschiedenis
• Geen sync oplossing
• Niet atomisch
• Geen geschiedenis
• Geen sync oplossing
• Extreem traag
• Niet atomisch
Beyond Compare
• Geen geschiedenis
• Omslachtige filters
• Niet atomisch
• Geen geschiedenis
• Niet atomisch
Tekst document
Sync tools
SAMBA
RSYNC
Netwerklocaties
FTP
Mappen per versie
• Niet onderhoudbaar
• Lastig om in te zoeken
• Niet onderhoudbaar
• Onoverzichtelijk
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
8. Versiebeheer
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
9. Repository
• Centrale database
• Geschiedenis (revisies)
Lokale kopie
• 1 developer
• 1 revisie
• Volledige tree
Client
• Communicatie tussen repo en lokale kopie
• Interface voor bekijken van geschiedenis/broncode
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
10. • 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 leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
11. • Branching
– Isoleren van instabiele/experimentele code
– Vertakking vanaf een bepaalde revisie
– Samenvoegen wanneer stabiel (merging)
• Merging
– Revisies samenvoegen
– Conflicten?
• Atomische operaties
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
12. • Lokale versie
– Veilig om te bewerken
• Klassieke VCS
– 1 revisie
• Gedistribueerde VCS
– Volledige geschiedenis
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
13. •
•
•
•
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 leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
14. Versiebeheer
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
15. • 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 leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
16. Versiebeheer
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
17. • Project gestart door Linus Torvalds (2005)
• Snel en schaalbaar
• Gedistribueerd VCS
– Lokale kopie van volledige geschiedenis
– Niet-lineaire ontwikkeling
– Server down?
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
18. • 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 leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
19. • 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 leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
20. • Waarom?
– Locatie-afhankelijke bestanden/metadata
– Dummy bestanden
– Output/binaries/logging
• .gitignore
– Bepaalt welke bestanden/mappen git moet
negeren
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
21. Versiebeheer
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
22. Versiebeheer
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
23. • 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 leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A
24. • Release
– Deliverable
– Tag in de source tree
– 1 downloadbaar archief
– Change log
– Beschrijving van inhoud, installatie & configuratie
In leid in g Str u ctu u r /Wer kin g B est -p r actices Git Dem o Ver volg Q&A