Slide 1

Slide 1 text

Git iznutra Boško Pešić [email protected]

Slide 2

Slide 2 text

Teme o kojima ćemo pričati ● Grane u Git-u ○ Optimizacija zauzeća diska na GitHub++ ● Struktura podataka, ili kako Git čuva izmene ○ Kako sačuvati istoriju i posle promene naziva fajla

Slide 3

Slide 3 text

Jednostruko ulančana lista i grane

Slide 4

Slide 4 text

Pointeri u Git-u $ cat .git/HEAD ref: refs/heads/master $ ls .git/refs/ heads remotes tags $ ls .git/refs/heads/ GIPS-6755 master origin pull $ cat .git/refs/heads/master ece11ff3c82fea5314b423e3b49aa94d2f9c6a27

Slide 5

Slide 5 text

Rebase i Garbage collector

Slide 6

Slide 6 text

Fork: GitHub++

Slide 7

Slide 7 text

Anatomija commit-a

Slide 8

Slide 8 text

Blob $ cat pera.txt Prva linija $ git hash-object -w pera.txt 03a1c9450b0e3ea137253ab19791564aefbe2e93 $ ls .git/objects/03/ a1c9450b0e3ea137253ab19791564aefbe2e93 $ echo -e 'blob 12\0Prva linija' | shasum 03a1c9450b0e3ea137253ab19791564aefbe2e93 -

Slide 9

Slide 9 text

Slide 10

Slide 10 text

Tree

Slide 11

Slide 11 text

Tree: PHP Implementacija $ git cat-file -p ff8be3c3aad810c069b49995bd162c31bf2dadb5 100644 blob 03a1c9450b0e3ea137253ab19791564aefbe2e93 pera.txt

Slide 12

Slide 12 text

Commit 1444401656 +0200 committer Bosko Pesic 1444401656 +0200 Prvi komit "; fwrite($fp, gzcompress('commit ' . strlen($data) . "\0" . $data, 1)); fclose($fp);

Slide 13

Slide 13 text

Commit s roditeljem $ git cat-file -p eb04c8c tree 1bf51c6166cfb90dc23525803c9b0af2cdf53a9b parent ece11ff3c82fea5314b423e3b49aa94d2f9c6a27 author Bosko Pesic 1444636773 +0200 committer Bosko Pesic 1444636773 +0200 Drugi komit

Slide 14

Slide 14 text

Rename ● Imena fajlova su zabeležena u tree objektima ● Komit sa novim nazivom fajla će upućivati na nove tree objekte ● Dakle, Git će znati istoriju fajla samo ako ...

Slide 15

Slide 15 text

Hvala na pažnji Boško Pešić [email protected]