Programowanie I - fuw.edu.pl tkaz/teaching/programowanie2017/ fileCzym są systemy kontroli wersji...

Click here to load reader

  • date post

    02-Mar-2019
  • Category

    Documents

  • view

    214
  • download

    0

Embed Size (px)

Transcript of Programowanie I - fuw.edu.pl tkaz/teaching/programowanie2017/ fileCzym są systemy kontroli wersji...

Programowanie I

29.05.2017

Co zostanie wypisane na ekranie? (1) class A {

public:

void wypisz(int n) {

cout

Co zostanie wypisane na ekranie? (2) class A {

public:

void wypisz(int n) {

cout

Co zostanie wypisane na ekranie? (3) class A {

public:

virtual void wypisz(int n) {

cout

Na podstawie odpowiednich komentarzy generuje dokumentacj

Standardowo HTML i/lub LaTeX

Szeroka gama wspieranych jzykw

Znaczce komentarze /**

* ... text ...

*/

/*!

* ... text ...

*/

///

/// ... text ...

///

/********************************************//**

* ... text

***********************************************/

i inne

Dokumentujemy

Pliki

Klasy

Funkcje (metody)

Parametry

Zwracane wyniki

Inne

Doxygen: Demonstracja

Czym s systemy kontroli wersji

Praca w zespole

Moliwo powrotu do dowolnego miejsca w historii (rewizja)

Moliwo rwnolegego rozwoju dwch gazi aplikacji

atwo wersjonowania aplikacji

Rnice

Historia

Rwnolegy rozwj

Model Scentralizowany SVN CVS Perforce

Uywana jako miejsce przechowywania kopii zapasowej (Backupu)

Brak prywatnych branchy Do wykonania wikszoci standardowych operacji wymaga

poczenia do serwera.

Modele pracy

Serwer

Komputer

Komputer

Plik Repozytorium

Plik Wersja 1

Wersja 2

Modele pracy c.d.

Serwer

Komputer

Komputer

Plik

Repozytorium

Plik

Repozytorium

Repozytorium

Wersja 1

Wersja 2

Wersja 1

Wersja 2

Wersja 1

Wersja 2

Model Rozproszony

GIT

Mercurial

Bazaar

Moliwo pracy na wielu zdalnych repozytoriach.

Wsparcie dla lokalnych/prywatnych branchy.

Nie potrzebuje dostpu do serwera dla wikszoci operacji

Pena historia zmian dostpna lokalnie.

Subversion

Subversion

Scentralizowany

Prosty w obsudze

ledzi historie zmian pliku

Open-Source

Operacje s atomowe (kocz si cakowicie albo w ogle)

Moliwo blokowania edytowanych plikw

Podstawowe komendy ( na podstawie TortoiseSVN) SVN Checkout pozwala na pobranie kopii repozytorium z sieci Create repository here tworzy nowe repozytorium w danym

miejscu Create folder structure tworzy od razu katalogi tags/branches/trunk Start repobrowser pozwala przeglda aktualne repozytorium

SVN Commit Wrzucenie zmian na serwer SVN Update Pobranie zmian z serwera Revert Przywraca obecny stan lokalnej kopii do stanu z

serwera Merge Otwiera edytor ktry umoliwia czenie plikw

(konflikty) Add Dodaje plik do wersjonowania Resolve Pokazuje pliki w konflikcie i prbuje sam je

rozwiza (zmergeowa) Update to revision pozwala powrci do poprzedniej

rewizji

Git

Rozproszony system kontroli wersji

Lokalne repozytoria

Napisany przez Linusa Torvaldsa (Twrca Linuksa)

Lokalne branche

Bulk Commit

Open Source

Branch - rwnolega ga projektu rozwijana oddzielnie od gwnej.

Tag marker konkretnej wersji (rewizja w SVNie) projektu.

Working Dir katalog roboczy na ktrym pracujemy

Index rodzaj cache, czyli miejsca gdzie trzymane s zmiany do commita

Master Branch gwny branch z ktrym czymy (merge) nasze zmiany przed wysaniem do zdalnego repozytorium.

Kilka sw o terminologii

Katalog gita (folder .git) Index

Working Directory

checkout

add

commit

Wikszo operacji wykonywanych jest na lokalnym repozytorium.

Schemat prac w GITie

1. Przechowywanie zawartoci projektu jako snapshotw.

2. Kompresowanie zawartoci projektu.

Struktura zmian w GITie

Zmiany w czasie

Wersja 1 Wersja 2 Wersja 3 Wersja 4

Plik A A A1 A1

Plik B B B B1

Plik C C1 C1 C2

Commit wskazuje na tree oraz ojca, zawiera przykadowo takie informacje jak autor, data i tre wiadomoci.

Tree reprezentuje stan pojedynczego katalogu (lista obiektw blob oraz zagniedonych obiektw tree)

Blob zawiera zawarto pliku bez adnej dodatkowej struktury

Tag wskazuje na konkretny commit oraz zawiera opis taga.

Obiekty GITa

Obiekty GITa cd.

git init stworzenie nowego repozytorium

git add dodanie zawartoci pliku do Indexu

git rm usuwa plik z indexu

(plik zniknie z working directory po commitie)

git mv przenosi plik

git status pokazuje status katalogu roboczego i poczekalni

git config pobiera i ustawia opcje globalne GITa lub tylko repozytorium

Podstawowe operacje

Przykadowymi operacjami zdalnymi s:

git clone pobiera zdalne repozytorium do podanego folderu

git fetch pobiera obiekty i wskaniki z innego repozytorium

git pull pobiera i integruje obiekty i wskaniki z innego repozytorium

git push aktualizuje zdalne repozytorium o wskaniki i powizane obiekty.

Operacje zdalne

git commit zapisuje zmiany do repozytorium lokalnego

git log wywietla logi z commitw

git show wywietla obiekt

git fetch pobiera zmiany z repozytorium zdalnego

git pull wywouje polecenia fetch i merge

git push wysya zmiany do zdalnego repozytorium

Podstawowe operacje cd.

git branch do zarzdzania branchami

git checkout przeczanie si midzy branchami

git merge czy podane branche

git rebase zmienia punkt startu dla brancha

git reset przywraca stan katalogu roboczego

git stash zapisuje/odczytuje zmiany z przestrzeni tymczasowej (rodzaj schowka)

git gc porzdkowanie i optymalizacja repozytorium

Podstawowe operacje cd.

Stworzenie zdalnego repozytorium :

> git init

Dodanie nowych plikw:

> git add .

> git add readme.txt

Struktura projektu. (Plik .git/config)

> git config

Prezentacja wykorzystania

Pierwszy commit:

> git commit -m "Tre wiadomoci"

Historia :

> git log

Prezentacja wykorzystania cd.

Stworzenie taga:

> git tag v1.00

> git tag v2.00 -m Wersja druga

Wypisanie tagw:

> git tag

Wywietlenie taga:

> git show v2.00

Prezentacja wykorzystania

Tworzenie brancha:

> git branch myBranch

Wywietlenie branchy:

> git branch

Przeczanie branchy:

> git checkout myBranch

Usuwanie brancha:

> git branch d myBranch

Prezentacja wykorzystania

czenie (merge) branchy:

> git merge branchName

W przypadku konfliktw po poprawkach w atwy sposb mona kontynuowa prac:

>git commit -a -m Merge branchy

Prezentacja wykorzystania

Historia zmian:

> git log

> git log --after=22.06.2014.19:20

> git log

Wyszukiwanie odpowiedzialnej osoby:

> git blame

> git blame L 12,3

Prezentacja wykorzystania