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

Relevanta dokument
Introduktion till Git

TDP005 Projekt: Objektorienterat system

Versionshantering med Git. Henrik Henriksson 17 april 2018

Det finns många flaggor till g++,

TDP005: Introduktion till Make

Versionshantering med Git

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

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

1 Vad är Versionshantering? 2 Git. 2.1 GitHub

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

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

grundläggande C++, funktioner m.m.

Introduktion till git

TDP005, Projekt: Objektorienterade System. Laboration: Eclipse

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

Programmering i C++ Kompilering från kommandoraden

Programsystemkonstruktion med C++

Första exemplet. Kompilator & länkare. Projekt. Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, Ronnie Johansson,

TDIU01 - Programmering i C++, grundkurs

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

TDP005, Projekt: objektorienterade system

TDP005, Projekt: Objekt-orienterade System. Laboration: Eclipse

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

Tekniskt system för Lean Startup

IDA kursmaterial Informationsblad make. make

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

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer

Code-Lite tutorial ( /RoJ)

TDIU01 - Programmering i C++, grundkurs

En klass behöver både deklaration och definition. Daniel Aarno Globala funktioner och variabler är OK.

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

Versionshantering. Jan Erik Moström

Börja med git och GitHub - Windows

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

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

tentamensdags och lab 3

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Emacs. Eric Elfving Institutionen för Datavetenskap (IDA)

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

Övningar Lektion3 Avancerade Webbteknologier 2

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

TDIU01 (725G67) - Programmering i C++, grundkurs

prog: prog.c gcc -g -Wall prog.c /usr/local/bib/c/58an/modules/modul.o -o prog

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

Tentamen i DD2387 Programsystemkonstruktion med C++

Labb 1: Vad, hur, och varför?

Tillämpad programmering

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

RFC 6106-stöd i Router Advertisment-klienten radns. Michael Cardell Widerkrantz mc@hack.org

Modul 3 - Modularisering

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

1 Klasser och objektorientering Vad är objektorientering?

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Föreläsning 7. Tobias Wrigstad. Versionshantering med git

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Innehållsförteckning. Exempel. Åtkomst & användarhandledning

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Filhanterare med AngularJS

Operativsystem (IS1350) :00-12:00

TDIU01 - Programmering i C++, grundkurs

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

TDDD80 Mobila och sociala applika1oner. Kursintroduk1on

Övningar Dag 2 En första klass

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 3. Filip Strömbäck. Verifikation, validering och testning

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

TDDC76 - Programmering och Datastrukturer

TDP003 Projekt: Egna datormiljön

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

Introduktionslaboration

Platina och kvalité. Rasmus Staberg, Teknisk direktör,

TDDD80 Mobila och sociala applikationer. Kursintroduktion

Lab1 Introduktion. 1 Syfte. 2 Innehåll Win32API Skapa trådar Kritiska sektioner Mailslothantering. 3 Förberedelse & Tips

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Introduktion till Git Anton Ekberg Version 2

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

Insidan av ett Open Source projekt. Nicklas Avén

TDP003. Föreläsning 1. Filip Strömbäck

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Server-kod. TDDD80 Mobila och sociala applikationer

Så här skriver du ditt första program i C++

Programsystemkonstruktion med C++

Fö 2 TSEA81 Datorteknik och realtidssystem

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Systemutveckling i praktiken

C++ Slumptalsfunktioner + switch-satsen

Innehåll. EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Viktiga skillnader mot Java

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Proj-Iteration 5B. Plan för återstående iterationer

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

UPPDATERA DIN UNICO-ORGELS OPERATIVSYSTEM!

SgLib Simple Graphics Library

Goda råd från studenterna som gjorde kandidatprojektet 2018

Transkript:

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

1 Make och CMake 2 Versionshantering

TDP005 Filip Strömbäck 2 Make Problem: kompilera många filer i ett stort projekt tar tid Bättre om vi kompilerar om så få filer som möjligt! Make kan hjälpa oss!

TDP005 Filip Strömbäck 3 Make foo.h # pragma once int foo( int val); main.cpp #include "foo.h" # include <iostream > //... int main() { cout << foo(10) << endl; return 0; } foo.cpp #include "foo.h" int foo( int val) { return val + 1; }

TDP005 Filip Strömbäck 4 Make Beroenden foo.h main.cpp. foo.cpp g++ -std=c++17 -Wall *.cpp -o prog

TDP005 Filip Strömbäck 4 Make Beroenden foo.h main.cpp. foo.cpp prog g++ -std=c++17 -Wall *.cpp -o prog

TDP005 Filip Strömbäck 5 Make Beroenden foo.h main.cpp. foo.cpp g++ -c -std=c++17 -Wall main.cpp -o main.o g++ -c -std=c++17 -Wall foo.cpp -o foo.o g++ -std=c++17 main.o foo.o -o prog

TDP005 Filip Strömbäck 5 Make Beroenden foo.h main.cpp. foo.cpp main.o foo.o g++ -c -std=c++17 -Wall main.cpp -o main.o g++ -c -std=c++17 -Wall foo.cpp -o foo.o g++ -std=c++17 main.o foo.o -o prog

TDP005 Filip Strömbäck 5 Make Beroenden foo.h main.cpp. foo.cpp main.o foo.o prog g++ -c -std=c++17 -Wall main.cpp -o main.o g++ -c -std=c++17 -Wall foo.cpp -o foo.o g++ -std=c++17 main.o foo.o -o prog

TDP005 Filip Strömbäck 6 Make makefil Första försök: prog: foo.o main.o g++ -std=c++17 -g -Wall foo.o main.o -o prog foo.o: foo. cpp foo.h g++ -c -std=c++17 -g -Wall foo. cpp -o foo.o main.o: main. cpp foo.h g++ -c -std=c++17 -g -Wall main. cpp -o main.o

TDP005 Filip Strömbäck 7 Make makefil Förbättring: CXXFLAGS = -std=c++17 -g -Wall prog: foo.o main.o g++ $( CXXFLAGS) foo.o main.o -o prog foo.o: foo. cpp foo.h g++ -c $( CXXFLAGS) foo. cpp -o foo.o main.o: main. cpp foo.h g++ -c $( CXXFLAGS) main. cpp -o main.o

TDP005 Filip Strömbäck 8 Make makefil med.phony och clean CXXFLAGS = -std=c++17 -g -Wall prog: foo.o main.o g++ $( CXXFLAGS) foo.o main.o -o prog foo.o: foo. cpp foo.h g++ -c $( CXXFLAGS) foo. cpp -o foo.o main.o: main. cpp foo.h g++ -c $( CXXFLAGS) main. cpp -o main.o. PHONY: clean clean: rm *.o prog

TDP005 Filip Strömbäck 9 Make Finns mycket mer: makron, variabler, etc. Se make-laborationen för mer info.

TDP005 Filip Strömbäck 10 CMake CMakeLists.txt: project( prog) set( CMAKE_CXX_STANDARD 17) # set( CMAKE_CXX_FLAGS "${ CMAKE_CXX_FLAGS} -std=c++17") set( SOURCE_FILES main. cpp foo. cpp foo.h) add_executable( prog ${ SOURCE_FILES}) Kompilera: $ cmake. $ make

1 Make och CMake 2 Versionshantering

TDP005 Filip Strömbäck 12 Git Git ska användas i kursen Interaktiv genomgång: http://learngitbranching.js.org/ Hur används Git i större projekt?

TDP005 Filip Strömbäck 13 GitLab Issues GitLab har inbyggt stöd för issues. Kan användas för att hålla koll på vad som ska göras härnäst, buggar, etc. I ett commit-meddelande kan man skriva: fixes #13 Då stängs automatiskt issue #13, och en referens till den commit som stängde den läggs till.

TDP005 Filip Strömbäck 14 Git Hur organiseras koden i större projekt? Centralt repository Merge Rebase Feature Branch Gitflow Flera repositories Integration-Manager Workflow (Forking Workflow) Dictator and Lieutenants Workflow

TDP005 Filip Strömbäck 15 Git Centralt repository Repository.

TDP005 Filip Strömbäck 16 Git Merge origin/master C0. C1 master

TDP005 Filip Strömbäck 16 Git Merge origin/master C0. C1 F1 F2 master

TDP005 Filip Strömbäck 16 Git Merge origin/master C0. C1 C2 C3 F1 F2 master

TDP005 Filip Strömbäck 16 Git Merge origin/master C0. C1 C2 C3 F1 F2 C4 master

TDP005 Filip Strömbäck 16 Git Merge origin/master C0. C1 C2 C3 F1 F2 C4 master

TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 master

TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 F1 F2 master

TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 C2 C3 F1 F2 master

TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 C2 C3 F1 F2 F1 F2 Rebase master

TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 C2 C3 F1 F2 F1 F2 master

TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 C2 C3 F1 F2 master

TDP005 Filip Strömbäck 18 Git Merge och Rebase Enklaste sättet att samarbeta Fungerar bra i mindre projekt Kan inte samarbeta på funktionalitet som ej är klar Risk att master inte fungerar, problem för andra Stor feature, stora merge-konflikter

TDP005 Filip Strömbäck 19 Git Feature Branch master C0.

TDP005 Filip Strömbäck 19 Git Feature Branch feature-c master C1 C2 C3 C0.

TDP005 Filip Strömbäck 19 Git Feature Branch feature-c master C1 C2 C3 C0. F1 F2 F3 feature-f

TDP005 Filip Strömbäck 19 Git Feature Branch Merge Request feature-c master C1 C2 C3 C0. F1 F2 F3 feature-f

TDP005 Filip Strömbäck 19 Git Feature Branch feature-c C1 C2 C3 master C0. M1 F1 F2 F3 feature-f

TDP005 Filip Strömbäck 19 Git Feature Branch feature-c C1 C2 C3 master C0. M1 F1 F2 F3 feature-f Merge Request

TDP005 Filip Strömbäck 19 Git Feature Branch feature-c C1 C2 C3 master C0. M1 M2 F1 F2 F3 feature-f

TDP005 Filip Strömbäck 20 Git Feature Branch Samarbete/backup på ej klara funktionalitet Tydligt var kodgranskning görs master fungerar alltid Continuous Integration Lite mer arbete än tidigare Risk för att funktionalitet tappas bort Risk för stora merges lite funktionalitet i taget

TDP005 Filip Strömbäck 21 Git Gitflow master v0.1 C0. C1

TDP005 Filip Strömbäck 21 Git Gitflow master v0.1 C0. C1 D0 D2 D1 develop feature

TDP005 Filip Strömbäck 21 Git Gitflow master v0.1 C0. C1 release-0.2 D0 D2 D1 develop feature

TDP005 Filip Strömbäck 21 Git Gitflow master v0.1 C0. C1 R0 R1 release-0.2 D0 D2 D1 develop feature

TDP005 Filip Strömbäck 21 Git Gitflow master v0.1 C0. C1 R0 R1 release-0.2 D0 D2 D3 D1 develop feature

TDP005 Filip Strömbäck 21 Git Gitflow v0.1 master v0.2 C0. C1 C2 R0 R1 release-0.2 D0 D2 D3 D1 develop feature

TDP005 Filip Strömbäck 21 Git Gitflow v0.1 master v0.2 C0. C1 C2 R0 R1 release-0.2 D0 D2 D3 D4 D1 develop feature

TDP005 Filip Strömbäck 22 Git Gitflow Release kan testas och färdigställas parallellt med utveckling av ny funktionalitet master visar tydligt alla versioner Enkelt och tydligt att göra hotfix Ännu mer att hålla reda på, namngivning är viktig!

TDP005 Filip Strömbäck 23 Git Integration-Manager (Forks) Fork A Officiellt. repo Ägare

TDP005 Filip Strömbäck 23 Git Integration-Manager (Forks) Fork A Officiellt. repo Fork B Ägare

TDP005 Filip Strömbäck 23 Git Integration-Manager (Forks) Fork A Officiellt. repo Fork B Ägare

TDP005 Filip Strömbäck 23 Git Integration-Manager (Forks) Fork A Officiellt. repo Fork B Ägare Pull Request

TDP005 Filip Strömbäck 23 Git Integration-Manager (Forks) Fork A Officiellt. repo Fork B Ägare Pull Request

TDP005 Filip Strömbäck 24 Git Integration-Manager (Forks). Ägaren har full kontroll på vad som kommer med Pull Requests ger tydlig diskussion och genomgång av ändringar Officiellt repo innehåller få skräpgrenar Alla kommer åt sina ändringar var som helst ifrån Enkelt att tappa bort ändringar Enkelt att hamna efter officiellt repo Onödigt med flera kopior av projektet? Lite krångligare att komma igång

TDP005 Filip Strömbäck 25 Git Dictator and Lieutenants Dictator. Officiellt repo Lieutenant Lieutenant

TDP005 Filip Strömbäck 25 Git Dictator and Lieutenants Dictator. Officiellt repo Lieutenant Lieutenant

TDP005 Filip Strömbäck 25 Git Dictator and Lieutenants Dictator. Officiellt repo Lieutenant Lieutenant

TDP005 Filip Strömbäck 26 Git Dictator and Lieutenants Bra för väldigt stora projekt (Linux) Enskild ägare behöver inte kontrollera allt Lång process att få ändringar accepterade Många personer inblandade

Filip Strömbäck www.liu.se