SlideShare a Scribd company logo
Pásztor János




Az SVN használata csapatfejlesztésben
Code sharing
●   E-mailben küldözgetés
●   SMB share
●   VCS (Version Control System)
    ●   CVS
    ●   SVN
    ●   GIT
    ●   Mercurial
    ●   Visual SourceSafe
    ●   És még sokan mások
A probléma
●   Harry és Sally
    kiolvassák ugyanazt a
    fájlt a repóból.
●   Mind a ketten
    szerkesztik.
●   Először Harry, majd
    Sally elmenti a fájlt a
    repóba.
●   Harry módosítása
    elvész.
Lock-Modify-Unlock
●   Minden fejlesztő
    módosítás előtt
    zárolja a fájlt.
●   A zárolt fájlokat nem
    lehet addig felküldeni,
    amíg a zárolást az
    eredeti zároló fel nem
    oldja.
Copy-Modify-Merge
●   Nincs zárolás
●   Bárki módosíthat
●   Ha a fájl a repóban
    idő közben
    megváltozott, a
    későbbi felküldő hibát
    kap.
Copy-Modify-Merge
●   Ha valaki out-of-date
    hibát kapott, akkor fel
    kell oldania az
    ütközéseket kézzel.
●   Ha minden ütközést
    sikerült feloldani,
    felküldheti a repóba.
Miért használjunk VCS-t?
●   Több fejlesztő is tud dolgozni ugyanazon a
    kódon anélkül, hogy az ütközések nyomán
    felülíródnának a verziók.
●   Minden fejlesztőnek megvan a saját
    munkaverziója, amibe senki nem tud
    belenyúlni.
●   A módosítások visszakövethetőek, több-
    kevesebb munkával vissza is lehet állni.
Miből lett az SVN?
●   Röviden: a CVS-ből.
●   A cél a CVS hülyeségeinek az orvoslása
    volt, nem több.
●   Teljes repóra vonatkozó verziószám a
    fájlonkénti verzió helyett.
●   Ezért a fájlok átnevezése nyomon követhető.
●   Nincsenek megkülönböztetve a
    branchek/tagek, SVN-ben a könyvtárak
    tetszőlegesen nevezhetőek el.
Fontosabb SVN műveletek
●   Import
●   Checkout
●   Commit
●   Update
SVN import
SVN import
SVN import
SVN Checkout
SVN Checkout
SVN Checkout
SVN Checkout
SVN Commit
SVN Commit
SVN Update
SVN Update
SVN haladóknak
●   Ütközések (conflictok) feloldása
●   Branchelés, tagelés
●   SVN repó készítés és elérés
●   Hookok
Ütközések feloldása
Ütközések fajtái
●   Automatikusan feloldható
    Ha az ütközés ugyanabban a fájlban, de más
    helyen van.
●   Automatikusan nem feloldható
    Ha az ütközés ugyanabban a fájlban és
    ugyanazon a helyen van.
Ütközés kézi feloldása
Ütközés kézi feloldása
Ütközés kézi feloldása
Branchelés, tagelés




●   A klasszikus SVN felosztás:
    ●   Trunk
    ●   Branches
    ●   Tags
●   Mindez nem kötelező, csak ajánlott.
●   A branchek, tagek készítése az svn copy művelettel
    történik.
Branch készítése
Branch készítése
Mergelés
Mergelés
Mergelés
SVN repó elérés
●   Helyi fájlrendszerben: file:///
●   SSH-n keresztül: ssh+svn://
●   SVNServe-n keresztül: svn://
●   Apache/DAV-on keresztül: http://
SVN repó készítése
●   Az svn admin create repónév paranccsal
●   Ha Apache-on keresztül szeretnénk elérni, ne
    felejtsünk el írásjogot adni neki!
Apache beállítása
<Location /repos>
 DAV svn
 SVNParentPath /.../repos
 SVNListParentPath on
 AuthType Basic
 AuthName "janoszen.com SVN"
 AuthUserFile /.../access.users
 Require valid-user
</Location>
Apache beállítása
●   Szükséges modulok:
    ●   DAV
    ●   SVN
    ●   SVN Authz
●   Jelszó hozzáadása a jelszófájlhoz:
    ●   htpasswd -m access.users usernev
Hookok
●   Hook-típusok:
    ●   post-commit
    ●   post-lock
    ●   post-revprop-change
    ●   post-unlock
    ●   pre-commit
    ●   pre-lock
    ●   pre-revprop-change
    ●   pre-unlock
    ●   start-commit
Hook felhasználások
●   Ne lehessen üres message-el commitolni
●   Szintaxis-ellenörző (php -l)
●   Kódkonvenció ellenörző (PHP code sniffer)
Referenciák, linkek
●   SVN Red Book
    http://svnbook.red-bean.com/
●   Comparison of revision control software
    (Wikipedia)
    http://en.wikipedia.org/wiki/Comparison_of_revi
    sion_control_software
●   A prezi letölthető:
    http://svn.janoszen.com/repos/svntest/trunk/pre
    zi/svn.ppt
Ennyi...




Kérdések?
TV Maci theme...




Köszönöm a figyelmet!

More Related Content

Similar to Az SVN használata a csapatfejlesztésben

Termék-életciklus és a verziókezelés
Termék-életciklus és a verziókezelésTermék-életciklus és a verziókezelés
Termék-életciklus és a verziókezelésAttila Gábor Nagy
 
Budapest, PHP meetup: Termék életciklus és verzió kezelés
Budapest, PHP meetup: Termék életciklus és verzió kezelésBudapest, PHP meetup: Termék életciklus és verzió kezelés
Budapest, PHP meetup: Termék életciklus és verzió kezelésAttila Gábor Nagy
 
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
 
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
 
Klaszter és virtualizációs technikák
Klaszter és virtualizációs technikákKlaszter és virtualizációs technikák
Klaszter és virtualizációs technikákFerenc Szalai
 
Virtualizáció Linuxon: XEN
Virtualizáció Linuxon: XENVirtualizáció Linuxon: XEN
Virtualizáció Linuxon: XENFerenc Szalai
 
Fejlesszünk okosan, közösen
Fejlesszünk okosan, közösenFejlesszünk okosan, közösen
Fejlesszünk okosan, közösenÁkos Gábriel
 
Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaFerenc Kovács
 
LESS, mint css preprocessor
LESS, mint css preprocessorLESS, mint css preprocessor
LESS, mint css preprocessorLevente Kiraly
 
Nagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseNagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseJános Pásztor
 

Similar to Az SVN használata a csapatfejlesztésben (20)

Termék-életciklus és a verziókezelés
Termék-életciklus és a verziókezelésTermék-életciklus és a verziókezelés
Termék-életciklus és a verziókezelés
 
Ci
CiCi
Ci
 
Budapest, PHP meetup: Termék életciklus és verzió kezelés
Budapest, PHP meetup: Termék életciklus és verzió kezelésBudapest, PHP meetup: Termék életciklus és verzió kezelés
Budapest, PHP meetup: Termék életciklus és verzió kezelés
 
Webkonf 2013
Webkonf 2013Webkonf 2013
Webkonf 2013
 
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?
 
Fordítási alapok
Fordítási alapokFordítási alapok
Fordítási alapok
 
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
 
Diagram és barcode
Diagram és barcodeDiagram és barcode
Diagram és barcode
 
Klaszter és virtualizációs technikák
Klaszter és virtualizációs technikákKlaszter és virtualizációs technikák
Klaszter és virtualizációs technikák
 
Polygon Hírek III. évfolyam 2009 VMware
Polygon Hírek III. évfolyam 2009 VMwarePolygon Hírek III. évfolyam 2009 VMware
Polygon Hírek III. évfolyam 2009 VMware
 
Virtualizáció Linuxon: XEN
Virtualizáció Linuxon: XENVirtualizáció Linuxon: XEN
Virtualizáció Linuxon: XEN
 
Xen klaszterek
Xen klaszterekXen klaszterek
Xen klaszterek
 
Fejlesszünk okosan, közösen
Fejlesszünk okosan, közösenFejlesszünk okosan, közösen
Fejlesszünk okosan, közösen
 
Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálása
 
SZTAKI presentation
SZTAKI presentationSZTAKI presentation
SZTAKI presentation
 
Vmware alapú virtualizáció
Vmware alapú virtualizációVmware alapú virtualizáció
Vmware alapú virtualizáció
 
Linux alapok
Linux alapokLinux alapok
Linux alapok
 
Sles admin
Sles adminSles admin
Sles admin
 
LESS, mint css preprocessor
LESS, mint css preprocessorLESS, mint css preprocessor
LESS, mint css preprocessor
 
Nagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseNagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztése
 

More from János Pásztor

A Virtualizáció esete a Puppettal
A Virtualizáció esete a PuppettalA Virtualizáció esete a Puppettal
A Virtualizáció esete a PuppettalJános Pásztor
 
Hogyan tervezzünk API-t? - Magyarországi Web Konferencia 2013
Hogyan tervezzünk API-t? - Magyarországi Web Konferencia 2013Hogyan tervezzünk API-t? - Magyarországi Web Konferencia 2013
Hogyan tervezzünk API-t? - Magyarországi Web Konferencia 2013János Pásztor
 
IPv6 tartalomszolgáltatóknak
IPv6 tartalomszolgáltatóknakIPv6 tartalomszolgáltatóknak
IPv6 tartalomszolgáltatóknakJános Pásztor
 
Az E-mail, a Hírlevél és a Spamszűrők
Az E-mail, a Hírlevél és a SpamszűrőkAz E-mail, a Hírlevél és a Spamszűrők
Az E-mail, a Hírlevél és a SpamszűrőkJános Pásztor
 
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
 

More from János Pásztor (7)

How (not) to document
How (not) to documentHow (not) to document
How (not) to document
 
A Virtualizáció esete a Puppettal
A Virtualizáció esete a PuppettalA Virtualizáció esete a Puppettal
A Virtualizáció esete a Puppettal
 
Hogyan tervezzünk API-t? - Magyarországi Web Konferencia 2013
Hogyan tervezzünk API-t? - Magyarországi Web Konferencia 2013Hogyan tervezzünk API-t? - Magyarországi Web Konferencia 2013
Hogyan tervezzünk API-t? - Magyarországi Web Konferencia 2013
 
IPv6 tartalomszolgáltatóknak
IPv6 tartalomszolgáltatóknakIPv6 tartalomszolgáltatóknak
IPv6 tartalomszolgáltatóknak
 
Web applications
Web applicationsWeb applications
Web applications
 
Az E-mail, a Hírlevél és a Spamszűrők
Az E-mail, a Hírlevél és a SpamszűrőkAz E-mail, a Hírlevél és a Spamszűrők
Az E-mail, a Hírlevél és a Spamszűrők
 
Syslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknekSyslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknek
 

Az SVN használata a csapatfejlesztésben

  • 1. Pásztor János Az SVN használata csapatfejlesztésben
  • 2. Code sharing ● E-mailben küldözgetés ● SMB share ● VCS (Version Control System) ● CVS ● SVN ● GIT ● Mercurial ● Visual SourceSafe ● És még sokan mások
  • 3. A probléma ● Harry és Sally kiolvassák ugyanazt a fájlt a repóból. ● Mind a ketten szerkesztik. ● Először Harry, majd Sally elmenti a fájlt a repóba. ● Harry módosítása elvész.
  • 4. Lock-Modify-Unlock ● Minden fejlesztő módosítás előtt zárolja a fájlt. ● A zárolt fájlokat nem lehet addig felküldeni, amíg a zárolást az eredeti zároló fel nem oldja.
  • 5. Copy-Modify-Merge ● Nincs zárolás ● Bárki módosíthat ● Ha a fájl a repóban idő közben megváltozott, a későbbi felküldő hibát kap.
  • 6. Copy-Modify-Merge ● Ha valaki out-of-date hibát kapott, akkor fel kell oldania az ütközéseket kézzel. ● Ha minden ütközést sikerült feloldani, felküldheti a repóba.
  • 7. Miért használjunk VCS-t? ● Több fejlesztő is tud dolgozni ugyanazon a kódon anélkül, hogy az ütközések nyomán felülíródnának a verziók. ● Minden fejlesztőnek megvan a saját munkaverziója, amibe senki nem tud belenyúlni. ● A módosítások visszakövethetőek, több- kevesebb munkával vissza is lehet állni.
  • 8. Miből lett az SVN? ● Röviden: a CVS-ből. ● A cél a CVS hülyeségeinek az orvoslása volt, nem több. ● Teljes repóra vonatkozó verziószám a fájlonkénti verzió helyett. ● Ezért a fájlok átnevezése nyomon követhető. ● Nincsenek megkülönböztetve a branchek/tagek, SVN-ben a könyvtárak tetszőlegesen nevezhetőek el.
  • 9. Fontosabb SVN műveletek ● Import ● Checkout ● Commit ● Update
  • 21. SVN haladóknak ● Ütközések (conflictok) feloldása ● Branchelés, tagelés ● SVN repó készítés és elérés ● Hookok
  • 23. Ütközések fajtái ● Automatikusan feloldható Ha az ütközés ugyanabban a fájlban, de más helyen van. ● Automatikusan nem feloldható Ha az ütközés ugyanabban a fájlban és ugyanazon a helyen van.
  • 27. Branchelés, tagelés ● A klasszikus SVN felosztás: ● Trunk ● Branches ● Tags ● Mindez nem kötelező, csak ajánlott. ● A branchek, tagek készítése az svn copy művelettel történik.
  • 33. SVN repó elérés ● Helyi fájlrendszerben: file:/// ● SSH-n keresztül: ssh+svn:// ● SVNServe-n keresztül: svn:// ● Apache/DAV-on keresztül: http://
  • 34. SVN repó készítése ● Az svn admin create repónév paranccsal ● Ha Apache-on keresztül szeretnénk elérni, ne felejtsünk el írásjogot adni neki!
  • 35. Apache beállítása <Location /repos> DAV svn SVNParentPath /.../repos SVNListParentPath on AuthType Basic AuthName "janoszen.com SVN" AuthUserFile /.../access.users Require valid-user </Location>
  • 36. Apache beállítása ● Szükséges modulok: ● DAV ● SVN ● SVN Authz ● Jelszó hozzáadása a jelszófájlhoz: ● htpasswd -m access.users usernev
  • 37. Hookok ● Hook-típusok: ● post-commit ● post-lock ● post-revprop-change ● post-unlock ● pre-commit ● pre-lock ● pre-revprop-change ● pre-unlock ● start-commit
  • 38. Hook felhasználások ● Ne lehessen üres message-el commitolni ● Szintaxis-ellenörző (php -l) ● Kódkonvenció ellenörző (PHP code sniffer)
  • 39. Referenciák, linkek ● SVN Red Book http://svnbook.red-bean.com/ ● Comparison of revision control software (Wikipedia) http://en.wikipedia.org/wiki/Comparison_of_revi sion_control_software ● A prezi letölthető: http://svn.janoszen.com/repos/svntest/trunk/pre zi/svn.ppt