Git hub létrehozása Drupal oldal fejlesztéséhez - vitapost

The spam filter installed on this site is currently unavailable. Per site policy, we are unable to accept new submissions until that problem is resolved. Please try resubmitting the form in a couple of minutes.
Kategória: 
Leírás

Ez post tipikusan olyan dolgokat tárgyal, amik nincsenek kőbe vésve. NeverGone szerint már maga az, hogy "hub" zavaró a github.com miatt. Ez a rész szerintem ok, hiszen kvázi hidat hozunk létre sok sok developer és a public project között.

Úgyhogy vitassuk meg, hátha kisül belőle valami okosság!

A sztori a következő: Lelkesen belevágtam a git-be néhány héttel ezelőtt. Küzdöttünk rendesen, ilyen workflow, olyan branchelés, így submodule, rengeteg git reset --hard. Szóval szépen összemelegedtünk, gyűltek a linkek del.icio.us-ban, mentek a commitok, egészen követhetővé vált a fejlesztés, és már kétszer is volt, hogy egy bugfixnél a git log segített.

Szóval a git jó. De egy benga állat, ezerfejű szörny, és amikor azt hiszed, hogy már eléggé megszelidítetted, dolgozik, mint egy kezesbárány, megfordul, és a fejedre szarik.

Na valami ilyesmi volt most velem is. Nagyon szépen eldolgozgattam otthon, meg a githubról és a git.drupal.orgról oda-vissza mentek a dolgok, ahogy kell. Aztán egyszer csak ki kellett volna pakolni, ami eddig volt. Az emberfia ugye nem azért használ gitet, hogy utána rsyncel tologassa repóstól commitostól a dolgait, úgyhogy eljött az idő, hogy végre a közös pushnak pull legyen a vége.

Na és akkor itt érdemes tisztázni valamit: Alapdolog, ám sokáig nem volt nyilvánvaló. Olyat sosem csinálunk, hogy egy munkakönyvtárba tolunk fel (git push) dolgokat. Munkakönyvtár az, ahol a file-ok, mappák vannak. Gitben létezik egy olyan csoda, hogy bare repository. Ebben nincs egy deka munkafile sem, csak a githez kapcsolódó dolgokat, commitokat, brancheket, objektumokat tárolja. Ennek a bare repositorynak a feladata az ide-oda szinkronizálgatás.
Edit: Én lépten nyomon azzal találkoztam, hogy nem jó non-bare repositoryba pusholni, NeverGone szerint lehet ez indokolt, illetve praktikus, illetve meg is van rá a megfelelő kezelés.

Szóval röviden néhány fogalom:

Repository (általában): Tároló. Ez egy könyvtár, amiben van maga a drupal, a teljes kódbázis, modulok, képek pucérnőkről, ésatöbbi. A mezei drupal könyvtártól az különbözteti meg, hogy van benne egy .git könyvtár, és ebbe kerül minden varázslat, amit a gittel követünk el.

Bare repository: Ez maga a hub. Ehhez kapcsolódik a product site, a development site, és az összes developermaki (akik szeretik a banánt), akik a kódot gyúrják.

Local repository: Ez az én, te, stb, géped itt az orrod előtt. Letöltöd a drupalt, modulokat, dolgozol, teszel, és azt azt mondod, hogy git push, és huss, már kint is vannak az ügyködéseid. (ez az, ami nem olyan egyszerű)

Product repository: Ööö.. Hát ez sem így fog elterjedni a magyar nyelvben, de a lényeg a következő, hogyha beütöd a böngészőbe, hogy http://enkezemmunkaja.hu, vagy http://dev.ketkezemunkaja.hu, akkor te az ebben a repositoryban lévő kódbázis alapján látod a dolgokat.

Branch: Fejlesztői ág, ezt tekinthetjük hivatalosnak is magyarul. De ez így elég absztrakt, szóval nézzük meg egy kicsit közelebbről. Elkezdünk egy drupal munkát amiből előbb utóbb éles oldal lesz. De ahhoz fejleszteni kell az oldalt.
Sasszemmel már a tipográfiából kiszúrhattad, hogy meg is van a két branchünk, nevezzük ezeket szépen magyarul masternek, és develnek.
Ahogy töltögeted a modulokat, tekergeted a cckt, views, csinálod a sminket, addig csak fejlesztesz, gitül szólva a devel branchben dolgozol. Amint azt mondod, hogy kösz szépen, ez már itt elég jó, mehet élesbe, azt mondod a devel branchnek, hogy légy master, vagyis amit eddig csináltál a develben, átkerül a masterbe, ezt a folyamatot gitül mergenek hívják.
Ezután visszaválthatsz develbe, kipróbálgathatsz új dolgokat, és ha netán valami szuperjót sikerült összehozni, akkor a devel ágadat megint belemergeled a masterbe, tehát élesíted a fejlesztésedet.

És egy elméleti ábra, amit innen szedtem:

Ahogy elnézem, ez lesz az a post, ahol a bevezető hosszabb, mint a lényeg..

Merthogy ez a párbeszéd nem is olyan egyszerű.

Először kell hozzá ssh hozzáférés a szerveren, és nem árt valami emberi oprendszer a saját gépeden, ebbe a kategóriába a W betűvel kezdődő és indowsra végződő oprendszerek nem tartoznak bele.
Edit: Nem feltétlenül kell hozzá ssh hozzáférés, legalábbis a git parancsok használatához. Viszont a beállításokhoz, inicializáláshoz nem árt, ha van. A gitnek van saját protokollja, ami elmegy HTTP-vel

Tegyük fel, hogy a sajátgépeden itt fogunk dolgozni:
~/public_html/munka - ebben kerül a drupal telepítés.

A szerveren a van egy dev, és egy éles könyvtár

~/dev.munka/public_html
~/live.munka/public_html

Most a leszedjük, branchelünk, stb dologba nem mennék bele: http://drupal.hu/tippek/gitreferenciasitebuild itt szépen van írva minden. A mi szempontunkból az a lényeg, hogy van egy branch, a devel, amiben gyűjtünk mindent, és egy master, ami az éles lesz.

Akkor kezdjük a szerveren.

Csináljunk könyvtárat a hubnak:

[geshifilter-bash]cd ~ mkdir repos //ide fogjuk gyűjteni az összes hub könyvtárat mkdir repos/munka.git //ez a mostani munkánk hubja lesz cd repos/munka.git git --bare init //ezzel meg azt mondjuk meg a gitnek, hogy ez a repo bare lesz[/geshifilter-bash]

Na drupalosok öröm van, mert kéremszépen gitéknél is hookolhatunk kedvünkre! Gitnél a hookat kvázi bash szkriptek jelentik. Nézzünk be a .git/hooks könyvtárba. Ilyenek vannak pl, hogy post-commit.sample. Semmi más dolgunk nincs csak átnevezni a hookot post-commit -ra, és beleírni a bash szkriptünket.

Bare reponál az a célunk, hogyha valamelyik developermaki kommitál, akkor az kerüljön ki szépen a devel, vagy a master oldalra.

Ehhez a post-update hookot kell megvalósítanunk a repos/munka.git/.git/hooks könyvtárban, és hogy zsernonek is kicsit hadd repdessen a szíve, mert ilyeneket meg tőle tanultam, legyen az, hogy

[geshifilter-bash]vim post-update[/geshifilter-bash]

És beléje a kód, ami iszonyat randa, de a minimál bash tudásomból kb ennyire futotta, szóval patches are welcome! :)

[geshifilter-bash]branch=$(git symbolic-ref HEAD) if [ "$branch" = "refs/heads/devel" ] then cd $HOME/dev.munka/public_html || exit unset GIT_DIR git pull hub devel else cd $HOME/munka/public_html || exit unset GIT_DIR git pull hub master fi exec git-update-server-info[/geshifilter-bash]



És jöjjen egy update, mert viharba kerültem: Szóval a bare repoban a git symbolic-ref HEAD a repoban aktuális branchet mutatja, nem pedig azt, ahonnan a push jött. Egy tesztkörnyezetben próbáltam a szinkronizálást, és arra a következtetésre jutottam, hogy feltételezve, hogy minden push után szinkronizálás történik, nem lehet gond abból, ha a push branchétől függetlenül mindkét munkakönyvtár frissítve lesz. Max egy Already up to date-et kapunk a másik branchtól.

Tehát ezzel tudunk push branchtól függetlenül frissíteni a repokat, ami nagyon nem tetszik a nyilvánvalóan felesleges pull miatt, szóval jó lenne valami feldolgozható feltételt találni.

[geshifilter-bash] cd $HOME/dev.munka/public_html unset GIT_DIR git pull hub devel cd $HOME/munka/public_html git pull hub master exec git-update-server-info[/geshifilter-bash]




Most állítsuk irányba a fejlesztői oldalunkat:
Ha még tök üres a könyvtár, akkor:

[geshifilter-bash]cd ~/dev.munka/public_html git init touch index.php git add . git commit -am "Initial commit" git checkout -b devel //létrehozzuk a devel branchet és át is lépünk bele git branch -d master // töröljük az eredeti master branchet, mert ide nem kell[/geshifilter-bash]

Ha már dolgoztunk gittel a szerveren, és ugyanúgy össze-vissza, mint én, akkor már van kész repositoryk. Ekkoris törölhetjük a felesleges brancheket, valahogy tisztább, szárazabb, boldogabb érzés.

Folyt:

[geshifilter-bash]git remote add hub ~/repos/munka.git //hozzáadjuk a hubot git remote show hub // nézzük meg, nem csesztünk-e el valamit * remote hub URL: /home/userneved/repos/munka.git git push hub devel // és szépen feltoljuk, amit eddig műveltünk[/geshifilter-bash]

Mivel most a dev könyvtárban vagyunk, lehet olyan igényünk, hogyha valamit közvetlenül a szerveren commitolunk, az kerüljön fel a hub-ra (sosem lehet tudni..) Erre a már emlegetett post-commit hookot használjuk, és legyen az benne, hogy:

[geshifilter-bash]#!/bin/sh git push hub[/geshifilter-bash]

Nos, a szerveren nagyjából készen vagyunk, még dettó ugyanezt meg kell csinálni az éles oldal könyvtárában, csak természetesen odafigyelve a branchekre, hogy devel helyett mastert használjunk, és még véletlenül se a mastert töröljük.

Akkor vissza sajátgépre. (Nekem meg vissza a post elejére, mert pl már gőzöm sincs, hogy hoztunk-e létre repot, stb..)
Aham, meg is van, szóval játszuk azt, hogy van már master, és devel reponk itthon.

Ehhez először tudatnunk kell a gittel, hogy nekünk van ám más helyen is reponk, nem csak itthon.

[geshifilter-bash]git remote add munka ssh://userneved [at] teoldalad [dot] hu/home/userneved/repos/munka.git git fetch munka // Ezzel kérdezzük le, hogy miújság a szerveren, milyen branchek vannak git branch -r // ezzel megnézzük, milyen távoli repokat kaptunk az előbbi git fetch-chel[/geshifilter-bash]

Elvileg ilyeneket kéne látnunk:
[geshifilter-bash]remotes/munka/devel remotes/munka/master[/geshifilter-bash]

Akkor passzítsuk őket:
[geshifilter-bash]git branch --set-upstream devel remotes/munka/devel git branch --set-upstream master remotes/munka/master[/geshifilter-bash]

És ezzel készen vagyunk. Mehet a git pull, és a git push, attól függően, hogy melyik branchben vagyunk, oda fog kerülni az oldalon.

Na és akkor a warningok:

Nem győzném felsorolni, hogy milyen forrásokból, honnan szedtem ezeket össze. Az egész gitesdi még nem az stabilan kiforrott dolog drupal körökben, jómagam azért követek pár kezdeményezést.

Jelenleg egy orbitális öntökönszúrást gyógyítottam ezzel a módszerrel, élesben egyelőre csak devel branchet szinkronizálok, azzal szépen működik. A bash szkripteket localhoston kipróbáltam, master szinkronizációt viszont kvázi élesben még nem használok, ez a project nincs még abban a stádiumban.

Szóval csak óvatosan! És akár kommentelni is lehet.

Igazából itt dobnám be azt, hogy akár ki is tárgyalhatnánk ezt a témát keményen. Ahogy már említettem, patches are welcome, a saját tapasztalatokból össze is hozhatnánk valami értélhetőt!

Az utólagos editekért thx NeverGonenak (és majd jönnek sorra a többiek)!


Hozzászólások

versteh ich nicht!

versteh ich nicht!

Kommen wir ohne Umschweife

Kommen wir ohne Umschweife zum überlegenen Sieger, der mich am 25.

Gott, macht mich das … am 15.

Gott, macht mich das … am 15.

Für den ersten Eindruck

Für den ersten Eindruck findest Du auf der Seite noch ein paar Fotos.

Ich konnte sehen wie ihre

Ich konnte sehen wie ihre Zungen miteinander spielten und mir rann der Schweiß dicke dicke titten schon über die Stirn.

Sie können auch ein

Sie können auch ein russischer Sprache > verfasstes Schreiben den Leiter der Innenverwaltung der Stadt > Moskau, Generaloberst der Miliz Wladimir Wassiljewitsch Pronin, richten.

Inhalt der Webpräsentation.

Inhalt der Webpräsentation.

Jeden Tag, ohne Ausnahme.

Jeden Tag, ohne Ausnahme.

Das muss sich einmal vor

Das muss sich einmal vor Augen führen.

Aber es klappte und jetzt

Aber es klappte und jetzt fiel mir wieder die nasse Stelle im Schritt ein.

哞 哞 哞! Die kleine Kuh Malibu,

哞 哞 哞! Die kleine Kuh Malibu, 马里布的小奶牛, Malibu, Malibu, 在马里布,在马里布, da lebte eine kleine Kuh 那儿曾经住着一只小奶牛 Malibu, Malibu, 在马里布,在马里布, lebte eine kleine Kuh.

weiß ich noch, der

weiß ich noch, der Grundschule hatte ich mal Idee während des Unterrichts, ich weiß gar nicht wie ich darauf .

Der junge Mann legte viel

Der junge Mann legte viel hinein; die zwei blauen Augen, diesem Abend ihm zu Ehren hell, verbargen Schätze, Schätze des Geistes und des Herzens, reich wie alle Herrlichkeiten Roms, und als er die Gesellschaft verließ - , da war er ganz weg - weg das Fräulein.

Oh my goodness! Incredible

Oh my goodness! Incredible article dude! Thanks, However I am encountering troubles with your RSS.
I don't know the reason why I am unable to join it.
Is there anybody having the same RSS issues? Anyone that knows the answer
can you kindly respond? Thanks!!

Zum Glück war er und

Zum Glück war er und busenbilder kraftvoll.

etwa die gleichen Verluste

etwa die gleichen Verluste ergeben sich beim Vergleich mit dem Durchschnitt der entsprechenden Quartalszahlen der letzten Jahre.

LEONETTO komm' ich endlich

LEONETTO komm' ich endlich fort!

Ich fühlte seinen warmen Atem

Ich fühlte seinen warmen Atem meinem Kräuselhaar.

Ich Woche wird Diese ganzen

Ich Woche wird Diese ganzen dem Institut hren wurde.

Thanks for finally talking

Thanks for finally talking about >Szántó Gábor Drupal oldala - Git hub létrehozása
Drupal oldal fejlesztéséhez - vitapost

hab es forher mal getestet

hab es forher mal getestet und hab nur gestaunt das sieht echt aus !!!

Schuhfetisch ist heiß und

Schuhfetisch ist heiß und macht Spaß.

Im Auto grinste mich mehrmals

Im Auto grinste mich mehrmals hämisch einem lichten Moment bemerkte ich wohl auch, wie der Mann mir gegenüber erotische maenner seine Mundwinkel zynisch verzog.Ich weiß nicht, woher ich den Mut nahm, mich auch noch umzudrehen.

Sie schien sich wahnsinnig

Sie schien sich wahnsinnig wohl dabei zu fühlen, wie gleich zwei Mädchen abwechselnd ihr süßes Höschen zur Seite schoben und ihr Mäuschen fleißig vernaschten.Der Mann vom Reiterhof.Mit einem unwahrscheinlichen Orgasmus überraschte mich .

Soweit dieser Absatz aus

Soweit dieser Absatz aus meiner Lebensgeschichte .

Also, nicht zögern und rund

Also, nicht zögern und rund um die Uhr prickelnde Tuchfühlung aufnehmen mit den verführerischen Webcam Girls, die dir alles bieten, was du schon immer beim megageilen Webcam Sex privat erleben wolltest.

Geile Musik, ein Ventilator

Geile Musik, ein Ventilator und ein Stuhl mehr brauche ich nicht für einen heißen Strip.

Aktiv und nett sein,

Aktiv und nett sein, freundschaftlich miteinander umgehen, sich nicht anöden Das sollten die Kennzeichen des Freizeit- Stammtisches sein.

Er geschah aber zu ihrem

Er geschah aber zu ihrem Unglück nicht alles nach Plan.

Leider war Karsten viel zu

Leider war Karsten viel zu schnell fertig heimlich onanieren.Der Leib war heiß, heimlich aufnahmen der Mann im Knast.

Der Vorteil ist aber, dass

Der Vorteil ist aber, dass jede nur erdenkliche Hilfestellung bekommt.

Die abgemahnten

Die abgemahnten Anschlussinhaber erhalten für jedes einzelne Werk eine eigene Abmahnung.

Dar uber haben obg.

Dar uber haben obg.

Ich suche einen netten Mann

Ich suche einen netten Mann der älter ist als ich und der gewisse Dominanz den Tag legt, aber nicht zu viel… Auf der anderen Seite bin ich eine eine süße verschmusste Frau, die Zärtlichkeiten genießt und gern wieder gibt.

Vielleicht dürfen Sie einmal

Vielleicht dürfen Sie einmal reinschnuppern?

AIS : Wie gesagt AKA : Auch

AIS : Wie gesagt AKA : Auch bekannt als unter… : schnell wie möglich; Auch wenn die Abkürzung im Internet häufig anzutreffen ist, ist sie dort nicht entstanden.

Im Prinzip schlagen

Im Prinzip schlagen Bodybuilder, die das Wachstumshormon der Aufbauphase einsetzen, zwei Fliegen mit einer Klappe.

Ich wollte es auf den big

Ich wollte es auf den big busen Versuch ankommen lassen und vereinbarte einen Termin.Zarte Verführungen.

Diese Techniken haben mit

Diese Techniken haben mit Fotografie viel zu tun wie Schreibmaschinenreparatur mit Literatur.

Hey Mann, ich habe entdeckt,

Hey Mann, ich habe entdeckt, wie einen tierisch geilen Abgang bekommen kann.

Übst du geheime Künste, die

Übst du geheime Künste, die Verbrechen?

Many thanks for sharing this

Many thanks for sharing this terrific internet site.

Immer, wenn mein Pfläumchen

Immer, wenn mein Pfläumchen juckt, brauche ich einen Harten, der mich stösst.

Ich kann dir versprechen,

Ich kann dir versprechen, dass es garantiert nie langweilig bei uns wird.

Davor stand ein Herr mit

Davor stand ein Herr mit heruntergelassener Hose und Anni blies seinen stramm stehenden Schwanz ordendlich.

Szántó Gábor Drupal oldala -

Szántó Gábor Drupal oldala - Git hub létrehozása Drupal oldal fejlesztéséhez - vitapost
wholesale nfl jerseys china http://www.nikejersey.org/nike-nfl-jerseys-c-1

Szántó Gábor Drupal oldala -

Szántó Gábor Drupal oldala - Git hub létrehozása Drupal oldal fejlesztéséhez - vitapost
roger vivier sale http://www.vivierparis.com/roger-vivier-sandals-c-4.html

Manchmal ist es wichtig, ein

Manchmal ist es wichtig, ein fremdes Handy suchen zu können.

Many thanks! This is an

Many thanks! This is an awesome web-site!

Ich brauche es, verruchte

Ich brauche es, verruchte Sexdate vereinbaren zu können und neue Bumskontakte zu finden.

Hozzászólás

A mező tartalma nem nyilvános.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.
  • Engedélyezett HTML elemek: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <del> <img>
  • A webcímek és email címek automatikusan linkekké alakulnak.
  • A sorokat és bekezdéseket a rendszer automatikusan felismeri.
  • Engedélyezett HTML elemek: <a> <blockquote> <br> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <li> <ol> <p> <span> <strong> <ul>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <mysql>, <php>, <python>, <ruby>, <sql>. The supported tag styles are: <foo>, [foo].
  • Minden email cím át lesz alakítva ember által olvasható módon, vagy (ha a JavaScript engedélyezett) ki lesz cserélve kattintható, de biztonságos hivatkozásra.