21
WebElement #20 Hacking Life With GIT Upravená verzia

WebElement #20: Ondrej Svitek - Hacking Life With Git

Embed Size (px)

Citation preview

Page 1: WebElement #20: Ondrej Svitek - Hacking Life With Git

WebElement #20

Hacking Life With GIT

Upravená verzia

Page 2: WebElement #20: Ondrej Svitek - Hacking Life With Git

GIT partizán

TFS Server

GIT <-> TFS

GIT

TFS Client TFS Client

Land of unicorns

WTF Servers

Page 3: WebElement #20: Ondrej Svitek - Hacking Life With Git

Scenáre

• GIT <-> * synchronizácia

• rýchly prenos zdrojákov

• configuration management

• database management

• transformácia dát

• hľadanie chýb

Page 4: WebElement #20: Ondrej Svitek - Hacking Life With Git

GIT <-> * synchronizácia

Version Control System

GIT

* (download) git add --all git commit -m

git diff --name-status HEAD^ * (upload)

Page 5: WebElement #20: Ondrej Svitek - Hacking Life With Git

Rýchly prenos zdrojákov

Problém: pomalá sieť + veľa malých súborov

• git gc --aggressive --prune=now

• xcopy .git

• git reset --hard

Page 6: WebElement #20: Ondrej Svitek - Hacking Life With Git

Configuration Management

Ignored changes

Server versioned changes (shared)

Locally versioned changes (non-shared)

Konvencia: „IGNORE“ commity nie sú nikdy pushnuté do remote vetvy

Page 7: WebElement #20: Ondrej Svitek - Hacking Life With Git

Configuration Management (2)

git cherry-pick

Nová feature vetva

Page 8: WebElement #20: Ondrej Svitek - Hacking Life With Git

Configuration Management (3)

Príprava na push do remote vetvy

git cherry-pick resp.

git rebase -i

všetky commity okrem IGNORE

Page 9: WebElement #20: Ondrej Svitek - Hacking Life With Git

Configuration Management (4)

git push git rebase

Výsledok: lokálna vetva stále obsahuje našu konfiguráciu, bez vplyvu na ostatných

Page 10: WebElement #20: Ondrej Svitek - Hacking Life With Git

DB management

Database

Script DDL

Script data GIT

Diff

Grep

Page 11: WebElement #20: Ondrej Svitek - Hacking Life With Git

DB management (2)

Výhoda: zmeny v DDL sa ľahko sledujú

Page 12: WebElement #20: Ondrej Svitek - Hacking Life With Git

DB management (3)

Prax: kombinácia CREATE + ALTER

Iterácia N

Alter Alter

Migrácia

Create

Snapshot

na začiatku iterácie

Iterácia N+1

Alter Alter

Migrácia

Create

Snapshot

na začiatku iterácie

Page 13: WebElement #20: Ondrej Svitek - Hacking Life With Git

Transformácia dát

Scenár: komplikovaná transformácia (textu)

Idea: malé kroky, commitovať zmeny kód + dáta

Kód

Dáta

Transform header

Kód

Dáta

Transform body

Kód

Dáta

Transform footer

Page 14: WebElement #20: Ondrej Svitek - Hacking Life With Git

Transformácia dát (2)

Zmena kódu

Zmena dát

Page 15: WebElement #20: Ondrej Svitek - Hacking Life With Git

Transformácia dát (3)

Zmena kódu

Zmena dát

Page 16: WebElement #20: Ondrej Svitek - Hacking Life With Git

Transformácia dát (4)

Výhody: absolútna kontrola • jednoduchosť • zmeny voči predošlému kroku • zmysluplné „checkpointy“ • ľahké experimentovanie (vetvy)

Squash!

Page 17: WebElement #20: Ondrej Svitek - Hacking Life With Git

Hľadanie chýb

Scenár: dlho neodhalená regresná chyba

Idea: binárne vyhľadávanie v commitoch

Page 18: WebElement #20: Ondrej Svitek - Hacking Life With Git

Hľadanie chýb (2)

dlhá doba

regresná chyba

OK

chceme nájsť

Page 19: WebElement #20: Ondrej Svitek - Hacking Life With Git

Hľadanie chýb (3)

chyba niekde tu

Page 20: WebElement #20: Ondrej Svitek - Hacking Life With Git

Hľadanie chýb (4)

chyba niekde tu

Page 21: WebElement #20: Ondrej Svitek - Hacking Life With Git

Hľadanie chýb (5)

Výsledok: rýchla identifikácia commitu s chybou

Automatizácia:

• git bisect