Skip to content
Snippets Groups Projects

Kildekodehåndtering

  • lagring av kode

  • sporing av endringer

  • versionering

  • distribusjon

git

  • sporing og deling av kodeendringer i såkalte repo (repository)

  • både sentrale og lokale repo har all endringshistorikk

  • initiell kopi hentes ved å kloning (clone)

  • endringer (i filer) registreres i commits

  • commits deles med andre ved å dytte (push) til en server

  • andre kan da dra (pull) endringene inn i lokalt repo

git local remote repo

4 repo-"kopier"

  • originalen (origin), hentet fra server (pull)

  • arbeidsområdet (working directory), lokale filer som kan være endret

  • indeksen (staging area eller index), endringer du har lagt til med (add)

  • lokalt repo, endringene du har commitet (commit)

git repo copies

repo-kommandoer

git repo copies
git repo commands

Typisk sekvens

  • git pull (eller clone første gang) - henter ned endringer fra serveren

  • gjør egne endringer

  • git status - viser hva som er endret

  • git add <fil eller mappe> - legger endringer til fremtidig commit

  • git commit -m <melding, m/oppgavenummer> - registrerer all endringene (lagt til med add)

  • git pull - henter andres endringer, i tilfelle konflikt

  • git push - deler endringer med andre via serveren

Forgreining (branching)

  • greiner (branches)

    • sporer egne utviklingstråder

    • gjør jobbing i parallell ryddigere

  • sammenslåing (merging)

    • en (hoved)grein slås gjerne sammen med en annen, når den andre er ferdig (nok)

    • etter sammenslåing, så deles gjerne resultatet med andre

    • andre henter så ned for å være oppdatert

git branching

Sekvens m/forgreining

  • git pull - henter ned endringer fra serveren

  • git checkout -b <navn på (ny) grein> - lager ny grein, med utgangspunkt i den du jobber med

  • gjør egne endringer

  • git add …​ og git commit …​ - registrerer all endringene

  • git checkout master - bytter til hovedgrein

  • git merge <navn på grein> - slår annen grein (den nye) sammen med denne (hovedgreina)

  • …​

Eclipse-støtte for git

  • Egne Eclipse-tillegg - JGit (git-impl) og EGit (UI)

  • Git Repositories-panel - oversikt over repo

    • klone repo fra server eller registrere lokalt repo

    • utføre pull og push

    • utføre checkout inkl. lage ny grein

    • …​

git repositories view

Eclipse-støtte forts.

  • Git Staging - statusoversikt

    • filer i arbeidsområdet som er endret

    • filene i indeksen

    • legge til (add) eller fjerne (remove) fra indeksen

git staging view

Endringsforespørsler

  • en pull/merge-forespørsel (request) brukes for mer formell godkjenning av endringer

    • Pull Request er github-termen, mens Merge Request brukes i gitlab

  • brukes ofte for å inkludere endringer utenfra, f.eks.

    • utviklere utenfor kjerne-teamet

    • brukere av åpen kildekode som har fikset feil

  • forenkler administrasjon av åpne prosjekter

PR/MR-prosedyre

  • (utenforstående oppretter kopi på egen server)

  • lager en grein for endringene og utfører dem lokalt

  • i stedet for å slå sammen med egen hovedgrein

    • push grein til egen server

    • lag en pull/merge-forespørsel (PR/MR), som (potensielt) kan inkluderes i hovedgreina

    • UI for dette finnes på github/i gitlab

    • forespørselen får en egen dialog/diskusjonstråd

    • en utvikler med rettigheter kan så godkjenne evt. avslå forespørsel