41
Pásztor János Az SVN használata csapatfejlesztésben

Az SVN használata a csapatfejlesztésben

Embed Size (px)

Citation preview

Page 1: Az SVN használata a csapatfejlesztésben

Pásztor János

Az SVN használata csapatfejlesztésben

Page 2: Az SVN használata a 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

Page 3: Az SVN használata a csapatfejlesztésben

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.

Page 4: Az SVN használata a csapatfejlesztésben

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.

Page 5: Az SVN használata a csapatfejlesztésben

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.

Page 6: Az SVN használata a csapatfejlesztésben

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.

Page 7: Az SVN használata a csapatfejlesztésben

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.

Page 8: Az SVN használata a csapatfejlesztésben

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.

Page 9: Az SVN használata a csapatfejlesztésben

Fontosabb SVN műveletek

● Import● Checkout● Commit● Update

Page 10: Az SVN használata a csapatfejlesztésben

SVN import

Page 11: Az SVN használata a csapatfejlesztésben

SVN import

Page 12: Az SVN használata a csapatfejlesztésben

SVN import

Page 13: Az SVN használata a csapatfejlesztésben

SVN Checkout

Page 14: Az SVN használata a csapatfejlesztésben

SVN Checkout

Page 15: Az SVN használata a csapatfejlesztésben

SVN Checkout

Page 16: Az SVN használata a csapatfejlesztésben

SVN Checkout

Page 17: Az SVN használata a csapatfejlesztésben

SVN Commit

Page 18: Az SVN használata a csapatfejlesztésben

SVN Commit

Page 19: Az SVN használata a csapatfejlesztésben

SVN Update

Page 20: Az SVN használata a csapatfejlesztésben

SVN Update

Page 21: Az SVN használata a csapatfejlesztésben

SVN haladóknak

● Ütközések (conflictok) feloldása● Branchelés, tagelés● SVN repó készítés és elérés● Hookok

Page 22: Az SVN használata a csapatfejlesztésben

Ütközések feloldása

Page 23: Az SVN használata a csapatfejlesztésben

Ü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.

Page 24: Az SVN használata a csapatfejlesztésben

Ütközés kézi feloldása

Page 25: Az SVN használata a csapatfejlesztésben

Ütközés kézi feloldása

Page 26: Az SVN használata a csapatfejlesztésben

Ütközés kézi feloldása

Page 27: Az SVN használata a csapatfejlesztésben

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.

Page 28: Az SVN használata a csapatfejlesztésben

Branch készítése

Page 29: Az SVN használata a csapatfejlesztésben

Branch készítése

Page 30: Az SVN használata a csapatfejlesztésben

Mergelés

Page 31: Az SVN használata a csapatfejlesztésben

Mergelés

Page 32: Az SVN használata a csapatfejlesztésben

Mergelés

Page 33: Az SVN használata a csapatfejlesztésben

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://

Page 34: Az SVN használata a csapatfejlesztésben

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!

Page 35: Az SVN használata a csapatfejlesztésben

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>

Page 36: Az SVN használata a csapatfejlesztésben

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

Page 37: Az SVN használata a csapatfejlesztésben

Hookok

● Hook-típusok:● post-commit● post-lock● post-revprop-change● post-unlock● pre-commit● pre-lock● pre-revprop-change● pre-unlock● start-commit

Page 38: Az SVN használata a csapatfejlesztésben

Hook felhasználások

● Ne lehessen üres message-el commitolni● Szintaxis-ellenörző (php -l)● Kódkonvenció ellenörző (PHP code sniffer)

Page 39: Az SVN használata a csapatfejlesztésben

Referenciák, linkek

● SVN Red Bookhttp://svnbook.red-bean.com/

● Comparison of revision control software (Wikipedia)http://en.wikipedia.org/wiki/Comparison_of_revision_control_software

● A prezi letölthető:http://svn.janoszen.com/repos/svntest/trunk/prezi/svn.ppt

Page 40: Az SVN használata a csapatfejlesztésben

Ennyi...

Kérdések?

Page 41: Az SVN használata a csapatfejlesztésben

TV Maci theme...

Köszönöm a figyelmet!