[MEGOLDVA]git post hook

Fórumok

Sziasztok!

Rakat leírást átnéztem, mind ugyanúgy mondja, nálam mégsem akar működni. Tuti, valami apróságot szúrok el.
Van egy git repo egy szerveren. Ezt a repot clone-oztam a fejlesztői gépre. A cél az volna, hogy ha pusholok, akkor egy post commit hook a www mappa alatti working copy-t is frissítse a szerveren.

A post-receive így néz ki az egyik leírás alapján:


#!/bin/bash

WORKDIR="/var/www/$SITENAME/content"
export GIT_DIR=$WORKDIR/.git
pushd $WORKDIR > /dev/null
git pull
popd > /dev/null

Csináltam egy tesztet, amiben letesz egy üres fájlt egy számára írható mappába, s a gond az, hogy le sem fut a post-receive push után.

Van valakinek ötlete?
Előre is köszönöm a segítséget!

Hozzászólások

Kezdjük az alapoktól. "ls -l /valahol/repo.git/hooks/post-receive" a szerveren mit ír ki?

Addig már eljutottam közben, hogy a .git/FETCH_HEAD hiányzott neki.
Leegyszerűsítettem a post-update-et:

#!/bin/bash

cd /www/frameworktest/public_html
git pull

Ha kézzel futtatom, akkor működik a cucc, frissíti a www alatti clone-t, de push-ra még mindig nem akar lefutni.

Ez így nem lesz jó.
Ha nem kézzel futtatod majd ezt a scriptet, hanem a git receive-pack fogja futtatni neked a szerveren, akkor az a hooknak exportálni fogja a GIT_DIR változót, mégpedig úgy, hogy az arra a repo-ra mutasson, amelyikbe éppen push-olsz. Ezekután a hookban hiába váltasz másik könyvtárba, az összes futtatott git parancs a GIT_DIR által mutatott repo-n fog majd ügyködni. Ezért volt a leírás alapján írt scriptedben az az export GIT_DIR=/valahol/máshol/.git sor.

Vagyis dumb, és mint a neve is mutatja, buta, mint a föld. Ez a protokoll nem "git-aware", csak fogadja és tárolja az adatokat, amiket kap, de nem futtat egy hookot sem. Neked vagy smart http-re vagy git-over-ssh-ra lenne szükséged.

git verzio? az a $SITENAME az honnan jon?

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!