git repok szinkronba hozása
Sziasztok!
Git-ben sajnos még mindig tapasztalatlan vagyok. Szeretnék ezen javítani, ha lehet gyakorlati alkalmazásokon keresztül. Addig eljutottam, hogy sikerült godaddy-nél beállítanom a szervert, hogy a push és minden más frankón működjön a gittel. Most egy oldalt szeretnék migrálni erre a szerverre. Sajnos voltam olyan bárgyú, hogy felmásoltam a fájlokat ftp-vel, ez az én feltöltésemmel 2-3 órát is igénybe vett. :S
Most valahogy úgy szeretném szinkronba hozni a szervert az itthoni repommal, hogy bizonyos fájlok ne vesszenek el. Vannak képek, amiket a felhasználók töltenek fel, illetve vannak éles szerverre jellemző konfig beállítások is bizonyos mappákban. Ezeket valahogy ignorálni kéne a push alól. Az összes többi fájlt tőlem felülírhatja az első push, elvileg ugyanaz, mint ami az itthoni repoban is van... Szerintetek, ha az itthoni változaton beállítom a .gitignore-ban, akkor békén fogja hagyni őket?
■ Git-ben sajnos még mindig tapasztalatlan vagyok. Szeretnék ezen javítani, ha lehet gyakorlati alkalmazásokon keresztül. Addig eljutottam, hogy sikerült godaddy-nél beállítanom a szervert, hogy a push és minden más frankón működjön a gittel. Most egy oldalt szeretnék migrálni erre a szerverre. Sajnos voltam olyan bárgyú, hogy felmásoltam a fájlokat ftp-vel, ez az én feltöltésemmel 2-3 órát is igénybe vett. :S
Most valahogy úgy szeretném szinkronba hozni a szervert az itthoni repommal, hogy bizonyos fájlok ne vesszenek el. Vannak képek, amiket a felhasználók töltenek fel, illetve vannak éles szerverre jellemző konfig beállítások is bizonyos mappákban. Ezeket valahogy ignorálni kéne a push alól. Az összes többi fájlt tőlem felülírhatja az első push, elvileg ugyanaz, mint ami az itthoni repoban is van... Szerintetek, ha az itthoni változaton beállítom a .gitignore-ban, akkor békén fogja hagyni őket?
Btw. közben az a fantasztikus
Na most az a gyanúm, hogy egy
Szóval a fejlesztések push-al mennének fel a környezet specifikus fájlok kivételével, a backupot meg pull-al le lehetne rántani. Na most itt vagy git branch-ek jönnek be a témába, vagy két eltérő build-et kell csinálni az éles és a fejlesztői változathoz, elég tájékozatlan vagyok mindkét témában :S Ti hogy csinálnátok?
Én a user tartalmakat
.gitignore vagy .git/info/exclude
Azért az csekkold le előtte, hogy nem szerepelnek-e már az érintett fájlok az indexben, mert akkor nem ér semmit az ignore.
Szerepelnek, de nem is így
Development és production az
Nem csak a "branch"(??? vagy HEAD??) kell hozzá? Rég volt, lehet, hogy én emlékszem rosszul.
De, csak én ilyen szinten nem
re
Jenkins, amibe bele szeretnék
rsync
Ok. Amúgy szerintem
Szóval elvileg lehet külön ágat csinálni környezetenként, és a megfelelőről frissíteni az adott szervert. Elsőnek ennek járok utána, aztán a deploy-os megoldásnak. Egy sima git ignore + rsync a backup-nak pl elég egyszerű megoldás lenne...
megoldhato
mi egyebkent tag-elni szoktunk olyan meloknal ahol nincs folyamatos fejlesztes, es mindig az utolso tag amit kuldunk a production szerverre.
ahol folyamatosan megy a fejlesztes ott pedig feature brancheken dolgozunk, amit idonkent merge-elunk a masterba es a masterbol idonkent frissitjuk a production servert.
A gitrol egyebkent ennek a sracnak az irasai/eloadasai erdekesek: http://zachholman.com/
Ezzel valami újat mondtál.
Nem úgy kellene működnie, hogy a branch kb. az egyes fejlesztési szakaszokat jelenti?
branchek
Használhatunk ágakat az alkalmazás egyes szintjeiről. Például dev, staging, hotfix, production. Ezek az alkalmazás különböző rendszerekre való kikerülését mutatják.
Itt egy viszonylag komplex
Nyilván ez nem szentírás, a szerzőnek bejött, másnak más jön be.
Érdekelne, hogy egész
A feature meg bugfix ágak mikéntjét azt egyébként értem, csak próbálgatom a git határait...
..
Es mint ahogy fentebb is irtam, sokan sokfelekeppen hasznaljak a DVSC-t, ugyhogy hasznalhatod akar kornyezeteknek is a brancheket.
Ja, közben én is rájöttem,
Pl egy php-nél vagy js-nél deploy-ra sincs igazán szükség, legalábbis teszt szerveren...
re
A fejlesztesi szakaszokat inkabb a tag-ekkel szokas jelolni(v0.1, v0.2, stb).
De sokan, sokfelekeppen hasznaljak a DVSC rendszereket.
Poetro elég jól megfogalmazta
ugyanarra gondoltam en is,
Összeállt a kép.Kell
Kell csinálni minden környezethez 1-1 branch-et, és arra mergelni rá az aktuális fejlesztéseket egy olyan ágból, ami nem tartalmazza a konfig fájlokat, feltöltött képeket, etc... Az egyik ilyen ágat szinkronban lehet tartani a szerverrel, így a backup is működni fog. Ha szükség van buildre is, mert pl javascriptnél össze kell csomagolni egy fájlba az osztályokat, akkor a kimenetet be lehet tenni egy külön ágba, vagy egy külön repoba, nyilván ilyenkor ez az ág vagy repo lesz szinkronban tartva a szerverrel. A szinkronban tartást és a build-et egyébként meg lehet oldani hook-okkal.
off:
Nem is nagyon értem, hogy ezek a build rendszerek miért annyira elterjedtek... Tök felesleges xml-ben megadni dolgokat, ha egyszer le tudja programozni őket az ember, és ugyanúgy meg tudja hívni őket git hook-ból. Majd utánanézek ennek is.
Azt hiszem összedobok egy
Belefutottam még egy
Nyilván nekem az lenne a jó, ha ezek az "egyéb változások" érintetlenül maradnának. Ha ez nem így történik, akkor mit javasoltok?
A kérdés az, hogy amikor
Ha valami nincs még kommitolva, akkor nem létezik a verziókezelőben, ergo nem lesz push-olva. Ugyanakkor a helyen, ahova a push érkezik keletkezhetnek conflict-ok pont amiatt, hogy az ott levő változások nem kompatibilisek a változásokkal.
Hát ez nem egy túl konkrét
verziókezelés vs. juzer tartalom
Csak plusz egy felesleges
A tárhely problémák is
A mergelés helyett biztosabb a rebase szerintem, ha a szerver konfigot külön ágon akarom cipelni... Tegyük fel, hogy módosítok a local config-ján, ilyenkor ha mergelni akarom a local-t a szerver config-jával, akkor merge collision lesz, amit persze fel lehet oldani, de az a fejlesztési időből vesz el. Helyette vagy mindkét konfignak külön ágat kell csinálni a master-ről, és mindkettőt mergelni a master változásaival, vagy a server ágat rebase-elni. Esetleg csinálni lehet egy-egy superprojectet, és a konfigurációs dolgokat azokban elhelyezni. A környezetenként egy-egy superproject, ill. az eredeti projekt modulba tétele tűnik jelenleg a legszimpatikusabb megoldásnak nálam.
rollback
Csinálok egy checkout-ot az
re
Most hirtelen ennyi jutott eszembe.
Egyelőre most ezek nem
További előny, hogy a