UKEOPPGAVER 13: KONFIGURASJONSSTYRING

Like dokumenter
Versjonskontrol med Subversion. og TortoiseSVN

Dokumentasjon av Git. Vedlegg F

Introduksjon til versjonskontroll av Ola Lie

Konfigurasjonsstyring

Dagens tema: Kodegenerering. Redigeringsverktøy. Versjonskontroll. Array-er Funksjoner og kall Hovedprogrammet Noen siste gode råd.

Dagens tema: Generelt om variable. Kodegenerering. Deklarasjon av array er. Versjonskontroll. Oppslag i array er

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

Konfigurasjonsstyring. INF1050: Gjennomgang, uke 11

Installasjonsveiledning

$ls -l $grep -i Olsen adresseliste.txt less #!/bin/sh $echo `ls` $chmod 755. Praktisk Linux. Grunnleggende skall kommandoer. Irene Ludvigsen Husa

Håndtering av filer og kataloger

Gjennomgang av prøveeksamen. Gruppetime INF1055 Julie Hagen Nilsen & Maria Stolinski

Fjerninnlogging over Internett

Håndtering av filer og kataloger

Import av klientfiler er kun mulig fra Akelius Årsavslutning, Akelius Skatt og Akelius Revisjon.

Intentor Helpdesk - Installasjon Step #3: Microsoft Reporting Services

Kjøre Wordpress på OSX

Magnus Karge, Knut Sælid

Endringshåndtering og konfigurasjonsstyring av programvare (SCCM)

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Dagens tema: Koding. Høynivåprogrammering, kommentarer og stil Kompilering av store programsystemer Prosjekter, samarbeide og versjoner

Læringsmål og pensum. v=nkiu9yen5nc

Denne forelesningen beskriver SCCM s rolle under. Endringshåndtering og konfigurasjonsstyring av. Målet for SCCM er å holde orden på endringer

Dagens tema: Koding. Programmering i høynivåspråk. Navn. Mitt forslag:

UKEOPPGAVER 2: SYSTEMUTVIKLINGSPROSESSER OG PROSJEKTARBEID INNSPILL TIL SVAR

Oppgaver til forkurs i informatikk dag 1

Sikkerhet og tilgangskontroll i RDBMS-er

Kort om kursene INF1100 og MAT-INF1100L

Installasjonsveiledning Oppgradering av tidligere versjon

Oppgaver til forkurs i informatikk dag 2

Repository Self Service. Hovedoppgave våren 2010

Dagens tema: Kodegenerering. Versjonskontroll. Variabler, spesielt vektorer Funksjoner, kall og parametre Noen siste gode råd.

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Kort om kursene IN1900, MAT-IN1105, IN-KJM1900

CMI. Brukermanual. Comendo Dronning Eufemias Gate 16 N-0191 Oslo T: F:

6105 Windows Server og datanett

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

SPSS Høgskolen i Innlandet

1. Å lage programmer i C++

En liten oppskrift på hvordan jeg installert og fikk Xastir til å virke sånn at jeg ble synlig i APRS verden.

Hurtigstart guide. Searchdaimon ES (Enterprise Server)

Bruk av Spark. ikke til dytting og sitting. Universitetet i Tromsø 22. mars Torbein Kvil Gamst Bruk av Spark, Side 1

Din verktøykasse for anbud og prosjekt

Shellscripting I. Innhold

Brukerveiledning My Mediasite og Mediasite Katalog i Canvas

Workflow Hvordan finne en bibliografisk post som utgangspunkt for bestilling

Dagens tema: Mer av det dere trenger til del 1

Workflow Heftemottak. Registrere utgivelsesmønster. Dato:

Publisering av statiske og dynamiske websider til klasserom.net fra Dreamweaver og MySQL

Kort om kursene IN1900, MAT-IN1105, IN-KJM1900

HOWTO Sette opp Skolelinux med tynne klienter og printer

INF2270 Datamaskinarkitektur

Open Source Community

Administrator guide. Searchdaimon ES (Enterprise Server)

Huldt & Lillevik Ansattportal. Installere systemet

Kartverket. Innhold. Installasjon av nødvendig programvare for arbeid med produktspesifikasjoner. Prosedyre

Installasjonsveiledning Oppgradering av tidligere versjon

Litt info om Unix-nettet/maskinene. Hvorfor kjøre matlab på Unix. Overføring av filer mellom PC og Unix. Hvordan få tilgang/unix-bruker

Huldt & Lillevik Lønn 5.0. Installere systemet

2. Beskrivelse av installasjon av SQL Server 2005 og hvordan lage databasen som trengs av administrasjonsprogrammet:

Høgskoleni Østfold. Ny/utsatt EKSAMEN

Kartverket. Innhold. Prosedyre. Installasjon av nødvendig programvare for arbeid med SOSI-produktspesifikasjoner

6105 Windows Server og datanett

Enbruker-installasjon

Patron Driven Acquisitions (PDA) Brukerstyrt innkjøp

Gemini 3D VA Import av data fra konsulent / entreprenør til Gemini VA Eksempel fra OSLO Lufthavn. Norsk Vann Fagtreff 5. Des 2012 Bjørn Lura

HTML: Publiser nettsiden din. Publiser nettsiden din på Internett. Github. Brukernavn.github.io

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

Tilkobling og Triggere

ZFS. Siste ord innen filsystemer. Trond Endrestøl. Fagskolen Innlandet, IT-avdelingen. 23. desember 2013

ZFS. Siste ord innen filsystemer. Trond Endrestøl. 23. desember Fagskolen Innlandet, IT-avdelingen

Dokumentmaler inneholderinformasjon som skal gjenbrukes for mange dokumenter: Layout, fast innhold og koder for standard variabelt innhold som tittel

Byggeweb Prosjekt Brukerveiledning Arbeidsområdet

desktop Grunnleggende bruk av EndNote Viktig info 3 punkt s. 2 Skrive inn referanser manuelt s. 4 Overføre referanser fra databaser/søkemotorer s.

6105 Windows Server og datanett

6105 Windows Server og datanett

EKSAMEN. Operativsystemer. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

Brukerveiledning My Mediasite og Mediasite Catalog i Canvas

Linux distribusjoner

RagHon Consulting. Ragnar Hongset Senior Technical Specialist and owner.

Litt om Javas class-filer og byte-kode

EndNote referansehåndteringsprogram. HiVe biblioteket

Tilpasning av Windows 2000 server til Skolelinux tynnklienttjener

Hendelser Apprentice ComputerCraft PDF

Databaser kort intro. Tom Heine Nätt

Dette er en demonstrasjonsside som vi skal bruke for å se litt nærmere på HTTP protokollen. Eksemplet vil også illustrere et par ting i PHP.

Filer i Linux og Bourne-again shell

Produktrapport Gruppe 9

Etiming på nærløp. Dersom du får opp vinduet under er filene fra forrige løp flyttet, og du må oppgi hvor systemfilen ligger.

Installasjon av FINALE Årsoppgjør og FINALE Rapportering i ASP-miljø

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

Kartverket. Innhold. Installasjon av nødvendig programvare for arbeid med SOSI-produktspesifikasjoner. Prosedyre

Lab 1: Installasjon av Virtualiseringsløsning (VMWare Server ESXi 6.5) med en Virtuell Linux maskin (Cent OS 7 64-bit)

1. Å lage programmer i C++

6105 Windows Server og datanett

Installasjon av SK Admin 6.11

6105 Windows Server og datanett

Automatisering av datasenteret

EKSAMEN Innføring i Linux

Transkript:

UKEOPPGAVER 13: KONFIGURASJONSSTYRING Formål: I denne oppgaven skal dere få litt hands on med versjonskontrollsystemet Subversion. Meningen er at du skal prøve å relatere prinsippene det ble forelest om til konkrete bruksscenarier i et enkelt, men mye brukt versjonskontrollsystem. Det gis ikke løsningsforslag, da de fleste detaljer er beskrevet i oppgaveteksten. Forutsetninger: Oppgaveteksten vil bruke begreper fra forelesning Innledning I denne oppgaven skal du bli kjent med versjonskontrollsystemet Subversion. Dere skal jobbe i par. Hvert par skal jobbe mot hvert sitt Subversion repository, men hver person skal ha sitt lokale arbeidsområde. Dette kan gjøres enten ved at dere sitter på hver deres maskin, eller at dere har hvert deres linux shell på sammen maskin. Hvis du ikke finner en partner kan du simulere en partner ved å ha to linux shell oppe, og jobbe på to ulike kataloger. Bruk gjerne online ressurser som http://svnbook.red bean.com/en/1.4/index.html underveis. Subversion har en klient tjener arkitektur, der kommunikasjon mellom klient og tjener kan foregå via protokoller som http eller ssh. Det er kjempeviktig at du har klart for deg forskjellen på å gjøre endringer lokalt i ditt arbeidsområde (klient), og å gjøre endringer i det sentrale repositoriet (server). Oppgave 1. Opprette et Subversion repository Vanligvis gjøres dette fra kommandolinje, med svnadmin create <sti>. På ifi har man et webgrensesnitt for å gjøre dette: Gå til https://wwws.ifi.uio.no/system/svn Velg Create new repository Skriv inn navnet inf1050 og trykk submit Oppgave 2. Lage en standard initiell struktur i repositoriet Fra nå av skal du ikke bruke web grensesnittet lenger. Subversion er kommandolinjeorientert, men det finnes også grafiske add ons som (kanskje) gjør bruken enda enklere. En standard måte å organisere et Subversion repository på er for hvert prosjekt/system å ha underkatalogene trunk, branches og tags. Trunk er navnet for mainline i Subversion, her foregår normal videreutvikling. Forgreninger samles under katalogen branches. Tags brukes

til å navngi systemversjoner. Les eventuelt mer på http://svnbook.red bean.com/en/1.2/svn.branchmerge.maint.html En av dere lager nå disse tre katalogene lokalt (under et fritt valgt område, eks. inf1050). Kommandoen gir du i et linux shell. inf1050> mkdir trunk inf1050> mkdir branches inf1050> mkdir tags og gir kommandoen inf1050> svn import. m "ny import" https://svn.ifi.uio.no/repos/users/<user> inf1050 <user> i kommandoen over erstattes med ditt brukernavn. Dere kan nå sjekke at det sentrale repositoriet deres inneholder de riktige filene: inf1050> svn list https://svn.ifi.uio.no/repos/users/<user> inf1050 Mer info kan dere få om endrede filer i lokalt arbeidsområde med: inf1050> svn status. Og mer versjonshistorikk om hvert enkelt element med inf1050> svn v status. Oppgave 3. Etablere lokale arbeidsområder Hver av dere gjør følgende: Gå til en passende katalog der du skal ha ditt arbeidsområde. For deg som opprettet repositoryet unngår du trøbbel hvis du nå oppretter en ny katalog, der du henter en fresh versjon av det som nå ligger i repositoriet. svn checkout https://svn.ifi.uio.no/repos/users/<user> inf1050 Du vil nå se at du har fått et lokalt hierarki som ser ut som følger <user> inf1050 trunk branches tags

Oppgave 4. Opprette nye filer under versjonkontroll En av dere gjør følgende: Opprett to filer i katalogen trunk : <user> inf1050> echo "innhold i fil1.txt" > trunk/fil1.txt <user> inf1050> echo "" > trunk/fil2.txt La Subversion vite at dette er Subversion filer: <user> inf1050> svn add trunk/fil1.txt <user> inf1050> svn add trunk/fil2.txt Og commit (checkin) til repository: <user> inf1050> svn commit m Nye filer Den av dere som ikke gjorde de foregående steg kan nå gjøre Denne kommandoen oppdaterer arbeidsområdet ditt med nye filer og versjoner fra repository Oppgave 5. Normal parallell utvikling Subversion bruker en optimistisk strategi for parallell utvikling, som betyr at endringer kan gjøres parallelt på samme fil av flere utviklere. Merging og eventuell konflikter må håndteres ved commit. I praksis viser det seg at dette fungerer (overraskende) bra i de fleste tilfeller. Simuler nå seriøs parallell systemutvikling som følger: En av dere endrer litt tekst i trunk/fil1.txt og trunk/fil2.txt (bruk en vanlig editor) Den andre endrer litt tekst i trunk/fil1.txt Begge prøver så å overføres sine endringer til repository: <user> inf1050> svn commit m noen endringer En av dere vil nå få en melding: svn: Commit failed (details follow): svn: Your file or directory 'fil1.txt' is probably out of date svn: resource out of date; try updating Dette betyr at det har vært gjort en commit på fila siden du hentet den fra repository. For å hente (og eventuelt) merge endringer inn i ditt arbeidsområde fra repository brukes igjen svn update: De parallelle endringene i fil1.txt vil Subversion prøve å merge automatisk. Hvis det blir en merge konflikt vil du se det av innholdet i fil1.txt. I så fall må disse rettes manuelt. Til slutt gjør den av dere som fikk konflikt: <user> inf1050> svn commit m håndtert konflikter

Oppgave 6. Opprette en branch Vi ser nå for oss at en av dere skal videreutvikle systemet, men den andre skal gjøre en bugfix. En av dere fortsetter derfor å jobbe i trunk, mens den andre må opprette en bugbranch. Det siste gjøres i Subversion med: <user> inf1050> svn copy m 'lager bugbranch' https://svn.ifi.uio.no/repos/users/<user> inf1050/trunk Du som skal jobbe i bugbranch henter så inn filer til ditt lokale arbeidsområde og går til v1bugs katalogen <user> inf1050> cd branches/v1bugs Så editerer bugutvikler fila fil2.txt, slik at den inneholder disse to linjene (og ingen blanke): tillegg i bugbranch trunk utvikler gjør følgende endringer i trunk/fil2.txt. tillegg i trunk Hver av dere gjør følgende for å sjekk inn endringer. Hver av dere gjør nå svn commit m 'endret i fil2.txt Oppgave 7. Merge branch inn i trunk (Bedre norsk: Flette forgrening inn i hovedlinje) Denne oppgaven begynner å bli avansert. Hvis du er i ferd med å få liten tid, holder det at du leser og tenker gjennom oppgaveteksten. Merging av branch inn i trunk er kanskje den mest brukte av de mer avanserte features i versjonskontrollsystemer. Subversion har en litt keitete måte å gjøre dette på, men alt blir en vanesak: En slik merge operasjon i Subversion kan beskrives som å identifisere endringene som er gjort i bug branch og så applisere disse endringene på siste versjon i trunk. Den vanligste måten å gjøre dette på er å finne versjonsnummeret der branchen ble laget, og sammenligne med versjonen HEAD (spesialsymbol for siste endring). Versjonsnummeret er globalt for hele repositoriet i Subversion: For hver gang man gjør en endring i repositoriet inkrementeres versjonsnummeret med 1. Versjonsnummeret der bugbranchen ble laget kan finnes ved: <user> inf1050> svn log stop on copy

Den siste linja i listingen du da får vil inneholde revisjonsnummeret (med en r foran) der angitt bugbranch ble laget En av dere gjør nå følgende: <user> inf1050> cd trunk <user> inf1050/trunk> svn merge r 10:HEAD (10 byttes ut med ditt nummer) Denne kommandoen finner alle endringene mellom 10 og HEAD i bugbranch og appliserer dem til siste versjon i trunk (katalogen du står i). Du kan nå inspisere filene som rapporteres endret. Hvis du har fulgt oppskriften nøyaktig vil fil2.txt se ut som følger: bug 1 fix trunk additions Dette er teknisk sett er en korrekt merging av de to branchene. Hvis det dreier seg om programkode er du imidlertid ikke garantert at resultatet er korrekt.