Wykład 11.05 - fuw.edu.pl tkaz/teaching/programowanie2016/ fileCzym są systemy kontroli wersji...
date post
02-Mar-2019Category
Documents
view
212download
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