Please enable JavaScript.
Coggle requires JavaScript to display documents.
Versjonskontroll: Konsepter og Arbeidsflyt - Coggle Diagram
Versjonskontroll: Konsepter og Arbeidsflyt
Hensikt og Fordeler
Dele kildekode, tester og dokumentasjon
Synkronisere versjoner med felles repository
Versjonering av system/subkomponenter
Spore endringer over tid
Tilbakestille (rolle tilbake) til tidligere tilstand
Finne kilder til feil (hvem, når, hvor)
Backup (sikkerhetskopi)
Typer av Versjonskontroll
Sentralisert
Alle commits gjøres til sentral server
Krever kontinuerlig server aksess (kan være tregt)
Vanskelig å lage 'branches'
Teamet må jobbe 'i synk'
Eksempler
CVS
SourceSafe
Subversion (SVN)
Distribuert
Hver utvikler har komplett lokalt repo (med historikk)
Commit kan gjøres lokalt (ikke avhengig av server)
Utviklere kan jobbe mer uavhengig
Økt sjanse for konflikter ved sjelden synkronisering
Basert på endringer (diffs), ikke komplette filer
Eksempler
Git
GitHub
GitLab
BitBucket
Grunnleggende konsepter
Commit
Permanent lagring av endringer
Inkluderer loggmelding (viktig for historikk)
Bør gjøres når koden kompilerer og tester OK
Representerer en tilstand, får en egen ID
Kan 'tagges' med versjonsinformasjon (release)
Oppdateringer fra Remote (Sentralt Repo)
Fetch: Laster ned commits, endrer ikke lokale filer (Safe preview)
Pull: Fetch + integrer i nåværende branch (Merge/Rebase)
Checkout/Switch: Bytt nåværende branch/Commit (oppdaterer filer)
Synkronisering (Distribuert)
Commit: lagres lokalt
Push: Sender lokale commits til sentralt repo
Repository (Repo)
Felles lagringsområde for kode og historikk
Konflikter
Diffing (Sammenligning)
Sammenligne forskjellige versjoner av filer
Brukes ved konfliktløsning
Viktig før 'push' for å sikre at ingen feil innføres
Oppstår når flere utviklere endrer samme sted i en fil
Må løses (merge) før synkronisering
Diffing hjelpe med visualisering av ulikheter
Branching
Separat gren i systemet
Kopierer kodebasen for uavhengig arbeid
Hovedgren kalles ofte 'master' eller 'main'
Lengre levetid øker risiko for merge-konflikter
Merging
Slå sammen to brancher tilbake til en versjon
Merge Request (GitLab)/Pull Request (GitHub)
Pull Request (PR)/Merge Request (MR)
Forespørsler om å få kode slått sammen med 'master'
Muliggjør Code Review før sammenslåing
Kvalitetssikringsprosess
Arbeidsflyt Modeller (Workflows)
Cenytralized Workflow)
Enkel modell, ingen branches utenom 'master'
Krever synkronisert arbeid
Passer for små prosjekter
Feature Branching
Utvikling av ny funksjonalitet i egen branch
Integration Branching
Separat branch for hver 'sprint' (Scrum)
GitFlow Workflow
Kombinasjon av best practice
Bruker flere typer brancher
Branch Typer
Master branch (versjonert)
Develop branch (integrasjonsgren for features)
Feature branches (ny funksjonalitet)
Release branches (bug fixes før ny major release)
Hotfix branches (rask fiksing av feil i produksjon)