Autor Zpráva
Webster.K
Profil
Zdravím všechny, na VPSku jsem si spustil git, apache s PHP a dalšíma a můj problém je v tom, že bych potřeboval nějakým způsobem repositář gitu promítnout na webu. Zkusím trochu upřesnit přesně to, co potřebuji.
Přes GIT jedu v několika vývojových větvých (vyvoj,test,produkce) z nichz vyvoj je u me lokalne, kdyz neco dodelam, odevzdam to na test, ozkousi se to a pak se to povysi na produkci. Muj problem je v tom, ze kdyz neco odevzdam na test, potreboval bych nejakym zpusobem na testovacim serveru otevrit soubor, kde se cely projekt nalézá (jde o webový projekt, takze se spousti pres index.php). Teď to řeším tak, že musim celou testovací větev k sobě stáhnout, nakopat do lokálního webserveru a v nem to spustit, coz proste v případě většího projektu, kdy k němu přistupuje více uživatelů není možné. Ví někdo jak tohoto docílit?
A teď moje pokusy, které jsem zkoušel. Našel jsem že pro něco takového se dá použít gitweb co se dá nějakým způsobem nakonfigurovat pro apache, bohužel vůbec netuším jak a to už jsem našel opravdu hodně návodu, jak na to... kdyby tedy někdo věděl, jak toto vyřešit, popřípadě jak to udělat klidně nějak úplně jinak, byl bych velmi zavázán. Prostredi je Debian 8.
Justýna
Profil
Hledáš git push deploy
Webster.K
Profil
To není uplně přesně to co jsem hledal :( můj cíl je aby aktuální větev se dala rovnou na serveru zobrazit aniž by se musela kamkoliv přenášet nebo s ní cokoliv dělat
juriad
Profil
Máš-li pod kontrolou svůj testovací server, pak asi hledáš jenkins.io. Viz www.uvd.co.uk/blog/configuring-jenkins-continuous-integration-server-to-work-with-git
Webster.K
Profil
Koukal jsem na to, ale pořád mi nepřijde, jako že je to ono :D možná to vysvětluju špatně :) a tedy to zkusím znova. Mám na svém serveru na kterém běží Debian nainstalovane git-core. Když tedy vytvořím nový git repositar, treba project.git a do toho odevzdám to, co aktuálně dělám. Řekněme, že jsem právě vytvořil soubor index.php který obsahuje vykreslení nějakého kusu PHP kodu. To odevzdám, je v repositari project.git a vse funguje jak ma...
Ted ale potřebuju, abych zavolal třeba server.cz/project a ten soubor.php se mi otevrel. Takze kdyz vytvorim na serveru novy repositar, treba project2.git, tak opet abych ho otevrel jako server.cz/project2 :) je mi jasny ze si pro kazdy projekt musim nastavit na apachi aliasy, coz problem neni, ale ve slozkach project.git a project2.git jsou jen slozky branches/hooks/info/objects/refs a par souboru. Resim tedy to co udelat jako mezivrstvu mezi repositarem a webovym serverem aby se to dalo spustit. A právě proto jsem hledal gitweb, který rovnou v repositari vytvořil složku gitweb do které se uložil nejaky config pro apache ale jiz ne nic, co by dokazal apache otevřit
Jan Tvrdík
Profil
Webster.K:
Normálně se to řeší, takže si napíšeš git post_recieve hook, který když uděláš push na server zkopíruje ty zdrojáky do nějaké složky, kam má přístup Apache.
TomášK
Profil
Pokud trváš na to, že to bude bez mezikroku, pak bych hledal git+fuse - něco, co z repozitáře vyrobí filesystém. Fuse je na kdeco, ale nevím, jestli je nějaký použitelný pro git. Použiješ-li místo toho hook, ušetříš si zřejmě spoustu starostí.
Webster.K
Profil
Jan Tvrdík:
Můj problém je že nedovedu rozchodit nic, co by zkopirovalo ty zdrojáky do nějaké složky kam má přístup apache :( S gitem bohužel v těhlech ohledech dělám poprvé v životě a vždycky mi sloužil jen k odevzdání a nic jsem s ním dále spojeného neřešil
Webster.K
Profil
Tak už jsem to dopracoval tak daleko že když něco odevzdám na server, tak se mi ve složce apache naplní datama co se odevzdávaj.. řeším ale jiný problém.. odevzdává se mi přes hook vždy jen první, uplně první odezvdání a né poslední a nejsem schopný nikde dohledat co tam má být... určitě checkout a nějaký přepínač, teď tam mám -f... nemužu to nikde dohledat :( ví někdo?
juriad
Profil
Checkout tě jen přesune na větev, ale na té větvi už jsi od minula.
Chceš provést git pull, který stáhne nové změny a posune tě dopředu.
Webster.K
Profil
No, nevysvětlil jsem to asi uplně správně. na serveru v repositáři mám soubor post-receive, který se vykonává pokaždé když se pushne něco do repozitáře a ten soubor se spustí. jeho obsah je:
#!/bin/bash
git --work-tree=/var/www/html/test --git-dir=/projects/project.git checkout -f
tenhle kus kodu do složky kam má přístup apache předá a vytvoří pracovní kopii, bohužel ale jen z prvního odevzdání na server (uplně to první co bylo odevzdáno). Takže když pokračuji ve vývoji projektu a odevzdám aktuální verzi, tak se script sice spustí, ale neaktualizuje soubory ve složce apache... protože to vždycky vezme jen z toho prvního, takže jakýkoliv nově přidaný soubor již není vidět


Tak už jsem to vyřešil... za to -f se musí dát ještě co že to má vlastne vytvořit, jako třeba master...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: