SlideShare a Scribd company logo
WebElement #20
Hacking Life With GIT
Upravená verzia
GIT partizán
TFS Server
GIT <-> TFS
GIT
TFS ClientTFS 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

More Related Content

PDF
Marek Lichtner - Používať alebo nepoužívať ORM vo webových aplikáciách?
ODP
Selenium prezentácia pre Webelement
PDF
Lukáš Šabľa - Vim
PDF
Nette framework (WebElement #28)
ODP
ActiveRecord is good enough
PDF
Tomáš Čorej - OpenSSH
PPTX
Ján Kmeťko - NoSQL a distribuované databázy – pohľad zhora na konzistentnosť ...
PDF
WebElement #22: Peter Slivka - Úvod do AWS
Marek Lichtner - Používať alebo nepoužívať ORM vo webových aplikáciách?
Selenium prezentácia pre Webelement
Lukáš Šabľa - Vim
Nette framework (WebElement #28)
ActiveRecord is good enough
Tomáš Čorej - OpenSSH
Ján Kmeťko - NoSQL a distribuované databázy – pohľad zhora na konzistentnosť ...
WebElement #22: Peter Slivka - Úvod do AWS

WebElement #20: Ondrej Svitek - Hacking Life With Git