Presentation is loading. Please wait.

Presentation is loading. Please wait.

Jakub Šimko jakub.simko@stuba.sk Metódy inžinierskej práce Prednáška 7: Verziovanie zdrojových kódov (Git) Jakub Šimko jakub.simko@stuba.sk.

Similar presentations


Presentation on theme: "Jakub Šimko jakub.simko@stuba.sk Metódy inžinierskej práce Prednáška 7: Verziovanie zdrojových kódov (Git) Jakub Šimko jakub.simko@stuba.sk."— Presentation transcript:

1 Jakub Šimko jakub.simko@stuba.sk
Metódy inžinierskej práce Prednáška 7: Verziovanie zdrojových kódov (Git) Jakub Šimko

2 Organizačne k predmetu:
Striedanie cvičení bude pokračovať ako keby nebola týždeň pauza... Teda týždeň po „prázdninách“ prídu na cvičenie študenti NEPÁRNYCH TÝŽDŇOV Ešte inak: medzi ostatným a nasledujúcim cvičením bude mať každý 3 týždne.

3 Dnes 17:45 – pokec s prodekanmi

4 Zo spätnej väzby Prečo v študijnom programe Internetové technológie nie je predmet Umelá inteligencia. -- iný profil absolventa -- UI je skôr prehľadový predmet Aké možnosti zamerania sa na špecifickú oblasť ponúka fakulta, aby som sa nemusela venovať iným predmetom, ku ktorým nemám vzťah Prečo sa vyhýbam oblasti bezpečnosti? Dalo by sa vytvoriť nejaký test, ktorý by overil znalosti z gitu a keď by sme ním úspešne prešli, nemuseli by sme robiť zadanie GIT refaktoring? bit.ly/mip-dotaznik

5 Zo spätnej väzby Z prednášky mi vychádza to, že kódenie/programovanie je len malá časť z toho byť informatikom. Keď je človek skvelý programátor, neznamená to, že je skvelý informatik, domnievam sa správne? Vychádza to z toho, že kódenie tvorí iba malú časť z tých "skillov" a byť informatikom hlavne znamená myslieť ako informatik? bit.ly/mip-dotaznik

6 Zo spätnej väzby Viaceré argumenty v prospech nahrávania prednášok Chápem, že čakáte od nás trocha samostatnosti a že poskytovanie nadmerného množstva informácii sa považuje za vedenie za ručičky, ale prečo sa považuje poskytovanie informácii, ktoré by NEBOLI nové informácie, a ktorých zopakovanie/(osvojenie) by záviselo len na jednotlivcoch, za vedenie za ručičky? Z môjho pohľadu prednášky dávajú veľmi málo (10%), cvičenia(40%) a samoštúdium zvyšných 50%. Tým, že by sa prednášky nahrávali a existovala by možnosť si ich spätne pozrieť, pozastaviť a urobiť si rekapituláciu by sa percentá "boostli" na optimistických 30%. prečo na top školách (Harvard, MIT,...) bežne prednášky nahrávajú a sprístupňujú bit.ly/mip-dotaznik

7 Zo spätnej väzby V celku dosť pozitívnych ohlasov na Jaroslava Dušeka -- tlak byť úspešná/ý Viaceré podnety na tému prednášky o histórii (keep it up) Nebolo by logickejšie dať dotazník o stave štúdia vyšším ročníkom? (vedia dať lepšie spätnú väzbu) bit.ly/mip-dotaznik

8 Zo spätnej väzby Github študentský balík bit.ly/mip-dotaznik

9 Appka týždňa SoloLearn (navrhli dvaja z vás) bit.ly/mip-dotaznik

10 ktorý uchováva verzie zdrojových kódov
Source control je softvér, ktorý uchováva verzie zdrojových kódov vo vzdialenom a zdieľateľnom úložisku Hovorí vám niečo tento pojem? Prípadne tieto názvy? Príklady: Git, Mercurial, SVN, Bazaar, ... bit.ly/mip-dotaznik

11 Source control používame kvôli:
Zálohovanie vašej práce Prístup k predchádzajúcim verziám (neoceniteľné ak spravíte chyby) Paralelná práca viacerých programátorov (viete oddeliť prácu pomocou vetvenia) (viete, čo kto spravil) Riadenie tvorby softvéru (väzba kódu na úlohy) (podpora nasadzovania softvéru – prostredia) Pointa: nebavíme sa o krátkych programčekoch bit.ly/mip-dotaznik

12 Ideme sa baviť o Gite Naozaj hocikedy ma zastavte, spýtajte sa. Zopakujem...

13 Git je program, ktorý ovládate cez konzolu (a.k.a príkazový riadok)
Grafické nadstavby existujú. Ale nepoužívajte ich kým veciam neporozumiete!

14 Je výhodné používať Git v rámci Github, Bitbucket či ďalších portálov
Viac „vizuálnej podpory“ Ďalšie nástroje na organizáciu vašej práce Prístup k obrovskému množstvu projektov druhých bit.ly/mip-dotaznik

15 Bežný scenár pri práci s Gitom má 2 kroky:
1. Urobím nejakú zmenu v kóde Napr.: pridám vypisovanie chýb A uložím súbor Uchovám si verziu. Zadám do konzoly: git commit –a –m “added error logging”

16 Výrazom „commit“ sa v bežnom IT slangu označuje viacero vecí
akt odovzdania verzie „Počkajte, idem s vami na obed, len to ešte komitnem“ verzia ako taká „Tú premennú som definoval v komite zo štvrtka.“ príkaz na odovzdanie verzie ako taký git commit –a –m “opis zmeny” commit = odovzdanie = check-in bit.ly/mip-dotaznik

17 Bežný scenár pri práci s Gitom má 2 kroky:
1. Urobím nejakú zmenu v kóde Napr.: pridám vypisovanie chýb 2. Uchovám si verziu. Zadám do konzoly: git commit –a –m “error logging added” Samozrejme, viaceré veci sa museli stať predtým

18 Na úplnom začiatku treba inicializovať repozitár
Zadám do konzoly: git init (Toto spravím v adresári, kde mám svoj kód) repozitár (repository) = úložisko

19 Každý nový súbor treba explicitne pridať aj do Gitu
1. Pridám nový súbor Napr.: mám nový súbor foo.c 2. Poviem Gitu, aby tento nový súbor sledoval Zadám do konzoly: git add foo.c 3. Uchovám si verziu. git commit –m “math helpers added”

20 Potrebujete účet na GitHub
Skúsme to v živej konzole init add commit status log rm –cached rm checkout <file> push Potrebujete účet na GitHub Keď veci skúšate prvý krát, postretne vás pár maličkostí...

21 Mimochodom... Namiesto dvojice príkazov git add [súbor] git commit –m “opis zmeny” Často stačí použiť git commit –a –m “opis zmeny” (zafunguje v prípade, že sme súbor aspoň raz pomocou git add pridali) bit.ly/mip-dotaznik

22 Pauzu?

23 Čo sa v tom Gite vlastne deje?

24

25 Git: ešte raz to isté, ale inak  (fakt chcem aby bol váš knowledge gain čo najvačší)
bit.ly/mip-dotaznik

26 Pracovný adresár foo.c bit.ly/mip-dotaznik

27 Pracovný adresár float whatever(float a) { } foo.c bit.ly/mip-dotaznik

28 Pracovný adresár foo.c float whatever(float a) { float b; b = a * 10;
} foo.c bit.ly/mip-dotaznik

29 Pracovný adresár foo.c float whatever(float a) { float b; b = a * 10;
b = sqrt(b); return b; } foo.c bit.ly/mip-dotaznik

30 Pracovný adresár foo.c float whatever(float a) { float b; b = a * 10;
b = b * b; return b; } foo.c bit.ly/mip-dotaznik

31 Pracovný adresár foo.c float whatever(float a) { float b; b = a * 10;
b = b * b; printf(“Woo hoo”); return b; } foo.c bit.ly/mip-dotaznik

32 Takýto postup asi nie je dobrý
Neviem sa spätne dostať k zmenám Nie som chránený voči strate kódu Nemám prostriedky efektívne svoj kód integrovať s inými ľuďmi bit.ly/mip-dotaznik

33 Vytvorenie nového lokálneho úložiska
Pracovný adresár Lokálne úložisko verzií git init Vytvorenie nového lokálneho úložiska float whatever(float a) { float b; b = a * 10; b = sqrt(b); return b; } foo.c

34 Pridanie súboru foo.c „do sledovania“
Pracovný adresár Lokálne úložisko verzií git add foo.c Pridanie súboru foo.c „do sledovania“ float whatever(float a) { float b; b = a * 10; b = sqrt(b); return b; } foo.c staged indexed

35 “Lorem ipsum dolor sit”
Pracovný adresár Lokálne úložisko verzií git commit –m “Lorem ipsum dolor sit” Odovzdanie snímky (snapshot) „sledovaných“ súborov float whatever(float a) { float b; b = a * 10; b = sqrt(b); return b; } foo.c float whatever(float a) { float b; b = a * 10; b = sqrt(b); return b; } foo.c 1 Lorem ipsum dolor sit staged indexed

36 Zmeny v súbore foo.c Pracovný adresár Lokálne úložisko verzií
float whatever(float a) { float b; b = a * 10; b = b – a; b = b * b; return b; } foo.c float whatever(float a) { float b; b = a * 10; b = sqrt(b); return b; } foo.c 1 Lorem ipsum dolor sit indexed Zmeny v súbore foo.c

37 “sed do eiusmod tempor”
Pracovný adresár Lokálne úložisko verzií git add foo.c git commit –m “sed do eiusmod tempor” float whatever(float a) { float b; b = a * 10; b = b – a; b = b * b; return b; } foo.c float whatever(float a) { float b; b = a * 10; b = sqrt(b); return b; } foo.c 1 Lorem ipsum dolor sit float whatever(float a) { float b; b = a * 10; b = b – a; b = b * b; return b; } foo.c 2 Sed do eiusmod tempor staged indexed Odovzdanie ďalšej verzie

38 Lokálne úložisko verzií
Pracovný adresár Lokálne úložisko verzií float whatever(float a) { float b; b = a * 10; b = sqrt(b); return b; } foo.c 1 Lorem ipsum dolor sit float whatever(float a) { float b; b = a * 10; b = b – a; b = b * b; return b; } foo.c float whatever(float a) { float b; b = a * 10; b = b – a; b = b * b; return b; } foo.c 2 Sed do eiusmod tempor indexed

39 Analogicky odovzdávame ďalšie verzie
Pracovný adresár Lokálne úložisko verzií float whatever(float a) { float b; b = a * 10; b = sqrt(b); return b; } foo.c 1 Lorem ipsum dolor sit float whatever(float a) { float b; b = a * 10; b = b – a; b = b * b; return b; } foo.c 2 Sed do eiusmod tempor float whatever(float a) { float X; X = a * 10; X = X – a; X = X * X; return b; } foo.c float whatever(float a) { float X; X = a * 10; X = X – a; X = X * X; return b; } foo.c 3 beatae vitae dicta indexed Analogicky odovzdávame ďalšie verzie

40 Lokálne úložisko verzií
Pracovný adresár Lokálne úložisko verzií float whatever(float a) { float b; b = a * 10; b = sqrt(b); return b; } foo.c 1 Lorem ipsum dolor sit float whatever(float a) { float b; b = a * 10; b = b – a; b = b * b; return b; } foo.c 2 Sed do eiusmod tempor float whatever(float a) { float X; X = a * 10; X = X – a; X = X * X; return b; } foo.c float whatever(float a) { float X; X = a * 10; X = X – a; X = X * X; return b; } foo.c 3 beatae vitae dicta indexed

41 Aby sa nám to zmestilo na slajd
Pracovný adresár Lokálne úložisko verzií 1 foo.c foo.c indexed 2 foo.c 3 foo.c Aby sa nám to zmestilo na slajd

42 Verziovať môžeme naraz viacero súborov
Pracovný adresár Lokálne úložisko verzií git add foo.c git add bar.c git commit –m “” 1 foo.c bar.c zmeníme súbory foo.c idx stg git commit –m “” Nestane sa nič :-) bar.c idx stg git add foo.c git commit –m “” baz.c 2 foo.c zmeníme súbory fred.c git add quux.c quux.c idx stg git commit –m “” quux.c 3 zmeníme súbory git commit –a –m “” 4 foo.c bar.c quux.c Verziovať môžeme naraz viacero súborov (ale nemusíme vždy „komitnúť“ všetky)

43 Aktuálny stav pracovného adresára
Pracovný adresár Lokálne úložisko verzií 1 2 3 4 2 foo.c 1 bar.c 4 quux.c 3 foo.c bar.c baz.c fred.c quux.c Aktuálny stav pracovného adresára Uvažujme už odteraz jednotlivé verzie ako skupiny zmien viacerých súborov

44 Často potrebujeme pracovať na veciach paralelne
Pracovný adresár Lokálne úložisko verzií git branch nova_funkcia /programujeme novu funkciu/ git commit –a –m “” /zistime chybu/ git checkout master git branch oprava_chyby /opravujeme chybu/ git merge oprava_chyby git checkout nova_funkcia git merge nova_funkcia git branch –d nova_funkcia git branch –d oprava_chyby Vetva master Vetva nová funkcia Vetva oprava chyby Často potrebujeme pracovať na veciach paralelne

45 Vetvenie vám umožní paralelnú prácu a zavádza poriadok vo verziách
bit.ly/mip-dotaznik

46 Aktuálny stav pracovného adresára
Pracovný adresár git commit Lokálne úložisko verzií Aktuálny stav pracovného adresára

47 Aktuálny stav pracovného adresára
Pracovný adresár git commit Lokálne úložisko verzií Vzdialené úložisko git push Aktuálny stav pracovného adresára git pull

48 push vlastne znamená aktualizovať vzdialené úložisko z vlastného lokálneho úložiska
Štandardne sa aktualizuje jedna vetva git push [adresa vzdialeného repozitára][branch] Napríklad git push master Adresa úložiska sa často nahradzuje aliasom git push origin master Môžete aktualizovať všetky vetvy naraz git push –all origin bit.ly/mip-dotaznik

49 fetch alebo pull: zo vzdialeného do lokálneho
Stiahnutie nových zmien zo vzdialeného úložiska git fetch Stiahnutie nových zmien + aktualizovanie pracovného adresára git pull bit.ly/mip-dotaznik

50 Tento obrázok už by mal byť jasnejší
(ale iste nie kompletne jasný)

51 A chápať by ste tiež mali tento vtip
bit.ly/mip-dotaznik

52 Git antipatterns One big commit Žiadne reálne verziovanie, len pridávanie nových súborov Vkladanie generovaných súborov Vkladanie binárnych súborov Vkladanie archívov zip a rar (sic!) Upload súborov cez web (sic!!!) bit.ly/mip-dotaznik

53 bit.ly/mip-dotaznik Git antipatterns bit.ly/mip-dotaznik

54 Rada na záver: Nezahrávajte sa so silou!

55 Keď pôjdete von, prediskutujte...
Čomu sa venuješ? Civiem do mobilu (krátka esej Tomáša Uleja o tom, koľko krát za deň nechávame vyrušiť) Odomknutý článok bit.ly/mip-dotaznik


Download ppt "Jakub Šimko jakub.simko@stuba.sk Metódy inžinierskej práce Prednáška 7: Verziovanie zdrojových kódov (Git) Jakub Šimko jakub.simko@stuba.sk."

Similar presentations


Ads by Google