2012. május 27-én a bejegyzés kiegészítve Windows felhasználóknak számára. A kiegészítések pirossal kiemelt dátummal jelöltek.
Azok kedvéért, akik még nem próbáltak verziókezelő rendszert használni: Több féle lehetőség létezik. git, CVS vagy akár az SVN, amiről én írok most. De egyébként jó hosszú a lista. Akit érdekel: Verziókezelő rendszerek, Verziókezelés
Hasznos dolog, mert egy szerveren megtalálható az összes fájl összes verziója, amiket vissza is lehet állítani szükség esetén. Illetve pontosan követhetők a változások. Csapatmunka esetén ki, mit módosított. Illetve bizonyos esetekben ugyanazon a fájlon több fejlesztő is dolgozhat. Más esetben ez hibát okoz, aminek a javítására vannak lehetőségek.
Vannak fejlesztői környezetek, amik támogatják a verziókezelő rendszereket. NetBeans is ilyen. CVS, Mercurial és Subversion ( SVN ) van beépítve. Ingyenes szervereket is lehet találni. Korlátozottan bár, de ilyen az Assembla.com (A fizetős verziója többet tud). Viszont lehet privát projektet is kérni. Ellentétben sourceforge.net -tel (2012. május 27.: Azóta már itt is), ahol viszont sokkal több lehetőség és eszköz használható teljesen ingyen. De nem is részletezném tovább. A tárgyra térek.
Mint írtam, netbeanst használok és SVN-t. Valamilyen PHP programot szeretnék "verziókezelni". Létrehozom a projectet, beállítom az SVN-t és módosítgatok. Tesztelgetek. Létrejönnek cache fájlok esetleg, képek vagy kitöltött, helyi gépre beállított config fájlok amiket nem szeretnénk commitolni. NetBeans-ben van lehetőség commit előtt egy listában jelölgetni, miket akarunk felküldeni a szerverre és miket nem. Vagy előre beállítani, hogy egy bizonyos mappát, fájlt sose töltsön fel. De még ekkor is el lehet veszni a fájlok között. Nem beszélve arról, hogy a netbeans projekt fájljai is bekerülhetnek ide, ha létrehozáskor nem lett megadva, hogy külön mappában tárolja a config állományokat a projekthez. Illetve nem biztos, hogy az alkalmazás fel van készítve arra, hogy minden mappába bekerül egy .svn nevű mappa is fájlokkal. Szóval nézzünk lépésről lépésre egy projectet az assembla.com -on.
Regisztrálj az assembla.com -on, vagy lépj be akár google vagy yahoo azonosítóddal.
Belépés után a "Start" fülön kattints "Create your own space" gombra.
Kattints a "We also have some limited free options where you can't add extra tools" szövegre a fizetős projekt lista alatt. Majd válaszd ki a lenyíló ingyenes listából az elsőt: "Free Subversion Repository – Commercial Quality"
Töltsd ki a projekt nevet ( space name ). Az url-t automatikusan kitölti. A többivel nem is muszáj foglalkozni. Alapértelmezetten senki se láthatja a projektet a tagokon kívül és a tagok csak szerkeszteni tudják. Adminisztrálni nem. Ezt a Security rész alatt lehet módosítani.
Kattints a "Create the space" gombra, majd ismét a "start" fülön válaszd ki a létrehozott projektet.
Másold ki az url-t, terminálban lépj be a könyvtárba, ahova az svn projektet szeretnéd másolni.
Majd a következő utasítást add ki:
svn co https://subversion.assembla.com/svn/TesztProj/ svnteszt_svn
"TesztProj" helyett persze más lesz a saját url-ben. Futtatás után az svnteszt_svn mappa is létrejön, ha addig nem volt. Most lehet indítani a netbeanst. Létrehozni egy új projektet.
(File » New Project » PHP Application with existing source)
A Put Netbeans metadata into a separate directory checkbox legyen kijelölve. Tallózd az előbb létrehozott svnteszt_svn mappát. Majd Finish gomb. Most pedig ugyanezt meg kell ismételni, csak nem létező projektből indulunk ki, hanem teljesen újat hozunk létre.
(File » New Project » PHP Application)
Természetesen akinek már van létező, és azt szeretné assembla.com -ra feltölteni, azt is megteheti. Viszont a projekt tallózás után Finish helyett előbb a Next gombra kell kattintani. És megadni az url-t, amin a projekt futtatható böngészőben. Aztán jöhet a Finish.
Most baloldalt a a Project fülön jobb egérgomb klikk az svnteszt_svn projekten, majd Properties » Run Configuration. ( Vagy klikk » Set Configuration » Customize )
Következőket kell megadni linuxon:
Run As: Script ( run in command line )
PHP interpreter: /bin/bash,
Use default PHP interpreter: NE LEGYEN kipipálva
index file: ../run.sh
Windowson .sh fájl helyett .bat kellene. És talán egyszerűbb az "interpreter" mezőben megadni. Index fájl pedig bármelyik létező fájl lehet.
2012. május 27.: Windowson az index file lehet .bat kiterjesztésű. Az interpreter viszont a cmd.exe kell legyen. Ez a Windows mappában keresendő a system32 mappában, vagy 64 bites rendszereknél eltérő helyen is lehet. Windows 7-ben a SysWOW64 mappában is van egy cmd.exe. Szükséges a /C opció is. Így nálam így néz ki 64 bites Windows7 -ben az interpreter mező:
C:\Windows\SysWOW64\cmd.exe /C
Ezek után nincs más hátra, mint ismét az svnteszt_svn projekten jobb klikk » Subversion » Export. Kiválasztani az svnteszt mappát, és exportálni. Ezt azért minden alkalommal megtenni körülményes. Egyik lehetséges megoldás, az export után megnézni az Output ablakban az eredményt. Ami, ilyesmi lesz:
export /mnt/web/webproject/svnteszt_svn /mnt/web/webproject/svnteszt --force --config-dir /home/rimelek/.netbeans/6.9/config/svn/config --non-interactive
Ezt be lehet másolni a run.sh -ba (2012. május 27.: Windowson run.bat), amit az svnteszt_svn mappa mellett kell elhelyezni. És a fájl elejére még az "svn " parancsot is be kell írni.
svn export /mnt/web/webproject/svnteszt_svn /mnt/web/webproject/svnteszt --force --config-dir /home/rimelek/.netbeans/6.9/config/svn/config --non-interactive
Ezek után F6-ot nyomva az svnteszt_svn projektben automatikusan lefut az export. Viszont csak azokat másolja át, amik már fel vannak töltve a szerverre is. Új fájlokat nem. Erre pedig a következő scriptet lehet használni a fenti helyett linuxon:
rsync -r --delete --exclude '.svn' /mnt/web/webproject/svnteszt_svn/ /mnt/web/webproject/svnteszt
2012. május 27.: Windowson be kell szerezni előbb az rsync programot. Amit a következő oldalon lehet megtenni: cwRsync. Más program is van itt, de természetesen a cwRsync -et kell letölteni. Kitömöríteni, telepíteni. Telepítéskor felkínál más célkönyvtár választást, de javasolt alapértelmezettben hagyni. Jegyezzük meg, hova lett telepítve, mert erre kell hivatkozni a bat fájlban. Majd a run.bat fájlba Windows 7 64 bites rendszeren a következőt kell írni:
"C:/Program Files (x86)/cwRsync/bin/rsync.exe" -r --exclude '.svn' /cygdrive/d/webproject/svnteszt_svn/ /cygdrive/d/webproject/svnteszt
A /cygdrive/d/ a D meghajtót jelenti. Ha tehát D meghajtóról kellene F meghajtóra másolni, így nézne ki a script:
"C:/Program Files (x86)/cwRsync/bin/rsync.exe" -r --exclude '.svn' /cygdrive/d/webproject/svnteszt_svn/ /cygdrive/f/webproject/svnteszt
Az útvonalakat persze mindenki cserélje ki a sajátjára.
FIGYELEM: A --delete miatt az svnteszt mappában törlődik minden olyan fájl, ami az svnteszt_svn -ben nem volt.
Szerverre a fájlokat a már sokat emlegetett projekt menüben a Subversion » commit -tal lehet feltölteni. Frissíteni pedig ugyanitt az update -el
2012. május 27.: Ha a későbbi netbeans verziókban másképp működne valami, szóljatok és utánanézek.
2012. május 27.: Aki git-et használna, mint ahogy már én is áttértem, az is nagyon hasonlóan használhatja a leírt megoldásokat. Az export scriptben viszont ".svn" mappa helyett ".git" -et kell írni. Valamint mások a git parancsai, de az nem témája ennek a bejegyzésnek.