introduction to vcs

25
Dennis Degryse DEBOCOM bvba

Upload: dennis-degryse

Post on 27-Jun-2015

166 views

Category:

Technology


2 download

DESCRIPTION

A short introduction to Version Control Systems

TRANSCRIPT

Page 1: Introduction to VCS

Dennis Degryse

DEBOCOM bvba

Page 2: Introduction to VCS

• Inleiding

• Structuur & werking

• Best-practices

• Git

• Demo: Git, SourceTree & Atlassian Stash

• Vervolg

• Q&A

Page 3: Introduction to VCS

Versiebeheer

In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A

Page 4: Introduction to VCS

• 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

Page 5: Introduction to VCS

• 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

Page 6: Introduction to VCS

• 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

Page 7: Introduction to VCS

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

Page 8: Introduction to VCS

In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A

Versiebeheer

Page 9: Introduction to VCS

• 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

Page 10: Introduction to VCS

• 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

Page 11: Introduction to VCS

• 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

Page 12: Introduction to VCS

• 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

Page 13: Introduction to VCS

• 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

Page 14: Introduction to VCS

Versiebeheer

In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A

Page 15: Introduction to VCS

• 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

Page 16: Introduction to VCS

Versiebeheer

In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A

Page 17: Introduction to VCS

• 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

Page 18: Introduction to VCS

• 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

Page 19: Introduction to VCS

• 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

Page 20: Introduction to VCS

• 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

Page 21: Introduction to VCS

Versiebeheer

In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A

Page 22: Introduction to VCS

Versiebeheer

In leiding Structuur/Werking Best-pract ices Git Demo Vervolg Q&A

Page 23: Introduction to VCS

• 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

Page 24: Introduction to VCS

• 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

Page 25: Introduction to VCS

Dennis Degryse@dennisdegryse

DEBOCOM@DEBOCOMbvba