Vedlegg F Dokumentasjon av Git Vedlegg for dokumentasjon av Git, versjonskontrollsystemet brukt i utviklingen av PySniff. Hvorfor Git er brukt, hvilken modell som er valgt og hvordan vi har kommet frem til denne.
Innholdsfortegnelse 1. INTRODUKSJON 3 1.1 HENSIKT 3 1.2 HVA ER GIT OG VERSJONSKONTROLL 3 1.3 GIT REPOSITORY 4 1.3.1 GITHUB 4 2. DATAFLYTMODELL 5 3. STABILITET OG PÅLITELIGHET 6 3.1 DATAORDBOK 7 3.2 REFERANSER 7 Filnavn: Dokumentasjon av Git.docx Side: 2 av 7
1. INTRODUKSJON Dette dokumentet gir en oversikt over bruken av versjonskontrollsystemet Git i utviklingen av PySniff og alle dets undersystemer. Det vil bli forklart hvorfor det er ønskelig med et versjonskontrollsystem i programutvikling, spesielt utvikling i grupper, og hvorfor akkurat Git er blitt valgt. 1.1 Hensikt Ved hjelp av dette dokumentet skal det være mulig å forstå Gits posisjon som versjonskontrollsystem under utviklingen av PySniff. Følgelig vil det bli begrunnet med hvorfor, og hvordan verktøyet er blitt brukt. 1.2 Hva er Git og versjonskontroll Et versjonskontrollsystem er programvare som holder oversikt over endringer eller versjoner av datafiler. Endringer lagres i en database, vanligvis med full historikk med mulighet for kommentering underveis. I tillegg til identifisering av forskjellige versjoner kan det være mulig med forskjellige «utviklingsgrener», som gjør utvikling i grupper enklere ved at man ikke «kræsjer» i andres arbeid, men samtidig kan samarbeide på grener. Git er et distribuert versjonskontrollsystem. Ved distribuert menes det at hver eneste bruker har en lokal kopi av kodebasen på det felles repositoryet, hvor koden i effekt sendes mellom forskjellige brukere. Dette er til forskjell fra tradisjonell klient-server tilnærming av versjonskontroll, hvor man typisk er avhengig av tilgang til en felles sentral. For å kunne kommunisere med et Git repository trengs en Git klient. Klienten består enten av kommandolinje eller et brukergrensesnitt. Denne brukes til å utføre kommandoer for å sjekke endringer i filer, legge de til i et repository, synkronisere med felles repository m.mer. Git-klienten installeres lokalt på en maskin, men ved bruk av Github eller lignende tjenester er det også mulig å kommunisere med et repository gjennom nettleser. Figur 1: Versjonskontroll Filnavn: Dokumentasjon av Git.docx Side: 3 av 7
1.3 Git repository Hoveddelen av et Git-system er et repository. Git er som nevnt et distribuert versjonskontrollsystem, hvilket betyr at det er flere repositories brukt for å holde kontroll på kodebasen som stadig synkroniseres med hverandre. Bruk av et Git repository består av både en sentral og en lokal klone, hvor brukere av forskjellige repositories synkroniserer disse mot hverandre. 1.3.1 Github Github er en tilbyder av en komplett løsning for Git repositories og nyttige verktøy rundt dette. Dette inkluderer, men er ikke begrenset til, hosting av repositories enten offentlig eller privat, statistikk, brukerhåndtering og et webgrensesnitt med tilgang til kodebaser i repositores. Det er valgt å bruke Github som tilbyder av privat repository grunnet deres effektive webgrensesnitt og alle de nyttige verktøyene rundt, som f. eks statistikk og mulighet til å se filer og deres endringer direkte i nettleser uten å måtte trenge en lokal Git klient. Gruppen har fått tilgang til et privat repository gjennom en studentordning til Github hvor man får gratis tilgang til private repositories. Dette vil si at selv om kodebasen ligger på en ekstern server (i tillegg til de lokale kopiene), er de ikke offentlig tilgjengelig. Repositoriet er tilgjengelig for nedlastning ved hjelp av HTTP, Zip eller bruk av Git-protokollen. Synkronisering er alltid tilgjengelig så lenge de nødvendige portene er åpne på den lokale tilkoblingen brukt. Akkurat dette kan vise seg å være et problem, som forklart i neste punkt. Filnavn: Dokumentasjon av Git.docx Side: 4 av 7
2. DATAFLYTMODELL Figur 2: Git branching model Dette prosjektet broker en modifisert versjon av dataflytdiagram vist ovenfor, men ideen er den samme. Master branch som inneholder godkjent kode Filnavn: Dokumentasjon av Git.docx Side: 5 av 7
Figur 3 - Git dataflyt [4] 3. STABILITET OG PÅLITELIGHET Siden Git er et distribuert versjonskontrollsystem har alle klonene/brukerne av et repository en lokal klone av repositoriet. Dette gjør at om f. eks man ikke har tilgang til internett, Github som hoster det felles repoet er nede eller at noen opplever datatap så har man fortsatt tilgang på kopier av koden og mulighet til å sende inn commits. Alternativet er gjerne at man har et sentralt repository og at man kun har sine endringer lokalt og/eller ikke har mulighet til å lagre dine endringer/commits uten tilgang til det sentrale repositoriet. Et eksempel på dette er SVN. Dette betyr at om man f. eks ikke har tilgang til internett kan man heller ikke arbeide med koden. Filnavn: Dokumentasjon av Git.docx Side: 6 av 7
3.1 Dataordbok Forkortelse Forklaring Versjonskontrollsystem Programvare som holder ordentlig på forskjellige versjoner av en eller flere datafiler med full historikk. Repository Et sett med filer og mapper brukt av et versjonskontrollsystem, med historikk over endringer og pekere på grener. Commit Et sett av endringer på filer og/eller mapper lagret til et repository. Vanligvis med en kommentar som beskriver endringen. Har en ID. SSH En sikker nettverksprotokoll for kommunikasjon mellom klient og tjener, typisk i form av et shell (kommandolinje) eller andre nettverkstjenester. Hosting Å hoste noe. Leie/selge lagringsplass og/eller nettkapasitet hos en serverleverandør, til f. eks å ha lagret et Git repository tilgjengelig via internett. Pakkebehandler En samling verktøy for å installere/oppdatere/konfigurere programvare på en datamaskin. Hovedsaklig brukt til å installere pakker (programmer) via pakkebrønner tilbudt av forskjellige Linux distribusjoner. Terminal Terminal, eller terminalemulator, er et program for å kommunisere operativsystemet eller programvare gjennom et shell/kommandolinje i form av tekst. 3.2 Referanser Id Referanse Beskrivelse 1 [MAL] SoftwareArchitectureDocument (SAD) fra bussruta.sparebank1.no. Versjon 1.0 2 A successful Git http://nvie.com/posts/a-successful-git-branching-model/ branching model 3 Revision controlled project visualization http://en.wikipedia.org/wiki/file:revision_controlled_project_visualization- 2010-24-02.svg 4 Git Tutorial Getting Started http://www.javacodegeeks.com/2012/03/git-tutorial-getting-started.html Filnavn: Dokumentasjon av Git.docx Side: 7 av 7