Verziókezelés a Git használatával
Vajna Miklós
2009. október 2.
1 / 20
Slide 2
Slide 2 text
Mir˝
ol lesz szó?
Miért jó a verziókezelés?
Miért jó az elosztott verziókezelés?
Miért jó a Git?
A Gitr˝
ol - alulról felfelé
A Git használata küls˝
osként
A Frugalware mire használja a Gitet
2 / 20
Slide 3
Slide 3 text
Miért jó a verziókezelés?
Mindenki használ verziókezelést, legfeljebb nem tud róla
(Mentés másként, tarball + patch-ek, stb.)
Kollaborációs munkához elengedhetetlen
Hibakeresést segíti
Dokumentációs eszköz
3 / 20
Slide 4
Slide 4 text
Miért jó az elosztott verziókezelés?
A teljes repó elérhet˝
o helyben, gyors blame, log, diff, merge
Nincs szükség hálózati kapcsolatra
Nincs SPoF
Megsz˝
unhet a committer fogalma
Backup jelent˝
osége csökken
Branch/merge egyszer˝
ubbé válik
4 / 20
Slide 5
Slide 5 text
Miért jó a Git?
A legtöbb el˝
ony természetesen az elosztottságból fakad
merge-recursive (vö. Subversion)
rerere
blame - kódblokk-áthelyezés érzékelése (vö. explicit
másolás/átnevezés)
git grep
combined diff
5 / 20
Slide 6
Slide 6 text
A Gitr˝
ol - alulról felfelé
Alacsony szinten egy tartalom szerint címezhet˝
o fájlrendszer
4 objektum-típus: blob, tree, commit, tag
blob: egy fájl egy változata
tree: lehet tree vagy blob, mindegyikb˝
ol több, de összesen
legalább egy
commit: 0..sok parent, egy tree
tag: van neve, és bármire mutathat (commitra szokott)
6 / 20
Slide 7
Slide 7 text
Ami nem objektum
ref, symref
hook
reflog
config
index
7 / 20
A Git használata küls˝
osként
Küls˝
os: nincs commit joga, patch-eket küld
Helyben persze git-ben dolgozik
Rebase-el, nem merge-öl
Interactive rebase: squash, darabolás, rendezgetés
git format-patch, git am
Bundle-ök
9 / 20
Slide 10
Slide 10 text
Git parancsok: sok van, melyik kell nekem?
A Git 1.6.4 esetén 145 parancs
F˝
o magas szint˝
u parancsok
Mellék magas szint˝
u parancsok
Alacsony szint˝
u parancsok
10/ 20
F˝
o magas szint˝
u parancsok (példák)
archive, bundle, am és format-patch
cherry-pick és revert
describe, shortlog
gc, clean, stash, submodule
12/ 20
Slide 13
Slide 13 text
Mellék magas szint˝
u parancsok (példák)
Manipulálók: config, filter-branch
Lekérdezés: blame, fsck, verify-tag
Interakció más rendszerekkel: fast-import, fast-export,
archimport, cvsimport, cvsexportcommit, quiltimport, svn
13/ 20
Slide 14
Slide 14 text
Alacsony szint˝
u parancsok
Ha scriptelni szeretnénk
Példa: log vs rev-list:
$ git log --pretty=oneline HEAD~2..
2920c0c vinagre
329aae5 gtk-vnc
$ git rev-list HEAD~2..
2920c0c
329aae5
14/ 20
Slide 15
Slide 15 text
Commitok szimbolikus nevei
Egy példa sokat segíthet:
G H I J A = = A^0
\ / \ / B = A^ = A^1 = A~1
D E F C = A^2 = A^2
\ | / \ D = A^^ = A^1^1 = A~2
\ | / | E = B^2 = A^^2
\|/ | F = B^3 = A^^3
B C G = A^^^ = A^1^1^1 = A~3
\ /
\ /
A
H = D^2 = B^^2 = A^^^2 = A~2^2
I = F^ = B^3^ = A^^3^
J = F^2 = B^3^2 = A^^3^2
15/ 20
Slide 16
Slide 16 text
Az index
Probléma: egy fájlban két módosítás, de csak az egyiket
szeretnénk commitolni
Karbantartás esetén: merge-nél csak a conflict lenne az
érdekes
Megoldás: index, mint köztes réteg
git diff, git diff --cached, git diff HEAD
16/ 20
Slide 17
Slide 17 text
Index ábra
Az el˝
obbi parancsok térbe helyezve:
diff
+----+
| |
+-----------+
| Objektum- |
| tároló |
+-----------+
| | diff --cached
diff HEAD | +-------+
| | Index |
| +-------+
| | diff
+----------+
| Munka- |
| könyvtár |
+----------+
17/ 20
Slide 18
Slide 18 text
A Frugalware mire használja a Gitet
A -current fa csomagleíróinak tárolására
A 1.1-516-ge0b7c1e verziónál ez 4603 scriptet jelent,
összesen 51263 commit, 46 fejleszt˝
ot˝
ol
Csomagkezel˝
o
Telepít˝
o
Dokumentáció és annak fordításai
18/ 20
Slide 19
Slide 19 text
Hivatkozások
Innovations in git http://gitster.livejournal.com/16077.html
Git for Computer Scientists
http://eagain.net/articles/git-for-computer-scientists/
Összefoglaló szimbolikus nevekr˝
ol: man git-rev-parse
19/ 20