Versionshantering. Problem som uppstår i större (samt även mindre) projekt:

Relevanta dokument
Introduktion till Git

Versionshantering med Git. Henrik Henriksson 17 april 2018

Introduktion till git

Versionshantering med Git

1 Vad är Versionshantering? 2 Git. 2.1 GitHub

Tfn Telephone Kontr Checked. Revisionshistoria Revision history Rev Namn Name Datum Date Ändring Change

Övning GIT Andreas Wieden

CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna

Versionshantering. Jan Erik Moström

Introduktion till Git Anton Ekberg Version 2

JUnit. Junit Unit Testing. JUnit 3. JUnit 3 forts. Villkorskontroller i test. Exempel JUnit3

UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002

TDP005. Föreläsning 2. Filip Strömbäck

Bryt ut logiken för att göra Bulk-ersättning av Category i Index i ProductControllern.

Övningar Lektion3 Avancerade Webbteknologier 2

GitHub for Windows och GitShell

Har funnits nästan lika länge som datorerna. Manuell process, svarta tavlan Verktygsstöd kom tidigt redan i början på

Börja med git och GitHub - Windows

TDP005, Projekt: objektorienterade system

Mer om kodkvalitet. Mer om kodkvalitet. Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité?

UNIX verktyg. Användbara kommandon Fil och informationssökning Tags Versionshanteringssystem

Insidan av ett Open Source projekt. Nicklas Avén

Kapitel 4 Arkivmenyn Innehåll

Fördjupningsarbete/laboration om Git

Krav: * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

DI Studio nyheter

Handledning Konfigurationsstyrning tjänstedomäner

Handledning. Konfigurationsstyrning tjänstedomäner. Version ARK_

Redigering av dokument - SaveToServer

Storegate Pro Backup. Innehåll

HIGs Remote Desktop Service med Linux

Instruktion för användande av Citrix MetaFrame

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Frågebanker, frågeuppsättningar och slumpvisa block

Release. Konfigurations & Versionshantering samt Subversion. Konfigurations vs Versionshantering. CI -definition. Henrik Bergström

Säkerhetskopiera och återställa

Programvara på Nada. Johan Berglund Systemgruppen, Nada

LVDB i GEOSECMA. Innehåll. Inledning. Produkt: GEOSECMA Modul: LVDB Skapad för Version: Uppdaterad:

Unix-miljöer i större sammanhang

Subversion - varför?

Laboration 0. Enhetsbokstaven anges med ett kolon efter och man läser ofta ut detta, exempelvis C:(sekolon).

ALEPH ver. 18 ALEPH Digital Asset Module (ADAM)

Projektarbete 2: Interaktiv prototyp

Kort-kort om utdelade användarkonton och datormiljön på NADA

GIT som alternativ till CVS/SVN i agila utvecklingsmiljöer

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

ClearCase. Versionshantering

Konvertering från Klients databas till Norstedts Byrå

Vid problem med programmet kontakta alltid C/W Cadware AB på telefon

RIV TA Konfigurationsstyrning 1.0 RIV Tekniska Anvisningar

Handbok Cervisia. Bernd Gehrmann Carlos Woelz Översättare: Stefan Asserhäll

KAP 18 SQL SERVER AGENT

Att bygga enkel webbapplikation i Docker

BOOK-IT 6.0. Backup Solaris

Instruktion för användande av Citrix MetaFrame

TDP003 Projekt: Egna datormiljön

1 Installationsinstruktioner

INSTALLATION AV VITEC MÄKLARSYSTEM

Insamlingsverktyg - teknisk beskrivning av metadataformuläret

1. Hur öppnar jag Polisens blanketter / formulär, trycksaker och annat som är i PDF-format?

Skapa din egen MediaWiki

TIDOMAT Portal Nyheter för TIDOMAT Portal version 1.3.1

Installera din WordPress med 9 enkla steg

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

Linux som utvecklingsmiljö

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Agil användbarhetsutveckling för handhållna enheter. Per Lind

INNEHÅLLS FÖRTECKNING

Installera SoS2000. Kapitel 2 Installation Innehåll

PRINTER DRIVER ADMINISTRATOR GUIDE

Grundläggande termer. Några olika system. F11 Grunderna i Versionshantering. Git basic. Origin. Git basic. Git basic. Local #1. Local #3.

INSTALLATION AV VITEC MÄKLARSYSTEM. Studentversion

Quadri DCM Handledning för administratörer och användare i projekt som kör Quadri DCM. Version

Marie Andersson, IKT-centrum E-post: (Bb Learn 9.1.8) Wikis i Blackboard

LEX INSTRUKTION LEX LDAP

Continuous Integration med Jenkins. Linus Tolke Enea Experts

Kom igång med Topocad ArcGIS

AVCAD 4.0 för Windows

Du kan installera Widgitprodukter på ett nätverk. Följande program och tillägg hanteras (du kanske inte har licens att installera all dessa):

Excel Online Version 1.0 Skolkontoret

Verktyg och Utvecklingsmiljö. Jochim von Hacht

Bilaga KeyControl Felsökning

7 Mamut Client Manager

Välkommen till Dropbox!

Fillagringsplatser. Fillagringsplatser (information om fillagringsplatserna du har att tillgå på Konstfack) Inledning... 12

Kom igång med TIS-Office

Beställning av certifikat för anslutning till BankID (RP certificate) Version

Innehåll. Installationsguide

Molnplattform. Version 1.0. Användarhandbok

Uppgradering till DentalEye 3.2

EMC Documentum My Documentum for Microsoft Outlook

Driftdokumentation. Procapita Vård och Omsorg Inkomsthantering. Version

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Rev Oct Användarguide Smartsign 9

Flytt av. Vitec Mäklarsystem

1 Nyheter i Filr 2.0 Desktop-programmet

Uppdatera Mobilus Professional till version * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

Transkript:

Versionshantering Problem som uppstår i större (samt även mindre) projekt: Samtidiga ändringar. Kålle och Ada öppnar samma fil för redigering vid var sin dator. Om Kålle först sparar sina ändringar och Ada därefter sparar sina, så går Kålles ändringar förlorade. Misslyckade utvecklingssteg. Kålle börjar arbeta på en större omskrivning av av projektet, men inser efter en vecka att han är på fel spår och vill då gå tillbaka till läget innan han började ändra. Support av gamla versioner. Fixa buggar i version 1.X efter att 2.X börjat utvecklas. Hitta regressioner. I vilket sammanhang introducerades viss kod. 1

Tillåt bara en användare I taget. Samtidiga ändringar Kan ge tidsförluster om någon behöver vänta. Tillåt flera samtidiga användare, men varna vid skrivning. Mycket manuellt arbete om man ofta arbetar i samma filer. Tillåt flera användare. Kombinera flera olika användares resultat automatiskt vid skrivning. Om det uppkommer konflikter, tydliggör dessa och varna användaren. Problem med binärfiler, men bra lösning för källkod och andra textfiler. 2

Misslyckade utvecklingssteg Spara backupkopior av alla filer i lämplig katalog tillräckligt ofta. Lätt att glömma, bara senaste backup tillgänglig. Lita på att driftavdelningen gör backup på filsystemet och be systemadministratören återställa läget för en vecka sedan. Hur ofta görs backuperna? Lagra alla filers alla versioner i en databas, där man kan återvinna vilken version som helst. Gör det också lättare att ge support för gamla versioner. 2.0 2.3 1.0 1.8 3

Grundläggande egenskaper Kan lagra projekt bestående av flera versioner av träd av kataloger och filer i en central lagringsplats (eng. repository). Användare arbetar med separata lokala kopior av projektet. Användare kan när som helst spara sin lokala kopia till den centrala lagringsplatsen, där den utgör en ny version (eng commit/revision). Användaren kan när som helst återgå till en tidigare version. 4

CVS (Concurrent Version System). CVS och SVN Mest av historiskt intresse, men lever fortfarande kvar i många projekt. SVN (Subversion). Nyare med lösningar på flera problem i CVS. Versionshantering av hela katalogstrukturer istället för separata filer, bättre stöd för att flytta filer. Mindre risk för att binärfiler förstörs. Lokal kopia av orginalfilerna, så man slipper ansluta till servern för vissa operationer. Fler alternativ nämns senare i presentationen. Observera, det är obligatoriskt att använda något versionshanteringssystem i den här kursen. SVN rekommenderas. 5

SVN 1: Skapa en lagringsplats Skapa en katalogstruktur som innehåller följande: / rooten trunk/ Katalogstruktur för den aktiva versionen - proj/ Erat projekt, kan ha annat namn. branches/ Förgreningar, här sker utveckling och underhåll av gamla versioner. - proj-1/ - proj-2/ tags/ Innehåller referenser för att lätt hitta släppta versioner. - proj-1.0/ - proj-1.1/ - proj-2.0/ Detaljerade instruktioner på kurshemsidan. 6

Placera dig i en lämplig katalog Kör följande kommando: SVN 2: Skapa lokal kopia svn checkout URL För student1, i grupp 01 är URL (förutsatt att man använt repo och proj som namn): svn+ssh://student1@remote1.studat.chalmers.se/chalmers/groups/tda366-09-01/repo/trunk/proj Ger en katalog med namnet proj. Den innehåller projektets katalogstruktur, samt en katalog som heter.svn med filer som subversion behöver. 7

svn add filnamn Gör att filnamn versionshanteras. SVN 3: Redigering svn commit -m Lade till funktion x Skickar upp en ny version till den centrala lagringsplatsen. svn update Laddar ner de senaste ändringarna från den centrala lagringsplatsen och kombinera med dina lokala ändringar. Kan ge konflikt, om du ändrat på samma ställe i en fil som någon annan. 8

svn status SVN 4: Hämta information Ger information om statusen för dina lokala kopior av filerna. T.ex. A (Added), M (Modified) eller C (Conflict). I det sistnämnda fallet behöver du lösa konflikten innan du kan fortsätta. Flaggan -u kan användas för att se centrala ändringar. svn log Ger information om alla versioner, med det meddelande som gavs vid commit. svn update --revision N Gå tillbaka till en gammal version. N kan vara versionsnummer eller datum som {2008-04-10} svn diff Se vilka ändringar du gjort 9

SVN 5: Konflikter Om man har konflikt i en fil så kommer svn att markera konflikten i filen, t.ex. MyClass.java. for (int k = 0; k < MAX; k++) <<<<<<<<.mine time[k] = 0; ======== time[k] = INFTY >>>>>>>>.r7 init = 0 Ovanför likhetsteknen finns din version, under finns någon annans. Du får nu bestämma vad som är rätt och efter att du tagit bort konfliktmarkerarna gör du: svn resolved MyClass.java 10

SVN 6: Lära sig mer Mer information om subversion finns på: http://svnbook.red-bean.com Finns plugin till eclipse, subclipse. http://subclipse.tigris.org/ Windows-användare kan använda TortoiseSVN. http://tortoisesvn.tigris.org/ 11

Allmänna råd Lägg bara upp källkod, bilder och liknande. Undvik att lägga upp classfiler och andra genererade filer. Använd svn rm och commit om felaktiga filer läggs till av misstag. Se till så att det kompilerar innan ni kör commit. Mycket irriterande för andra om update introducerar kompileringsfel. Gäller också att se till så alla nya filer läggs till. Undvik exotiska tecken (t.ex. å, ä och ö) i filnamn. Kan leda till problem på olika system. Se till så stora och små bokstäver är rätt i filnamnen innan de läggs upp. Att bara ändra mellan stora och små bokstäver i efterhand kan ge problem. 12

Distribuerad versionshantering Varje användare har en egen kopa av versionsdatabasen. Kan arbeta helt självständigt utan att ansluta till den centrala servern. commit sparar versioner lokalt. push/pull för att synkronisera med andra. Bättre stöd för icke-linjär utveckling. Olika personer kan arbeta på olika förgreningar (eng. Branches). Förgreningarna kan lätt kombineras (eng. merging). Ingen strikt hierarki Alla kan skicka/ta emot ändringar utan att behöva gå via den centrala servern. Gör att även personer som bara har läsrättigheter lätt kan göra större förändringar. 13

Git http://git-scm.com/ Olika alternativ Används för Linux-kärnan, X.Org, Google Android, VLC mfl Finns installerat på studat. Mercurial (Hg) http://www.selenic.com/mercurial/ Används bl.a. av Mozilla och Sun. Darcs http://darcs.net/ Används av diverse haskell-projekt. Finns via unsup. echo unsup >> $HOME/.vcs4/pathsetup Prata med er handledare om ni vill använda något annat än SVN. 14

Git 1: Skapa databas Gör följande för att skapa versionsdatabas mkdir proj1 cd proj1 git init Lägg till de första filerna (eventuellt bara.gitignore) git add. git commit -m Initial commit cd /chalmers/groups/tda366-09-01/ mkdir proj1.git cd proj1.git git --bare init --shared git --bare fetch ~/proj1 master:master chgrp -R tda366-09-01. 15

Git 2: Ladda ner lokal kopia Varje person behöver göra följande: git clone REPO där REPO t.ex. är - student1@remote1.studat.chalmers.se:/chalmers/groups/tda366-09-01/proj1.git cd proj1 git config user.name 'Ditt namn' git config user.email 'din@adress.se' 16

Git 3: Redigera git add fil.java Spara senaste ändringarna från fil.java i index. git commit -m Fixade bug Spara indexet som en ny version. git fetch origin Hämta senaste ändringarna från er centrala databas origin är den databas du klonade, andra går att lägga till med git remote git merge origin/master Kombinera dina lokala ändringar med andras master är standardförgreningen fetch+merge kan kombineras med: git pull origin master git push origin master Skicka upp dina ändringar till den centrala databasen 17

Git 4: Förgreningar git branch namn Skapar en ny förgrening med namnet namn git checkout namn Flytta över till förgreningen namn Används också för att hämta objekt från databasen Större ändringar är lämpligt att göra på ny förgrening: git branch temp git checkout temp Repetera: redigera, testa, add, commit git checkout master git merge temp git push origin master Kan byta över till master eller annan förgrening för ändringar som inte är relaterade till temp 18

git gui och gitk git svn Git 5: Mer information Grafiska program för att göra mycket av jobbet. Låter dig använda git lokalt men arbeta mot en central SVN databas. Git för windows msysgit http://code.google.com/p/msysgit/ TurtoiseSVN-liknande interface under utveckling: http://code.google.com/p/tortoisegit/ Eclipse plugin http://repo.or.cz/w/egit.git Kräver att ni kompilerar själva. 19