Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: ZAJDAN 16. 04. 2012, 19:45:00
-
čaute...
zajímalo by mne jak řešíte GIT hooky,...konkrétně bych potřeboval udělat post-receive hook tak aby když na server něco pushnu provedlo se na straně serveru pullnutí "nakopírování" do složky kterou mohu zobrazovat jako živej web pro vizual kontrolu
výpis větví:
git branch -a
* master
nette@castle:~$ ls
repos www
//adresář repos je pro git repozitář a adresář www pro zobrazovaní - do něj se snažím pullnout po každé když na server někdo pushne
-
Také se přidávám o nakopnutí :)
-
V hooku pro aktualizaci pískoviště:
echo "== Post receive =="
if [ -n $GIT_DIR ]; then
unset GIT_DIR
cd ..
fi
env -i git reset --hard
Pokud je složitější deployment, tak tam mám (v případě php) phing (http://phing.info). Ten se stará o uzamknutí přístupu, vytvoření zálohy, aktualizace pískoviště, aktualizace databáze (http://taco-beru.name/schema-manage), promazání tempu, případně testy, a odemknutí přítsupu.
Ve vašem případě by stačil z www udělat link do document_root v repozitáři, pokud nebazírujete na oddělení použitého kodu a repa. Nebo tam nechcete větší kouzla.
-
Já to řeším tak, že mám bare respository jmenowebu.git někde mimo webroot a v něm je takovýto post-receive hook:
#!/bin/sh
echo "*** Publishing new repository status into webroot ***"
GIT_WORK_TREE=/var/www/jmenowebu/ git checkout -f
Díky tomu nemusím mít zbytečně repozitář dvakrát a nemám jej umístěn ani ve webrootu, kde by mohl být přístupný z webu.
-
no ja to tehda nakonec take vyresil podobne:
#!/bin/sh
#echo "Server mirror updating!"
#GIT_WORK_TREE=/home/nette/www/erotika git checkout -f
#git --git-dir=/home/nette/www/erotika/.git pull #origin master
#echo "Server mirror updated successfully!"
cd /home/nette/www/erotika
env -i git pull
-
Perfekt. Díky za rady.
A jak řešíte oprvávnění? Soubory takto nahrané do /var/www/adresar mají skupinu a vlastníka Gitolite a prava 600
Ja bych je potreboboval spustit pod Apache
-
#!/bin/sh
echo "*** Publishing new repository status into webroot ***"
GIT_WORK_TREE=/var/www/jmenowebu/ git checkout -f
To je bezvanej fígl - a přitom taková blbost, jak říká klasik :)
Dík.
-
Perfekt. Díky za rady.
A jak řešíte oprvávnění? Soubory takto nahrané do /var/www/adresar mají skupinu a vlastníka Gitolite a prava 600
Ja bych je potreboboval spustit pod Apache
To asi zalezi na tom, co myslis tim "spustit pod apache". Spis jenom potrebujes, aby je apache mohl cist, ne? Tam zadny problem neni, soubory jsou stejne world-readable.
Pak by jeste slo pushovat pres ssh a do hooku si dat libovolne prenastaveni prav.