SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Verziókövető
rendszerek alkalmazása
fejleszté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ővé tevő rendszer.
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
    összekötni a kódot
•
    ad egy timeline-t
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!
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örjem el a kezét?”
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
    egy nagyon kényelmes, hasznos dolog
•
    az open source világhoz ezer szállal kötődünk,
    ott meg egyre dominánsabb...
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
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
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
Kollaboráció – a cherry-                                                         jatekpatch 3



pick                                                        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
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
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
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 4
elő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 ✓
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 dolgokat
alap git toolok elegendőek:
 git log
 gitk
 gitweb
Backup
pofátlanul könnyen indítható verziókezelés
  git init; git add .; git commit
olcsó, könnyű branchelés
git stash
git checkout
git tag
Regression-keresés
git checkout → visszaállás tetszőleges állapotra
git log fájlra, git blame
best 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!!!)
Összegzés
a 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ó.
Köszönöm.

Gyöngyösi Péter
gyp@balabit.hu
Verziókövető rendszerek alkalmazása fejlesztési projektekben

Contenu connexe

En vedette

En vedette (15)

Responding to objection
Responding to objectionResponding to objection
Responding to objection
 
Employability deciding-planning and competing
Employability  deciding-planning and competingEmployability  deciding-planning and competing
Employability deciding-planning and competing
 
Keeping faith alive
Keeping faith aliveKeeping faith alive
Keeping faith alive
 
15 Haziran 2010 Calıstay
15 Haziran 2010 Calıstay 15 Haziran 2010 Calıstay
15 Haziran 2010 Calıstay
 
Rb pernik 20-21.06.2013
Rb pernik 20-21.06.2013Rb pernik 20-21.06.2013
Rb pernik 20-21.06.2013
 
Skripnik
SkripnikSkripnik
Skripnik
 
강의자료6
강의자료6강의자료6
강의자료6
 
Guillermo
GuillermoGuillermo
Guillermo
 
Intro to tsql unit 2
Intro to tsql   unit 2Intro to tsql   unit 2
Intro to tsql unit 2
 
вводная презентация
вводная презентациявводная презентация
вводная презентация
 
Hybride Cloud Strategy
Hybride Cloud StrategyHybride Cloud Strategy
Hybride Cloud Strategy
 
Online reputation management tip 1
Online reputation management tip 1Online reputation management tip 1
Online reputation management tip 1
 
GH and NPB
GH and NPBGH and NPB
GH and NPB
 
RUS öppen föreläsning Stockholm 8 mars 2011 hemsidan
RUS öppen föreläsning Stockholm 8 mars 2011 hemsidanRUS öppen föreläsning Stockholm 8 mars 2011 hemsidan
RUS öppen föreläsning Stockholm 8 mars 2011 hemsidan
 
Informativo kit gay
Informativo kit gayInformativo kit gay
Informativo kit gay
 

Plus de Open Academy

BDD demisztifikálva
BDD demisztifikálvaBDD demisztifikálva
BDD demisztifikálvaOpen Academy
 
What SQL should actually be...
What SQL should actually be...What SQL should actually be...
What SQL should actually be...Open Academy
 
Dev tools rendering & memory profiling
Dev tools rendering & memory profilingDev tools rendering & memory profiling
Dev tools rendering & memory profilingOpen Academy
 
Firefox OS: hackelni könnyű
Firefox OS:  hackelni könnyűFirefox OS:  hackelni könnyű
Firefox OS: hackelni könnyűOpen Academy
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésOpen Academy
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztésOpen Academy
 
A Windows Phone világa
A Windows Phone világaA Windows Phone világa
A Windows Phone világaOpen Academy
 
Okostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOkostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOpen Academy
 
Ipari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanIpari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanOpen Academy
 
Túlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanTúlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanOpen Academy
 
Adminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiAdminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiOpen Academy
 
Naplózás a gyakorlatban
Naplózás a gyakorlatbanNaplózás a gyakorlatban
Naplózás a gyakorlatbanOpen Academy
 
Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Open Academy
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Open Academy
 
AGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésAGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésOpen Academy
 
Multiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekMultiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekOpen Academy
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Open Academy
 

Plus de Open Academy (20)

BDD demisztifikálva
BDD demisztifikálvaBDD demisztifikálva
BDD demisztifikálva
 
What SQL should actually be...
What SQL should actually be...What SQL should actually be...
What SQL should actually be...
 
Dev tools rendering & memory profiling
Dev tools rendering & memory profilingDev tools rendering & memory profiling
Dev tools rendering & memory profiling
 
Firefox OS: hackelni könnyű
Firefox OS:  hackelni könnyűFirefox OS:  hackelni könnyű
Firefox OS: hackelni könnyű
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztés
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztés
 
Magvas gondolatok
Magvas gondolatokMagvas gondolatok
Magvas gondolatok
 
A Windows Phone világa
A Windows Phone világaA Windows Phone világa
A Windows Phone világa
 
Okostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOkostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentje
 
Windows 8
Windows 8Windows 8
Windows 8
 
Ipari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanIpari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatban
 
Túlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanTúlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világában
 
Adminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiAdminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségei
 
Naplózás a gyakorlatban
Naplózás a gyakorlatbanNaplózás a gyakorlatban
Naplózás a gyakorlatban
 
Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?
 
AGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésAGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztés
 
Multiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekMultiplatform mobil fejlesztések
Multiplatform mobil fejlesztések
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
 

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

  • 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. Miért verziókezelünk? Mert egy nagyon jó eszköz. (és a jó eszközöket szeretjük)
  • 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. 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. Regression-keresés • „Ez hogy működhetett valaha, és mikor törtük el?”
  • 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. Mindez a gyakorlatban • miért a git? • kollaboráció • fejlesztés-tracking • backup • regression-keresés
  • 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. 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. 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. 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. Kollaboráció – a cherry- jatekpatch 3 pick 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. 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. 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. 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 4 elő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. 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 dolgokat alap git toolok elegendőek: git log gitk gitweb
  • 18. Backup pofátlanul könnyen indítható verziókezelés git init; git add .; git commit olcsó, könnyű branchelés git stash git checkout git tag
  • 19. Regression-keresés git checkout → visszaállás tetszőleges állapotra git log fájlra, git blame best 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. Összegzés a 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ó.