[MEGOLDVA]git post hook

 ( Anonymous | 2012. október 20., szombat - 17:07 )

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ás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

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

bocs, post-update, de gondolom kb. mindegy, leírás is update-el csinálta.

-rwxr-xr-x 1 www-data www-data 239 okt 20 17:09 /git/fwt.git/hooks/post-update

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.

Hmm, www-data? Csak nem dumb http transport?

DAV

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.

óóóóó hogy az a :D:D:D
Köszönöm, utánaolvasok (svn-hez szokott az agyam). SSH alapú ezen a szerveren nem játszható, így a smart lesz a nyerő.

Uraim, nagyon köszönöm, megszületett, működik :)

git verzio? az a $SITENAME az honnan jon?

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

az egy leírásból, de már átírva az egész,lásd fentebb.

Szerveren: git version 1.7.9.5
Munkaállomáson: git version 1.7.7.6

Remélem ez azért nem akkora különbség.