Git - Rozproszony System Kontroli Wersjistudents.mimuw.edu.pl/SR/SR-MONO/git.pdf · Wst¦p Specy...

39

Transcript of Git - Rozproszony System Kontroli Wersjistudents.mimuw.edu.pl/SR/SR-MONO/git.pdf · Wst¦p Specy...

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Git - Rozproszony System Kontroli Wersji

Bartosz Borkowski

Systemy Rozproszone

29 pa¹dziernika 2009

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

HistoriaPowstawanie Git'a

Agenda

Historia

Specy�kacja

Implementacja

Bª¦dy i niedoci¡gni¦cia

Podsumowanie

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

HistoriaPowstawanie Git'a

Sªownik

Git

push

pull

clone

SVN

commit

update

checkout

Wspólne poj¦cia

branch

merge

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

HistoriaPowstawanie Git'a

Historia

1972 - SCCS

1980s - RCS

1990 - CVS

2000 - SVN i BitKeeper

2005 - Git i Mercurial

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

HistoriaPowstawanie Git'a

Twórcy

Linus Torvalds

Pomysªodawca

Junio Hamano

Obecny zarz¡dca

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

HistoriaPowstawanie Git'a

Uzasadnienie biznesowe

Zmiana polityki BitMover

Nikt nie chciaª powraca¢ do tarball'i i patch'ów

Brak dost¦pnych rozwi¡za«:

rozproszonych

niezawodnych

wydajnych

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

HistoriaPowstawanie Git'a

Inspiracja

Tarball'e i patch'e

BitKeeper jako przykªad pozytywny

CVS jako przykªad negatywny

�WWCVSND� - What Would CVS Not Do?

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

Branching

Szybki i ªatwy w stworzeniu

Tani w utrzymaniu

Lokalny

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

Prawa do commit'owania

Problem

Ludzie s¡:

nierzetelni

roztrzepani

zªo±liwi

niekompetentni

Jak ograniczy¢ dost¦p takich ludzi do repozytorium?

Rozwi¡zanie

Wprowadzi¢ mnóstwo ogranicze« i zªej atmosfery do projektu.

Przej±¢ na model rozproszony.

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

Sie¢ zaufania

http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

Wpªyw na zarz¡dzanie

Uproszczenie przestrzeni nazw

Synchronizacja pracy

Uªatwienie pracy wewn¡trz zespoªów

Delegowanie pracy

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

Wydajno±¢

SVN

Tworzenie nowych gaª¦zi w czasie O(1)

Nowa gaª¡¹ pocz¡tkowo nie zmienia rozmiaru repozytorium

Utrzymanie gaª¦zi w zamortyzowanym czasie staªym

Git

Utworzenie gaª¦zi to stworzenie 41 bajtowego pliku

Utrzymanie gaª¦zi podobne do rozwi¡za« z SVN

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

Scalanie w SVN

Rozwi¡zanie

Stwórz di� z dwóch gaª¦zi

Zaaplikuj zmiany do jednej z nich

Wprowad¹ zmienion¡ gaª¡¹ do repozytorium jako jeden commit

Problemy

U»ytkownik musi

planowa¢ z tygodniowym wyprzedzeniem

zarezerwowa¢ na operacj¦ jeden dzie«

po»egna¢ si¦ z histori¡ zmian

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

Scalanie w Git

Rozwi¡zanie

Znajd¹ wspólny w¦zeª w historii

Scal od tego w¦zªa

Wprowad¹ do repozytorium nowy w¦zeª z dwoma rodzicami

Stwórz plik di� stat

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

Wydajno±¢

Ró»nica jako±ciowa

Podczas prac nad j¡drem Linuksa osi¡gni¦to ±rednio 4.5scalenia na dzie«

Jedno scalenie trwaªo ok. 3 sekund

Zmiana mentalno±ci

Robi¡c gaª¦zie i scalenia cz¦±ciej, dziaªaj¡c na mniejszychfragmentach kodu, unikamy bardzo powa»nych problemów.

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

�ledzenie zawarto±ci

Kolekcja

Git ±ledzi kolekcj¦ plików, a nie pojedyncze pliki

Konsekwencje

Du»e repozytoria b¦d¡ dziaªa¢ wolno

Rozwi¡zanie

Repozytorium zawieraj¡ce wska¹niki do repozytoriów.

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

Wydajno±¢

Porównanie wielko±ci repozytorium dla projektu KDE

CVS: ∼4GBSVN: ∼12GBGit: ∼1.5GB

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

SHA1

Jest funkcj¡ skrótu

Opracowany w 1995 przez NSA i NIST

Zast¡piª SHA0

Zast¡piony przez rodzin¦ SHA2

Byª cz¦±ci¡ DSA

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

BranchingMergingZawarto±¢ a plikiBezpiecze«stwo

SHA1 a Git

Git liczy sumy kontrolne dla danych

Git sprawdza sumy kontrolne dla danych

SHA1 nie jest mechanizmem bezpiecze«stwa, lecz wery�kacji

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Standardowe rozwi¡zania

Metody wersjonowania

Tekst

Splot

Delty

Delty

Tylko najnowsza wersja przechowywana jest w caªo±ci

Pozostaªe reprezentowane s¡ przez delty wzgl¦dem swoichnast¦pców

Ulepszenia: kombinacje delt i skip-delty

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Rozwi¡zania Git'a

Delty liczone s¡ mi¦dzy wybranymi obiektami

Obiekty wybiera si¦ heurystycznie

Otrzymujemy grafy acykliczne delt zamiast ªa«cucha

Wagami w gra�e s¡ rozmiary delt

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Blob i Tree

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Commit i Ref

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

RemoteRef i Tag

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Szybkie scalanie

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Szybkie scalanie

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Szybkie scalanie

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Scalanie

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Scalanie

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Scalanie

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Przebazowanie

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Przebazowanie

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Archiwum zmianSze±¢ obiektówZarz¡dzanie repozytorium

Przebazowanie

http://eagain.net/articles/git-for-computer-scientists

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

Ograniczenia

Stopie« trudno±ci

Nie ma �najnowszej� wersji

Kªopoty w ±rodowisku Windows

SHA1 przestaje by¢ bezpieczny

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

PodsumowanieBibliogra�a

Podsumowanie

Rozproszony jest lepszy!

Git jest bardzo dobrym narz¦dziem

Jest jednak TYLKO narz¦dziem

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

PodsumowanieBibliogra�a

Dzi¦kuj¦

Dzi¦kuj¦ za uwag¦.

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

PodsumowanieBibliogra�a

Bibiogra�a

Linus Torvalds on Git:http://www.youtube.com/watch?v=4XpnKHJAok8

Git for Computer Scientists:http://eagain.net/articles/git-for-computer-scientists

Intro to Distributed Version Control (Illustrated):http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated

DVCSAnalisis:http://code.google.com/p/support/wiki/DVCSAnalysis

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji

Wst¦pSpecy�kacja

ImplementacjaProblemy modelu rozproszonego

Sªowo ko«cowe

PodsumowanieBibliogra�a

Bibiogra�a

File versioning:http://web.mit.edu/ghudson/thoughts/�le-versioning

SVNBook:http://svnbook.red-bean.com/en/1.1/index.html

Opis algorytmu SHA1:http://e-handel.mm.com.pl/crypto/opis_algorytmu_sha.htm

Cryptoanalisis of SHA1:http://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html

Bartosz Borkowski Git - Rozproszony System Kontroli Wersji