Upload
webelement
View
1.321
Download
2
Embed Size (px)
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