Git - Rozproszony System Kontroli Wersjistudents.mimuw.edu.pl/SR/SR-MONO/git.pdf · Wst¦p Specy...
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