GIT_hooks - post-receive

ZAJDAN

GIT_hooks - post-receive
« kdy: 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





Re:GIT_hooks - post-receive
« Odpověď #1 kdy: 12. 09. 2012, 21:05:53 »
Také se přidávám o nakopnutí :)

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:GIT_hooks - post-receive
« Odpověď #2 kdy: 13. 09. 2012, 00:37:17 »
V hooku pro aktualizaci pískoviště:
Kód: [Vybrat]
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. Ten se stará o uzamknutí přístupu, vytvoření zálohy, aktualizace pískoviště, aktualizace databáze, 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.

Re:GIT_hooks - post-receive
« Odpověď #3 kdy: 13. 09. 2012, 09:24:25 »
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:
Kód: [Vybrat]
#!/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.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:GIT_hooks - post-receive
« Odpověď #4 kdy: 14. 09. 2012, 21:41:05 »
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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


Re:GIT_hooks - post-receive
« Odpověď #5 kdy: 14. 09. 2012, 22:09:11 »
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

Re:GIT_hooks - post-receive
« Odpověď #6 kdy: 14. 09. 2012, 23:36:27 »
Kód: [Vybrat]
#!/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.

Re:GIT_hooks - post-receive
« Odpověď #7 kdy: 14. 09. 2012, 23:42:17 »
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.