Verziókövetőrendszerek alkalmazásafejlesztési projektekben    Gyöngyösi Péter, BalaBit
Mi az a verziókezelés? Egy adathalmaz konzisztens állapotait és      változását rögzíteni képes és azt     visszakövethető...
Miért verziókezelünk?     Mert egy nagyon jó eszköz.     (és a jó eszközöket szeretjük)
Hogy tudjuk, mi történt•    mikor mi és hogyan    került a kódba•    látni a kontextust•    ticketekkel, bugokkal    össze...
Backup•    nem kell félni a változtatásoktól•    szimpla backup egy idő után töröl, ha te törölsz•    könnyen vissza lehet...
Regression-keresés•    „Ez hogy működhetett valaha, és mikor törtük    el?”
Együttműködés•    több ember dolgozik a projekten – valahogy    össze kell fésülni a munkájuk•    „Na és ezért kinek törje...
Mindez a gyakorlatban•    miért a git?•    kollaboráció•    fejlesztés-tracking•    backup•    regression-keresés
Miért a git?•    gyors, effektív•    sok hasznos tool létezik hozzá•    az elosztottság rengeteg speciális helyzetben    e...
Kollaboráció – a BalaBit•    sok programnyelv, heterogén    fejlesztőkörnyezet•    security termékek → erős kontroll a mai...
Kollaboráció – a cherry-pick                                         mainline                                        patch...
Kollaboráció – a cherry-pick                                                    mainline                                  ...
Kollaboráció – a cherry-                                                         jatekpatch 3pick                         ...
Kollaboráció – a cherry-pick•    git alapon mindez:    •        mainline, fejlesztői ág: git repository-k    •        git ...
Kollaboráció – a merge                                             zorp-mainline                                          ...
Kollaboráció – a merge                                  zorp-mainline                                             scb-main...
Fejlesztés követése- rendes verziókezelést követelünk meg, amit a git támogat nem fájlonként, hanem patchenként commit olc...
Backuppofátlanul könnyen indítható verziókezelés  git init; git add .; git commitolcsó, könnyű branchelésgit stashgit chec...
Regression-keresésgit checkout → visszaállás tetszőleges állapotragit log fájlra, git blamebest thing since slice bread: g...
Összegzésa verziókezelés nem szükséges macera, hanem eszköz!...de ehhez az kell, hogy ne legyen útban:  akkor kelljen dolg...
Köszönöm.Gyöngyösi Pétergyp@balabit.hu
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Upcoming SlideShare
Loading in …5
×

Verziókövető rendszerek alkalmazása fejlesztési projektekben

1,561 views

Published on

Mi az, amit minden fejlesztőnek tudnia kellene, de szinte nincs egyetem, ahol oktatnák? Ezek a verziókövető rendszerek, amit minden jól működő fejlesztőcég alkalmaz.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,561
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Verziókövető rendszerek alkalmazása fejlesztési projektekben

  1. 1. Verziókövetőrendszerek alkalmazásafejlesztési projektekben Gyöngyösi Péter, BalaBit
  2. 2. Mi az a verziókezelés? Egy adathalmaz konzisztens állapotait és változását rögzíteni képes és azt visszakövethetővé tevő rendszer.
  3. 3. Miért verziókezelünk? Mert egy nagyon jó eszköz. (és a jó eszközöket szeretjük)
  4. 4. Hogy tudjuk, mi történt• mikor mi és hogyan került a kódba• látni a kontextust• ticketekkel, bugokkal összekötni a kódot• ad egy timeline-t
  5. 5. Backup• nem kell félni a változtatásoktól• szimpla backup egy idő után töröl, ha te törölsz• könnyen vissza lehet nyerni bármi korábbi állapotot• olcsón ki lehet próbálgatni dolgokat• build-management alapvetése: mindent lehessen újrabuildelni!
  6. 6. Regression-keresés• „Ez hogy működhetett valaha, és mikor törtük el?”
  7. 7. Együttműködés• több ember dolgozik a projekten – valahogy össze kell fésülni a munkájuk• „Na és ezért kinek törjem el a kezét?”
  8. 8. Mindez a gyakorlatban• miért a git?• kollaboráció• fejlesztés-tracking• backup• regression-keresés
  9. 9. Miért a git?• gyors, effektív• sok hasznos tool létezik hozzá• az elosztottság rengeteg speciális helyzetben egy nagyon kényelmes, hasznos dolog• az open source világhoz ezer szállal kötődünk, ott meg egyre dominánsabb...
  10. 10. Kollaboráció – a BalaBit• sok programnyelv, heterogén fejlesztőkörnyezet• security termékek → erős kontroll a mainline-on• kis csapatok...• ...de sok közös komponens csapatok közt• újrabuildelhetőség nagyon fontos• sok külső, open source függőség
  11. 11. Kollaboráció – a cherry-pick mainline patch 6 ✓ dev-gyp• terméken, csapaton belül patch 5 ✓ jatekpatch 3 használjuk főleg ✓ gyp patch 2• alapkoncepció: patch 4 ✓ • fejlesztőnek/tesztelőnek patch 3 ✓ jatekpatch 2 saját ág, ami az ő játszótere • az integrálandó patcheknek patch 2 ✓ ✓ gyp patch 1 kell jóknak lenni, azontúl olyan szemétdomb lehet, patch 1 ✓ jatekpatch 1 amit nem szégyell
  12. 12. Kollaboráció – a cherry-pick mainline gyp feature 2 ✓ dev-gyp ✓ gyp patch 3• integrálás: gyp feature 1 ✓ jatekpatch 3 • közös review (személyesen, semmi fancy tool) ✓ gyp patch 2 patch 4 ✓ • patcheket szedünk • javíthatunk, összevonhatunk, patch 3 ✓ jatekpatch 2 darabolhatunk • conflict-feloldás itt, ha túl sok, patch 2 ✓ ✓ gyp patch 1 visszadobjuk • tiszta, önmagában értelmezhető patch 1 ✓ jatekpatch 1 patchek kellenek
  13. 13. Kollaboráció – a cherry- jatekpatch 3pick mainline dev-gyp jatekpatch 2 jatekpatch 1 gyp feature 2 ✓ ✓ gyp patch 3 jatekpatch 3 gyp feature 1 ✓• fejlesztő időnként rebase-el • kidobja a saját patcheit ✓ gyp patch 2 • behúzza magához a mainline-t patch 4 ✓ • visszarakja egyesével a patcheket, conflictot old fel patch 3 ✓ jatekpatch 2 • amik már felkerültek, itt kidobja patch 2 ✓ ✓ gyp patch 1 • lehet itt is szerkeszteni, átrendezni, kidobálni patch 1 ✓ jatekpatch 1
  14. 14. Kollaboráció – a cherry-pick• git alapon mindez: • mainline, fejlesztői ág: git repository-k • git remote-tal egymásnak megadva • git cherry, git cherry-pick • git rebase –interactive • kicsit buta, scripttel kell neki segíteni
  15. 15. Kollaboráció – a merge zorp-mainline scb-mainline• főleg csapatok közt, közös komponensekhez• a git jobban „szereti”, ✓ scb patch 4 effektívebb eszközök zorp patch 4 ✓• de kifogástalan minőségű zorp patch 3 ✓ ✓ scb patch 3 ágakra van szükség! • egy Linux kernel-szintű zorp patch 2 ✓ ✓ scb patch 2 dolognál ez belefér... ✓ scb patch 1 • ...de egy átlagos fejlesztői zorp patch 1 ✓ projektnél ez túl drága
  16. 16. Kollaboráció – a merge zorp-mainline scb-mainline zorp patch 5 ✓ ✓ scb patch 5/B• tipikusan mainline-ok merge ✓ ✓ scb patch 5/A között ✓ scb patch 4előre meghatározott zorp patch 4 ✓ pontokon (pl. új zorp patch 3 ✓ ✓ scb patch 3 release kezdetekor) merge-ölünk zorp patch 2 ✓ ✓ scb patch 2 ✓ scb patch 1 zorp patch 1 ✓
  17. 17. Fejlesztés követése- rendes verziókezelést követelünk meg, amit a git támogat nem fájlonként, hanem patchenként commit olcsó, egyszerű brancheket csinálni, emiatt könnyebb tisztán tartani a dolgokatalap git toolok elegendőek: git log gitk gitweb
  18. 18. Backuppofátlanul könnyen indítható verziókezelés git init; git add .; git commitolcsó, könnyű branchelésgit stashgit checkoutgit tag
  19. 19. Regression-keresésgit checkout → visszaállás tetszőleges állapotragit log fájlra, git blamebest thing since slice bread: git bisect git bisect start git bisect good release-1.0.0 git bisect bad [make check] git bisect good/bad... (scriptelhető is!!!)
  20. 20. Összegzésa verziókezelés nem szükséges macera, hanem eszköz!...de ehhez az kell, hogy ne legyen útban: akkor kelljen dolgozni vele, amikor akarunk legyen gyors legyen megbízható legyen flexibilis...és a git erre nagyon jó.
  21. 21. Köszönöm.Gyöngyösi Pétergyp@balabit.hu

×