Webes projekt SVN
Sziasztok,
egy olyan kérdésem lenne, hogy egy új projektemhez szeretnék SVN-t használni. Osztott szerveren vagyok, de elvileg föl van telepítve. Lehetséges-e megoldani azt, hogy mondjuk én egy alkönyvtárban (/svn?) lássan az SVN repót, a domain root alatt pedig a head revision muzsikál mint éles verzió?
Köszi
János
■ egy olyan kérdésem lenne, hogy egy új projektemhez szeretnék SVN-t használni. Osztott szerveren vagyok, de elvileg föl van telepítve. Lehetséges-e megoldani azt, hogy mondjuk én egy alkönyvtárban (/svn?) lássan az SVN repót, a domain root alatt pedig a head revision muzsikál mint éles verzió?
Köszi
János
Kicsit off
Kutakodtam magyar leírás után, de kevés sikerrel ...
Verziókövetés
A nagy dolog ebben az, hogy pl. az Eclipse alapból kezeli ezeket a dolgokat, ami egyrészt lehetővé teszi a kollaboratív (együttműködő) fejlesztést másrészt meg nem az éles verzióban kell barmolni.
Nekem pontosan ez lenne a cél, hogy a projektemen egyrészt több ember is tudjon fejleszteni másrészt legyen verziókezelve az egész.
Már alakul
Itt az egész project kap verziószámot vagy a file-ok külön-külön?
Igazából engem az érdekelne, hogy ha van egy project, ami kint van élesben és én fejleszteni akarok rajta localhost-on, akkor a verziókövetés révén tudjam, hogy az új verzióhoz milyen file-okat kell feltennem az éles szerverre (pl. csinálok egy új modult az odalhoz, ami áll php, js, css stb. file-okból és ha pl. módosul a lib_general.php-m, akkor azt 2 hét múlva ne felejtsem el felmásolni az éles szerverre, amikor feltszem a kész fejlesztést).
Ezt lekezeli az svn
SVN esetén globális verzószám van
Amit szeretnél, arra teljesen jó az SVN. Arra érdemes figyelned, hogy érdemes egy tagban "nyilván tartani", hogy melyik verzió van kint az éles szerveren. Ha így jársz el, akkor mindig meg tudod csinálni, hogy ebbe a LIVE tagba teszed be (merge-eled) a LIVE tag és trunk közti különbséget, ami az utolsó élesítés óta történt összes fejlesztést jelenti. De vannak ehhez toolok is, amik megmutatják ezt a különbséget, és vizuálisan el tudod dönteni, hogy a változások közül miket teszel ki élesbe.
Üdv,
Felhő
Proba
SSH-n hozzafersz a serverhez?
Megoldható
Én is
Én egyelőre más lehetőséget nem nagyon látok, mert én lokálban is úgy fejlesztek, hogy vmware-ben fut egy gentoo, és ssh-n csatlakozom rá...
Azt nem tudom, hogy lehet megcsinálni, hogy commit után valahol automatice az update-elt (vagy HEAD) revision muzsikáljon, ha erre van tipp, én is örömmel venném!!!
Ezt találtam
http://svn.haxx.se/users/archive-2005-10/0675.shtml
Tééényleg
simán
Az SVN-t érdemes úgy kialakítanod, hogy a truk-ban folyik a fejlesztés, és van mondjuk egy LIVE taged, ide kell azt becommitolni, aminek ki kell kerülni az éles rendszerre. Így a trunkban tudtok többen együtt dolgozni, anélkül, hogy egyből kikerülne minden az éles rendszerbe, és akár így az is megoldható, hogy pl. nem mindenkinek van joga kódot élesíteni. Az elég fontos, hogy deploy mechanizmus az programozottan történjen, és a legjobb, hogyha automatikusan vissza lehet állni az előző verzióra. Azt is meg lehet csinálni, hogy pl. a trunk tartalma látható egy test domain alatt, így könnyen lehet élestés előtt tesztelni a kódot.
Üdv,
Felhő
Automatizmus
Esetleg van erre (FTP upload) valahol kész hook script?
Hook script
kicsit pontatlan
Egyik megoldás, hogy a hook scriptben tudod, hogy mely fájlok változtak meg, ezeket egyszerűen felftp-zed, persze megspékelve megfelelő hibakezeléssel. Szerintem így érdemes csak megközelíteni, különben ha teljes projektet töltöd fel mindig, akkor egyre lassabb lesz az élesítés.
Másik megoldás, hogy kibulizod az rsyncet. Mit jelent amúgy, hogy az SSH le van limitálva? Az FTP-s megoldással szemben ez lényegesen robosztusabb megoldás, több előnnyel is bír.
Üdv,
Felhő
Fáradt vok
Az rsync nem fut daemonként és SSH-ból csak pár parancsot tudok indítani, annyit tesz.
DB verzió követés
Üdv,
Felhő
rsync
rsync sajna nincs, ha lesz akkor is csak reverse (tehát a szerverről az én gépemre); most próbálom kiharcolni.
szerk: Helyesen indulok ki abból a feltételezésből, hogy rendesen megtervezett és normalizált adatbázis esetén nem nagyon van szükség hozzányúlni már meglevő táblaszerkezetekhez?
FTP
egy kis szkriptelés
Nálunk az alábbi szitu van:
- mindenki lokálban fejleszt (lokál webszerveren, apache, php, mysql, eclipse)
- mindeki folyamatosan kommitolja a munkáit, azaz mindekihez eljut a fejlesztés eredmény
- amikor közeledik egy olyan státusz, amikor élesítenénk a kódot, akkor általában körbeteszteljük a kódot, ha kell javítunk stb.
- amikor mindenki bólint, hogy mehet, akkor csinálunk egy exportot az éles könyvtárba a szerveren
Technikailag minden ssh alapon megy, kulcsos authentikációval (mindenkienk saját loginja van a szerverhez, elkülönüljenek az egyes szerkesztők munkái)
a putty és plink segítségével egész jól lehet ezt kezelni, pl. ha exportálni akarunk, akkor elég egy parancsot futtatni a lokál gépen:
Az is jó tipp, amit Felhő adott, egyszer azt is kipróbáljuk. :)
Most vezettünk be éppen egy plusz subdomaint, ahol a fejlesztés eredményét lehet követni az egyes éles exportok között, de itt is manuálisan exportálunk. Ez ahhoz kell, hogy azok a kollégák is hozzáférjenek a kódhoz, akiknek nincsen lokál fejlesztőkörnyezete, illetve a levelek feldolgozását is biztosabb a szerveren is tesztelni, nem csak lokálban.
Sőt, a tesztelés és designolás könnyítésére készítettünk egy olyan relatív szabadon másolható csomagot, ami tartalmazza a webszervert, adatbázist és a forráskódot (ebben az esetben tortoise svn-el oldják meg a forráskódok frissességét).
Üdv:
Barna
inkozisztencia
Esetlg az pl. lehet egy megoldás, hogy az export megy egy timestamp nevű könyvtárba, majd amikor készen van, akkor a docroot (ami egy symlink az előző export timstemp könyvtárára) átáll az új könyvtárra. Ennek még annyi előnye is van, hogy nagyon egyszerű egy korábbi verzióra visszaállni, ha valami para lenne.
Üdv,
Felhő
503
nem mindig teheted meg
Üdv,
Felhő