Sziasztok!
Tanácsokra, ötletekre vágyom...
Szerkesztés: aki verziókövető rendszert akar ajánlani, az legyen szíves olvassa el, hogy mi a kérdés, és ha még mindig verziókövetőt ajánlana, akkor ne csak a nevét írja le, hanem azt, hogy miben lesz az jobb, mint a most használt verziókövető rendszerem! Köszi
A következő a feladat: fejlesztek*, és szeretném több gépre replikálni az egész mindenséget, biztonsági célból + ha mondjuk egy másik gép van nálam, azon is lehessen dolgozni.
* (hobbiból, meg az öcsémnek egy kis cuccot, de akár be is jöhet valami komoly munka).
Oracle az adatbázis, Oracle application expressben íródnak a "programok". +PL/SQL időnként (most épp nincs)
Első gép állandóan interneten lóg, (hívjuk szervernek) oracle folyamatosan fut (leállítható, de nem akármikor). Linux.
A másik kettő 1-1 laptop, az egyik linux, a másik windows, ezeken az adatbázist csak akkor indítom el, ha épp ezzel akarok vacakolni.
A következő módon működne a tökéletes megoldás:
linuxos laptopon fejlesztek, fejlesztés végén azt mondom, hogy új (napi) verzió kész, elindítok egy scriptet, ami eltárolja mondjuk egy bzr-ben a változásokat, és szinkronizálja a szerverrel.
A szerveren, ha nem muszáj, az adatokat nem bántja (feltételezve, hogy nem törlök mondjuk táblákat, oszlopokat... ha igen, majd kitalálom, mi legyen kézzel)
Windows laptopon ha vacakolok, onnan a linuxos laptopra lenne jó áthozni a dolgokat. Nem feltétlenül gombnyomásra, de lehetőleg foolproof módon. Az adatok és a program egyszerre csak az egyik laptopon változik.
Korábban kézzel ment a szinkronizálás 1 laptop és a szerver között, így:
PL/SQL forrást, dokumentációt és kézzel készült apex exportot, séma struktúra exportot (adatok nélkül, és kézzel itt-ott szerkesztve), meg néha adat dump xml-t bazárba tettem a laptopon.
Laptopról (bzr repóról) rsync-kel készült időnként mentés.
Telepíteni a másik gépre egy shell script futtatásával lehetett - ez scp-vel feltolta a scripteket, sqlplus-szal eldobta a sémát, újraépítette, az apex programot meg kézzel importáltam a webes felületről.
Ez így ment... de a kézi matyizást utálom, és ha nem csak egy program lesz, akkor elég sok a hibalehetőség. Meg ha már élesben megy, vannak adatok, akkor ez így nem mehet, nem dobhatom el a sémát.
Van több ötletem, de még egyik mellett se tettem le a garast.
Lehetne (biztonsági mentésként) adatbázis mentést készíteni (offline mentést egyszerűen, pl. éjjel scriptből a folyamatos üzemű gépen). Ez jó, mert mindent ment, de csak mentésre jó, másra nem. Lehet, hogy ezt megcsinálom (ha már élesben megy), de addig biztos nem.
Lehetne egyszerű dumpot készíteni, ezzel elméletileg bármiféle adatot és struktúrát mozgathatok. Meg biztonsági mentésnek is jó. Nem valószínű, hogy érdemes lenne a teljes adatbázisról dumpot készíteni, inkább sémánként - pl. minden projekt külön sémában lakik. De ez is csak addig jó igazán, amíg nem kezdi mondjuk öcsém használni a programját, mert akkor ugye már két helyen változhat a cucc.
Esetleg így lehetne a windows gépről a linuxosra, (és mielőtt a windows-ost viszem, azelőtt fordítva) vinni a fejlesztéseket.
Windowst nem tudom, lehet-e scriptelni, de mondjuk kézzel azt mondani, hogy eldobom a sémát, új séma, majd imp, az nem kibírhatatlan. (A win gépet egyébként se használom sokat, mondjuk heti 0-2 alkalommal maximum)
Készíthetnék install scriptet, ami adott verziók közötti séma struktúra különbségeket sql scripttel lemásolja a másik helyre. Ha nem szalad el velem a ló, akkor lehet sémákat összehasonlítani, és diffet készíteni programmal, szóval ez működhet, de erre sem ismerek pl. automatikus módszert, csak olyasmit, hogy elindítok egy toad-ot, vagy egy sqldevelopert, és a menüből kiválasztom... én meg automatizálni szeretném, ha lehet.
Szóval most valami ilyesmi lenne az ötletem:
-ha a win gépet viszem, akkor linuxos gépen dump, pendrive-ra, win gépbe erről betöltöm, dolgozom vele, amikor hazaérek, akkor meg fordítva, dump és import linuxos gépbe.
-linuxos gépen napi munka végén forrásfájlok, doksik, stb. bazárba, meg mondjuk egy automatikus dump sémánként külön (ez is bazárba). Szerverre bazár szinkronizálva, saját hobbiprojektek esetén dumpot egyszerűen be is tölthetem. Öcsém programjának sémáján meg mondjuk kézzel változtatok, kézzel töltöm fel a kiegészítő adatokat.
-szerveren nem fejlesztek.
Ez azért távolról sem optimális, de működhet. Kérdés, hogy van-e jobb ötlete valakinek.