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 -
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 ...