SlideShare a Scribd company logo
1 of 18
Termék életciklus és
        a verziókezelés



    Nagy Attila Gábor
      Wildom Kft.

PHP Meetup 2012 november
Célok
●
    Legalább három környezet:
       –   Fejlesztői
       –   Teszt
       –   Éles
●
    Visszaállás lehetősége
●
    Release early, release often
●
    Éles környezetben is adódhatnak
    változtatási igények
Hatalmas választék


     CVS             Team Foundation
                         Server
ClearCase
            Subversion
 Bazaar                  Darcs
          Git
                  Mercurial
      BitKeeper
Commit log!!        Tippek az induláshoz
Commit log!!
       ●
           Minden környezet azonos
           forráskódot használjon
              –   Konfiguráció nem verzió kezelt
              –   Környezet függő konfigurációk
       ●
           Rendszeres commitolás
       ●
           Csak tiszta kódot commitoljunk
              –   Ignore fájlok, akár projekt szinten
       ●
           Minimális változtatás elve
       ●
           Conflictok kezelését ismerni
Subversion
●
    Legelterjedtebb eszköz
●
    Könnyen megtanulható
●
    Használható branch-ek
●
    Revíziók meghatározzák a projekt
    állapotát adott időpontban
●
    Rugalmasabb mint a CVS
Párhuzamos ágak
  ●
      Intuitív
  ●
      Gyakori
      élesítésnél jobban
      megfelel
  ●
      „Csak előre”
      szemlélet
  ●
      Nincsenek
      dedikált releasek
  ●
      Nem kell
      „újratelepíteni”
Gordiuszi merge




trunk   testing   release
Release branchek
    ●
        Minden release
        önálló branch-et
        (tag-et) kap
    ●
        Release-be
        commitolás
           –   Policy
                kérdése
           –   Bugfix
           –   Design
                módosítás
Életciklus
   RC




          merge



release
Megjegyzések
●
    Jóval kevesebb merge
●
    Könnyű elfeledkezni arról, hogy új
    release-t hozzunk létre párhuzamos
    branch-ek
●
    Minden release „új telepítés”
       –   vagy: svn switch
●
    Nem egyértelmű, hogy mi kerülhet a
    release-be, és mi nem
       –   Fontos a jó policy
       –   Fontos azt betartatni
Merge tracking
●
    Fontos tudni, hogy mely revíziókat
    mergeltük már
       –   Többszörös merge conflict-ot okoz
●
    SVN még nem igazán erős ebben
       –   1.5.0 előtt nem volt SVN-ben
              ●
                  svnmerge: python script
       –   1.5.0 óta mergeinfo
              ●
                  trunk → branch - ok
              ●
                  branch → trunk - csak egyszer
                      –   „reintegrate”
Elosztott verzió
                     kezelő rendszerek
●
    Hatékony branch-merge támogatás
       –   Linus: „a merge a lényeg,
             branchelni mindenki tud”
●
    Lokális branch-ek
●
    Nagy szabadság
●
    Implicit backup


●
    Git, Mercurial, Bazaar
           http://www.youtube.com/watch?v=4XpnKHJAok8
Hátrányok
●
    Nehéz megtanulni
●
    Sok branchet eredményezhet
       –   Kell egy jó rendező elv
●
    Hol a legfrissebb kód?
●
    Több idő megy el kód
    managementre
Bizonytalan ügyfél
                          ?
                          ?            probléma
                          3
                          3    ●
                                   Revertelni nem lehet,
Jelmagyarázat
   Még fontosabb
   Inkább hagyjuk...
                          3
                          3        mert értékes
                                   tartalom
   feature
                          2
                          2
   Mégsem olyan
   Bocs, mégis sürgős
   Nagyon sürgős
   sürgős feature
   feature
                          1
   Egész ügyes, de...
   Általános fejlesztés
                          1    ●
                                   Mergelni sem lehet
                          4
                          4

                          2
                          2
                               ●
                                   Cherry pick
                          1
                          1           –   Nehezen átlátható
                          3
                          3           –   Kimaradhat valami
                          2
                          2           –   Egy commit több
                          1
                          1                feature :(
                          R
                          R
Feature branch
                    ●
                        Egy feature – egy
            R
            R
                        branch
R
R

4           4
                    ●
                        Bármikor
4           4
                        tetszőleges release
3
3   3
    3   3
        3       3
                3
                        összeállítható
2
2   2
    2   2
        2   2
            2

1
1   1
    1   1
        1   1
            1
                    ●
                        Mindig lehet
                        commitolni
R
R
                    ●
                        Kisebb brancheket
                        könnyebb átlátni
Ideális struktúra
●
    Projekt eleje
    szerteágazik
●
    Release-ek egyesítik
    a korábbi branche-
    eket
●
    Maradhatnak
    oldalágak
       –   Nem került be a
            releasebe
Tudnivalók
               ●
                   Megvalósítható Subversionnel
                      –   Git, Mercurial erősebb ebben
               ●
                   Projekt elején néha célszerűbb
                   eltekinteni tőle
               ●
                   Lehetőleg minden feature külön
                   branchbe kerüljön
                      –   Ha egymásra épülnek, akkor az új
                           branch az előzményből
                           származzon
code review
 code review
Linkek
Subversion                         Mercurial
http://subversion.tigris.org/      http://mercurial.selenic.com/wiki/

http://svnbook.red-bean.com/
                                   Bazaar
http://tortoisesvn.tigris.org/
                                   http://bazaar-vcs.org/
Maven
                                   Git
http://maven.apache.org/
                                   http://git-scm.com/
http://www.php-maven.org/
                                   http://www.youtube.com/watch?v=4XpnKHJAok8
Hudson
http://hudson.dev.java.net/


                                 http://web.conf.hu/
                                 nagya@wildom.com

More Related Content

Viewers also liked (16)

Grup 4 compartim energia
Grup 4 compartim energiaGrup 4 compartim energia
Grup 4 compartim energia
 
Adelini
Adelini Adelini
Adelini
 
Grup 4 compartim energia
Grup 4   compartim energia Grup 4   compartim energia
Grup 4 compartim energia
 
Q
QQ
Q
 
GOD GAVE ME YOU
GOD GAVE ME YOUGOD GAVE ME YOU
GOD GAVE ME YOU
 
Q
QQ
Q
 
Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012
 
Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012
 
Emini Sp 500 doji pattern tecnica di trading intraday
Emini Sp 500 doji pattern tecnica di trading intradayEmini Sp 500 doji pattern tecnica di trading intraday
Emini Sp 500 doji pattern tecnica di trading intraday
 
Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012
 
Quantirica hft futures usa sp 500 crude oil
Quantirica hft futures usa sp 500 crude oilQuantirica hft futures usa sp 500 crude oil
Quantirica hft futures usa sp 500 crude oil
 
Analisi futures indici S&P 500
Analisi futures indici S&P 500Analisi futures indici S&P 500
Analisi futures indici S&P 500
 
Cs6004 cyber fofrensics_qb
Cs6004 cyber fofrensics_qbCs6004 cyber fofrensics_qb
Cs6004 cyber fofrensics_qb
 
Qué es-una-huelga
Qué es-una-huelgaQué es-una-huelga
Qué es-una-huelga
 
Happybirthday
HappybirthdayHappybirthday
Happybirthday
 
Rahul Bohra - HPGD JA14 May 2015, Project ISR, NGO Being Human
Rahul Bohra - HPGD JA14 May 2015, Project ISR, NGO Being HumanRahul Bohra - HPGD JA14 May 2015, Project ISR, NGO Being Human
Rahul Bohra - HPGD JA14 May 2015, Project ISR, NGO Being Human
 

Similar to Budapest, PHP meetup: Termék életciklus és verzió kezelés

Az SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésbenAz SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésbenJános Pásztor
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenOpen Academy
 
Budapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentBudapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentDigital Natives
 
PHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaPHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaFerenc Kovács
 
Code Review Gerrittel
Code Review GerrittelCode Review Gerrittel
Code Review GerrittelZsolt Huba
 
Firefox Thunderbird Seamonkey - felpörgetve!
Firefox Thunderbird Seamonkey - felpörgetve!Firefox Thunderbird Seamonkey - felpörgetve!
Firefox Thunderbird Seamonkey - felpörgetve!Kálmán "KAMI" Szalai
 
Syslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknekSyslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknekJános Pásztor
 

Similar to Budapest, PHP meetup: Termék életciklus és verzió kezelés (8)

Az SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésbenAz SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésben
 
Budapest.rb 201010
Budapest.rb 201010Budapest.rb 201010
Budapest.rb 201010
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekben
 
Budapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentBudapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails Deployment
 
PHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaPHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosítása
 
Code Review Gerrittel
Code Review GerrittelCode Review Gerrittel
Code Review Gerrittel
 
Firefox Thunderbird Seamonkey - felpörgetve!
Firefox Thunderbird Seamonkey - felpörgetve!Firefox Thunderbird Seamonkey - felpörgetve!
Firefox Thunderbird Seamonkey - felpörgetve!
 
Syslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknekSyslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknek
 

Budapest, PHP meetup: Termék életciklus és verzió kezelés

  • 1. Termék életciklus és a verziókezelés Nagy Attila Gábor Wildom Kft. PHP Meetup 2012 november
  • 2. Célok ● Legalább három környezet: – Fejlesztői – Teszt – Éles ● Visszaállás lehetősége ● Release early, release often ● Éles környezetben is adódhatnak változtatási igények
  • 3. Hatalmas választék CVS Team Foundation Server ClearCase Subversion Bazaar Darcs Git Mercurial BitKeeper
  • 4. Commit log!! Tippek az induláshoz Commit log!! ● Minden környezet azonos forráskódot használjon – Konfiguráció nem verzió kezelt – Környezet függő konfigurációk ● Rendszeres commitolás ● Csak tiszta kódot commitoljunk – Ignore fájlok, akár projekt szinten ● Minimális változtatás elve ● Conflictok kezelését ismerni
  • 5. Subversion ● Legelterjedtebb eszköz ● Könnyen megtanulható ● Használható branch-ek ● Revíziók meghatározzák a projekt állapotát adott időpontban ● Rugalmasabb mint a CVS
  • 6. Párhuzamos ágak ● Intuitív ● Gyakori élesítésnél jobban megfelel ● „Csak előre” szemlélet ● Nincsenek dedikált releasek ● Nem kell „újratelepíteni”
  • 7. Gordiuszi merge trunk testing release
  • 8. Release branchek ● Minden release önálló branch-et (tag-et) kap ● Release-be commitolás – Policy kérdése – Bugfix – Design módosítás
  • 9. Életciklus RC merge release
  • 10. Megjegyzések ● Jóval kevesebb merge ● Könnyű elfeledkezni arról, hogy új release-t hozzunk létre párhuzamos branch-ek ● Minden release „új telepítés” – vagy: svn switch ● Nem egyértelmű, hogy mi kerülhet a release-be, és mi nem – Fontos a jó policy – Fontos azt betartatni
  • 11. Merge tracking ● Fontos tudni, hogy mely revíziókat mergeltük már – Többszörös merge conflict-ot okoz ● SVN még nem igazán erős ebben – 1.5.0 előtt nem volt SVN-ben ● svnmerge: python script – 1.5.0 óta mergeinfo ● trunk → branch - ok ● branch → trunk - csak egyszer – „reintegrate”
  • 12. Elosztott verzió kezelő rendszerek ● Hatékony branch-merge támogatás – Linus: „a merge a lényeg, branchelni mindenki tud” ● Lokális branch-ek ● Nagy szabadság ● Implicit backup ● Git, Mercurial, Bazaar http://www.youtube.com/watch?v=4XpnKHJAok8
  • 13. Hátrányok ● Nehéz megtanulni ● Sok branchet eredményezhet – Kell egy jó rendező elv ● Hol a legfrissebb kód? ● Több idő megy el kód managementre
  • 14. Bizonytalan ügyfél ? ? probléma 3 3 ● Revertelni nem lehet, Jelmagyarázat Még fontosabb Inkább hagyjuk... 3 3 mert értékes tartalom feature 2 2 Mégsem olyan Bocs, mégis sürgős Nagyon sürgős sürgős feature feature 1 Egész ügyes, de... Általános fejlesztés 1 ● Mergelni sem lehet 4 4 2 2 ● Cherry pick 1 1 – Nehezen átlátható 3 3 – Kimaradhat valami 2 2 – Egy commit több 1 1 feature :( R R
  • 15. Feature branch ● Egy feature – egy R R branch R R 4 4 ● Bármikor 4 4 tetszőleges release 3 3 3 3 3 3 3 3 összeállítható 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 ● Mindig lehet commitolni R R ● Kisebb brancheket könnyebb átlátni
  • 16. Ideális struktúra ● Projekt eleje szerteágazik ● Release-ek egyesítik a korábbi branche- eket ● Maradhatnak oldalágak – Nem került be a releasebe
  • 17. Tudnivalók ● Megvalósítható Subversionnel – Git, Mercurial erősebb ebben ● Projekt elején néha célszerűbb eltekinteni tőle ● Lehetőleg minden feature külön branchbe kerüljön – Ha egymásra épülnek, akkor az új branch az előzményből származzon code review code review
  • 18. Linkek Subversion Mercurial http://subversion.tigris.org/ http://mercurial.selenic.com/wiki/ http://svnbook.red-bean.com/ Bazaar http://tortoisesvn.tigris.org/ http://bazaar-vcs.org/ Maven Git http://maven.apache.org/ http://git-scm.com/ http://www.php-maven.org/ http://www.youtube.com/watch?v=4XpnKHJAok8 Hudson http://hudson.dev.java.net/ http://web.conf.hu/ nagya@wildom.com