Programowanie w jezykach skryptowych - Python i Linux...

Click here to load reader

  • date post

    27-Feb-2019
  • Category

    Documents

  • view

    219
  • download

    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