Termék életciklus és            a verziókezelés         Nagy Attila Gábor           Wildom Kft.Magyarországi Web Konferenc...
Ügyfél igények●    Jól ismert három környezet:       –   Fejlesztői       –   Teszt       –   Éles●    Átlátható verziók● ...
Web környezet                       problémái●    Release early, release often●    Környezet kialakítása    erőforrásigény...
MegoldásokTermékben       Következetesimplementálva   verziókezelés       Release       management eszköz
Termékben                       implementálva●    Saját modul kezelő implementálása       –   Elegáns megoldás       –   M...
Hátrányai●    Bonyolult megírni●    Alap rendszer frissítése?        –   Erre külön frissítés kezelő kell●    Fejlesztés a...
Verziókezelés●    Fejlesztés elkerülhetetlen eszköze●    Csoportmunka (2+ fő) esetén    elkerülhetetlen●    Fogalmak:     ...
Hatalmas választék                     Team Foundation     CVS                 ServerClearCase            Subversion Bazaa...
Commit log!!        Tippek az induláshozCommit log!!       ●           Minden környezet azonos           forráskódot haszn...
CVS●    Ajánlott elfelejteni       –   Könnyű áttérni róla Subversion-re●    Branch kezelés gyenge●    Nagyobb projektet n...
Éles és fejlesztői                   környezet CVS-ben●    Külön tag az éles verziónak       –   Bármikor kialakítható, él...
ÉrtékelésElőnyök                   Hátrányok●    Megakadályozza a      ●                              Éles site-on    véle...
Subversion●    Legelterjedtebb eszköz●    Könnyen megtanulható●    CVS hibáit kijavították●    Használható branch-ek●    R...
Párhuzamos ágak  ●      Intuitív  ●      Gyakori      élesítésnél jobban      megfelel  ●      „Csak előre”      szemlélet...
Gordiuszi mergetrunk trunk   testing          testing   release                     release
Release branchek    ●        Minden release        önálló branch-et        (tag-et) kap    ●        Release-be        comm...
Életciklus   RC          mergerelease
Megjegyzések●    Jóval kevesebb merge●    Könnyű elfeledkezni arról, hogy új    release-t hozzunk létre →    párhuzamos br...
Merge tracking●    Fontos tudni, hogy mely revíziókat    mergeltük már       –   Többszörös merge conflict-ot okoz●    SVN...
Elosztott verzió                     kezelő rendszerek●    Hatékony branch-merge támogatás       –   Linus: „a merge a lén...
Hátrányok●    Nehéz megtanulni●    Sok branchet eredményezhet       –   Kell egy jó rendező elv●    Hol a legfrissebb kód?...
Bizonytalan ügyfél                          ?                          ?            probléma                          3   ...
Feature branch                    ●                        Egy feature – egy            R            R                    ...
Ideális struktúra●    Projekt eleje    szerteágazik●    Release-ek egyesítik    a korábbi branche-    eket●    Maradhatnak...
Tesztkörnyezet       ●           Ügyfél nem           akarja/tudja a branch-           eket külön látninext       ●       ...
Tudnivalók●    Megvalósítható Subversionnel       –   Git, Mercurial erősebb ebben●    Projekt elején néha célszerűbb    e...
Commit log!!                Commit hookokCommit log!!       ●           Konvenció ellenőrzés              –   Svn: enforce...
Release management                       eszközök●    Maven, php-maven, Hudson●    Fordító nyelveknél előnyös       –   Ja...
Összefoglaló●    Befektetés●    Mi felel meg nekünk legjobban?       –   Eszköz       –   Szakértelem       –   Publikálás...
LinkekSubversion                         Mercurialhttp://subversion.tigris.org/      http://mercurial.selenic.com/wiki/htt...
Upcoming SlideShare
Loading in …5
×

Termék-életciklus és a verziókezelés

564 views

Published on

Hogyan kövessök a softwerünk változásait, ha azt rendszeresen át is kell adni egy ügyfélnek? Milyen stratégiákból választhatunk, ha CVS-t, SVN-t, vagy GIT-et használunk?

2009-es web konferencián tartott előadásom fóliái.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
564
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Termék-életciklus és a verziókezelés

  1. 1. Termék életciklus és a verziókezelés Nagy Attila Gábor Wildom Kft.Magyarországi Web Konferencia 2009
  2. 2. Ügyfél igények● Jól ismert három környezet: – Fejlesztői – Teszt – Éles● Átlátható verziók● Visszaállás lehetősége
  3. 3. Web környezet problémái● Release early, release often● Környezet kialakítása erőforrásigényes● Éles környezetben is adódhatnak változtatási igények● Hibajavításokat gyorsan kell átvezetni● Adott termék több ügyfélnél is lehet telepítve (esetlegesen más verziók)
  4. 4. MegoldásokTermékben Következetesimplementálva verziókezelés Release management eszköz
  5. 5. Termékben implementálva● Saját modul kezelő implementálása – Elegáns megoldás – Minden telepítés egyedileg állítható össze – Aktuális állapot átlátható – Akár az ügyfél is frissíthet
  6. 6. Hátrányai● Bonyolult megírni● Alap rendszer frissítése? – Erre külön frissítés kezelő kell● Fejlesztés alatt a belső verzió kezelést nem helyettesíti Ajánlott: ha sok ügyfelet szolgál ki egyetlen termék
  7. 7. Verziókezelés● Fejlesztés elkerülhetetlen eszköze● Csoportmunka (2+ fő) esetén elkerülhetetlen● Fogalmak: – Munkaverziók – Branch-ek – Release-ek
  8. 8. Hatalmas választék Team Foundation CVS ServerClearCase Subversion Bazaar Darcs Git Mercurial BitKeeper
  9. 9. Commit log!! Tippek az induláshozCommit 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
  10. 10. CVS● Ajánlott elfelejteni – Könnyű áttérni róla Subversion-re● Branch kezelés gyenge● Nagyobb projektet nehéz átlátni – History fájl szinten van csak – Véletlen update után nehéz visszaállni● Tag-ek viszont jól használhatóak benne
  11. 11. Éles és fejlesztői környezet CVS-ben● Külön tag az éles verziónak – Bármikor kialakítható, éles siteon: ● cvs tag LIVE● Fejlesztői verziók tag nélkül● Élesítés esetén áttesszük a tag-et: – cvs tag -F LIVE – cvs update
  12. 12. ÉrtékelésElőnyök Hátrányok● Megakadályozza a ● Éles site-on véletlen update-ket történt módosításokat● Bármikor könnyen nehéz újrahúzható az éles commitolni környezet● Release tudatos döntés eredménye
  13. 13. Subversion● Legelterjedtebb eszköz● Könnyen megtanulható● CVS hibáit kijavították● Használható branch-ek● Revíziók meghatározzák a projekt állapotát adott időpontban● Rugalmasabb mint a CVS
  14. 14. 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”
  15. 15. Gordiuszi mergetrunk trunk testing testing release release
  16. 16. 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
  17. 17. Életciklus RC mergerelease
  18. 18. 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
  19. 19. 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 bármikor ● branch → trunk csak egyszer – „reintegrate”
  20. 20. 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
  21. 21. 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
  22. 22. Bizonytalan ügyfél ? ? probléma 3 3 ● Revertelni nem lehet,Jelmagyarázat 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
  23. 23. Feature branch ● Egy feature – egy R R branchRR4 4 ● Bármikor4 4 tetszőleges release33 3 3 3 3 3 3 összeállítható22 2 2 2 2 2 211 1 1 1 1 1 1 ● Mindig lehet commitolniRR ● Kisebb brancheket könnyebb átlátni
  24. 24. 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
  25. 25. Tesztkörnyezet ● Ügyfél nem akarja/tudja a branch- eket külön látninext ● Nincs több környezetünk ● Speciális demo branch ● Bármikor szétszedhető ● Release-candidate
  26. 26. 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
  27. 27. Commit log!! Commit hookokCommit log!! ● Konvenció ellenőrzés – Svn: enforcer.py ● Changelog a commitlogokból ● Integráció hibakezelő rendszerrel ● Commit lista → supervising
  28. 28. Release management eszközök● Maven, php-maven, Hudson● Fordító nyelveknél előnyös – Java● Maven tudja, hogy mit, honnan kell összeszedni – Repository szabadon használható● Build során megkerülhetetlen – Nehezítheti a tesztelést ● Pl: JavaScript, CSS
  29. 29. Összefoglaló● Befektetés● Mi felel meg nekünk legjobban? – Eszköz – Szakértelem – Publikálási gyakoriság – Telepítések száma – Kapcsolat az ügyfelünkkel
  30. 30. LinkekSubversion Mercurialhttp://subversion.tigris.org/ http://mercurial.selenic.com/wiki/http://svnbook.red-bean.com/ Bazaarhttp://tortoisesvn.tigris.org/ http://bazaar-vcs.org/Maven Githttp://maven.apache.org/ http://git-scm.com/http://www.php-maven.org/ http://www.youtube.com/watch?v=4XpnKHJAok8Hudsonhttp://hudson.dev.java.net/ http://web.conf.hu/ nagya@wildom.com

×