Upload
janos-pasztor
View
1.993
Download
1
Embed Size (px)
Citation preview
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 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
Ennyi...
Kérdések?
TV Maci theme...
Köszönöm a figyelmet!