WebElement #20: Ondrej Svitek - Hacking Life With Git

Preview:

Citation preview

WebElement #20

Hacking Life With GIT

Upravená verzia

GIT partizán

TFS Server

GIT <-> TFS

GIT

TFS Client TFS Client

Land of unicorns

WTF Servers

Scenáre

• GIT <-> * synchronizácia

• rýchly prenos zdrojákov

• configuration management

• database management

• transformácia dát

• hľadanie chýb

GIT <-> * synchronizácia

Version Control System

GIT

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

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

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

Configuration Management

Ignored changes

Server versioned changes (shared)

Locally versioned changes (non-shared)

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

Configuration Management (2)

git cherry-pick

Nová feature vetva

Configuration Management (3)

Príprava na push do remote vetvy

git cherry-pick resp.

git rebase -i

všetky commity okrem IGNORE

Configuration Management (4)

git push git rebase

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

DB management

Database

Script DDL

Script data GIT

Diff

Grep

DB management (2)

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

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

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

Transformácia dát (2)

Zmena kódu

Zmena dát

Transformácia dát (3)

Zmena kódu

Zmena dát

Transformácia dát (4)

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

Squash!

Hľadanie chýb

Scenár: dlho neodhalená regresná chyba

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

Hľadanie chýb (2)

dlhá doba

regresná chyba

OK

chceme nájsť

Hľadanie chýb (3)

chyba niekde tu

Hľadanie chýb (4)

chyba niekde tu

Hľadanie chýb (5)

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

Automatizácia:

• git bisect

Recommended