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?
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.