Programowanie w jezykach skryptowych - Python i Linux...
date post
27-Feb-2019Category
Documents
view
219download
1
Embed Size (px)
Transcript of Programowanie w jezykach skryptowych - Python i Linux...
Programowanie w jezykachskryptowych - Python i Linux Bash
Maciej Wielgosz
Wydzia Informatyki, Elektroniki i Telekomunikacji
2015, semestr zimowy
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 1 / 138
Czesc II
Git
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 2 / 138
Git
1 Systemy kontroli wersji2 Systemy scentralizowane a
rozproszone3 Git jako system lokalny
InicjalizacjaStany plikwZapis stanuHistoriaPraca z branchami
4 Git jako system rozproszony
Zdalne repozytoriumPodstawowa synchronizacjaModel pracy oparty o wielerepozytoriw
5 Inne mozliwosciIgnorowanie plikwKonfiguracjaWiecej o komendach iopcjachDodatkowa dokumentacja
6 Organizacja pracy
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 3 / 138
VCS
System kontroli wersji (ang. Version Control System)Program suzacy do sledzenia zmian w kodzie/dokumencie zrdowymoraz uatwiajacy aczenie modyfikacji pochodzacych z wielu zrde.
Obecnie VCS stay sie standardem przy pracy nad rznego typuprojektami informatycznymi, ale za VCS mozna uznac takze np.sledzenie zmian w systemach typu Wiki czy pakietach biurowych.
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 4 / 138
Dlaczego warto uzywac VCS?
Do najwazniejszych zalet VCS mozna zaliczyc:
z proste przegladanie i przywracanie poprzednich wersji plikw,z atwosc synchronizacji zrde pomiedzy rznymi maszynami i
czonkami zespou,z mozliwosc rozwijania projektu w wielu kierunkach jednoczesnie
(np. naprawianie bedw z ostatniej wersji przy rwnoczesnejpracy nad nowa funkcjonalnoscia),
z opcje integracji z automatycznymi narzedziami do np. testowaniaczy deploymentu.
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 5 / 138
Popularne systemy
W chwili obecnej najczesciej mozna spotkac sie z nastepujacymisystemami:
z Apache Subversion (SVN) stworzony w roku 2000 jako (wwiekszosci kompatybilny) nastepca Concurrent Version System(CVS),
z Mercurial (Hg) pojawi sie w roku 2005; jego zamierzonympierwotnym zastosowaniem bya praca nad rozwojem jadraLinuksa, jednak w tym celu ostatecznie wybrano Git,
z Git stworzony kilka dni przed Mercurialem i w tym samym celu;obecnie prawdopodobnie najpopularniejszy system kontroli wersji.
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 6 / 138
Git
1 Systemy kontroli wersji2 Systemy scentralizowane a
rozproszone3 Git jako system lokalny
InicjalizacjaStany plikwZapis stanuHistoriaPraca z branchami
4 Git jako system rozproszony
Zdalne repozytoriumPodstawowa synchronizacjaModel pracy oparty o wielerepozytoriw
5 Inne mozliwosciIgnorowanie plikwKonfiguracjaWiecej o komendach iopcjachDodatkowa dokumentacja
6 Organizacja pracy
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 7 / 138
Systemy lokalne
z Proste bazy danych, ktra przechowuja wszystkie zmiany wplikach jako kolejne wersje,
z jednym z pierwszych systemw tego typu by RCS (RevisionControl System),
z systemy te dziaaja na zasadzie przechowywania rznic pomiedzyplikami tzw. patchy,
z mozna odtworzyc jak plik wyglada w dowolnym momencie czasupoprzez zsumowanie wszystkich patchy.
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 8 / 138
Systemy scentralizowane
z Systemy scentralizowane powstay z potrzeby wspdzieleniakodu pomiedzy rznymi developerami i maszynami,
z oparte sa na idei gwnego serwera przechowujacego caahistorie i dowolnej ilosci klientw, ktrzy kopiuja z centralnegoserwera pliki,
z jednym z najpopularniejszych przykadw takich systemw jestApache Subversion (SVN),
z przez wiele lat systemy scentralizowane byy standardem wobszarze kontroli wersji.
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 9 / 138
Zalety i wady systemw scentralizowanych
Zalety (w stosunku do systemw lokalnych):
z kazdy do pewnego stopnia orientuje sie, co robia inni czonkowiezespou,
z szczegowa kontrola uprawnien uzytkownikw,z atwiejsze zarzadzanie (atwiej zarzadzac jednym repozytorium niz
wieloma lokalnymi).
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 10 / 138
Zalety i wady systemw scentralizowanych
Wady:
z niedostepnosc centralnego repozytorium powoduje paraliz pracycaego zespou, ze wzgledu na brak komunikacji z baza danych,
z awaria centralnego serwera powoduje utrate caej historii pracy(chyba ze byy tworzone kopie zapasowe).
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 11 / 138
Systemy rozproszone
Zasada dziaaniaSystemy rozproszone przechowuja lokalnie caa historie zmian, copozwala uzytkownikowi na prace niezaleznie od dostepnosci innychwezw.
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 12 / 138
Zalety systemw rozproszonych
Zalety:
z kazda kopia repozytorium suzy jednoczesnie jako kompletnerepozytorium,
z istnieje mozliwosc uzywania kilku zdalnych (centralnych)serwerw,
z taka architektura umozliwia stosowanie wielu modeli organizacjipracy,
z obecnie najpopularniejszym przykadem systemu rozproszonegojest git.
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 13 / 138
Podsumowanie
Systemy scentralizowane sa tworzone z zaozeniem, ze istnieje jednowasciwe (absolutne) zrdo.
Systemy rozproszone:
z zostay stworzone z zaozeniem, ze kazde repozytorium jest taksamo dobre jak inne,
z dzielenie i scalanie repozytoriw jest po prostu forma komunikacji,z decyzja o znaczeniu danego repozytorium jest podejmowania
indywidualnie i nie jest kontrolowana przez oprogramowanie.
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 14 / 138
Git
1 Systemy kontroli wersji2 Systemy scentralizowane a
rozproszone3 Git jako system lokalny
InicjalizacjaStany plikwZapis stanuHistoriaPraca z branchami
4 Git jako system rozproszony
Zdalne repozytoriumPodstawowa synchronizacjaModel pracy oparty o wielerepozytoriw
5 Inne mozliwosciIgnorowanie plikwKonfiguracjaWiecej o komendach iopcjachDodatkowa dokumentacja
6 Organizacja pracy
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 15 / 138
Git jako system lokalny
Gwna zaleta systemw rozproszonych jest ich autonomicznosc:
z aby z nich korzystac, nie jest potrzebny zaden serwer,z w podstawowej wersji wszystko moze odbywac sie tak, jak przy
stosowaniu najprostszego lokalnego systemu.
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 16 / 138
Git CLI
Program git dziaa na zasadzie komend (podprogramw), z ktrychniemal kazda ma odrebny zestaw argumentw.
Liste wsplnych opcji oraz najczesciej uzywanych komend moznazobaczyc wpisujac:
$ git --help
Szczegowe opcje poszczeglnych komend mozna zobaczycuzywajac:
$ git --help
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 17 / 138
Git jako system lokalny
InicjalizacjaStany plikw
Zapis stanuHistoriaPraca z branchami
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 18 / 138
Nowe repozytorium
Zaozenie nowego, lokalnego repozytorium w wybranym katalogu(moga wczesniej istniec w nim jakies pliki; w przykadach uzywanybedzie katalog acai):
$ cd acai$ git initInitialized empty Git repository in
/[...]/acai/.git/
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 19 / 138
Dodanie istniejacych plikw
Stworzone w ten sposb repozytorium nie sledzi jeszcze zadnychzmian w plikach. Aby rozpoczac kontrolowanie wersji dla juzistniejacych w katalogu plikw nalezy wydac dwa polecenia. Pierwszez nich to:
$ git add .
Powoduje ono dodanie do kontroli wersji wszystkich plikw zbiezacego (.) katalogu. Co dokadnie zostao dodane moznasprawdzic wydajac polecenie git status.
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 20 / 138
Dodanie istniejacych plikw
$ git statusOn branch master
Initial commit
Changes to be committed:(use "git rm --cached ..." to unstage)
new file: .gitignorenew file: LICENSE.txtnew file: README.md...
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 21 / 138
Pierwszy commit
Druga komenda instruuje gita, aby zapamieta ten punkt w historii. Wwersji podstawowej wyglada ono tak:
$ git commit
Po wykonaniu polecenia otwierany jest domyslnie skonfigurowanyedytor tekstowy w ktrym nalezy podac opis wasnie tworzonegopunktu.
Standardowo opis ten musi zostac dodany w przeciwnym razietworzenie punktu zostanie anulowane.
M. Wielgosz (AGH - IET) Programowanie w jezykach skryptowych - Python i Linux Bash 2015 22 / 138
Pierwszy commit
Czesto opis (wiadomosc, ang. message) podaje sie bezposrednio zlinii polecen:
$ git commit -m "Project skeleton"[master (root-commit) 6048090] Project skeleton19 files