Wykład 11.05 - fuw.edu.pl tkaz/teaching/programowanie2016/ fileCzym są systemy kontroli wersji...

Click here to load reader

  • date post

    02-Mar-2019
  • Category

    Documents

  • view

    212
  • download

    0

Embed Size (px)

Transcript of Wykład 11.05 - fuw.edu.pl tkaz/teaching/programowanie2016/ fileCzym są systemy kontroli wersji...

Wykad 11.05.2016

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

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

Podstawowe komendy:

Git create repository here tworzy nowe repozytorium

Make it bare Tworzy czyste repozytorium (Jak w systemach

scentralizowanych)

Clone - Pobranie lokalnej kopii repozytorium

Pull Zacignicie zmian w repo (razem z merge)

Commit Wrzucenie zmian do lokalnego repo

Push Wypchnicie zmian do repo zdalnego

Resolve Proponuje jedno z kilku rozwiza merge-owania zmian

Revert Przywraca obecn wersj plikw (z repo)

Repo browser Pozwala przeglda repozytorium

Diff Pokazuje rnice midzy konkretnymi wersjami plikw

Merge Pozwala rcznie rozwiza konflikty

Add Dodaje nowy plik do wersjonowania

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

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.

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

Katalog gita (folder .git) Index

Working Directory

checkout

add

commit

Wikszo operacji wykonywanych jest na lokalnym repozytorium.

Schemat prac w GITie

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

Wysanie do zdalnego repozytorium tagw:

> git push -tags

Usunicie taga:

> git tag -d 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