MikoAndras.hu

Mikó András

Automatikus hook létrehozás minden új svn repository-ban

A beállítás menete

A teljes megoldáshoz három összetevőre lesz szükségünk:

  • a post-commit sablonra
  • egy script-re, ami megfelelő paraméterekkel bemásolja post-commit script-et a hooks könyvtárba
  • az incron beállítására

Post-commit sablon

A lényege, hogy olyan helyre tegyük ahol később is megtaláljuk, valamint a másoló script hozzáférhessen.
/home/subversion/templates:

kms@localhost:/home/subversion/templates$ ls -l
total 4
-rw-r--r-- 1 root root 36 Sep 16 22:15 post-commit

A tartalmára vonatkozóan elég jó leírást ad Daniel a Bonetree blog oldalain.

Másoló script

Az incron által megadott paramétereken végez egy egyszerű ellenőrzést, majd megfelelőség esetén bemásolja a sablont a hooks könyvtárba. Az érthetőség kedvéért több lehetséges ellenőrzés kimaradt a példából, illetve nem a lehetséges legjobb választás.

#!/bin/bash
 
# from where to copy skeleton
PATH_TO_SKELETON=/home/subversion/templates/post-commit
 
# $1 is the filename given from incrond
# $2 is the directory name
PATH_TO_HOOKS_DIR=${1}/hooks
 
PATH_TO_NEW_FILE=${PATH_TO_HOOKS_DIR}/post-commit
 
#retry wait in seconds
TIMEOUT_ON_RETRY=5
 
copy_hook () {
        cp ${PATH_TO_SKELETON} ${PATH_TO_NEW_FILE}
        chmod ugo+x ${PATH_TO_NEW_FILE}
}
 
if [ -d ${PATH_TO_HOOKS_DIR} ]; then
        copy_hook;
else
        sleep ${TIMEOUT_ON_RETRY};
        copy_hook;
fi

incron beállítás

Lényegében egy hasonló beállítási felületet kapunk, mint amit a cron esetében megszokhattunk. Aki szeretne belemélyedni a lehetőségek kusza világába, ajánlom a részletes leírást. Amit nem szabad elfelejteni, az a jogosultságok beállítása az /etc/incron.allow file-ban.

/home/subversion/repository IN_CREATE /usr/local/bin/add_hook.sh $@/$#

A példa lényege, megadjuk melyik könyvtárban szeretnénk figyelni és melyik eseményt. Az IN_CREATE akkor következik be, amikor új file-t vagy könyvtárat hozunk létre a megadott helyen. Ezután megadjuk, hogy milyen script/program kerüljön futtatásra, valamint felsoroljuk az átadandó paramétereket. Jelen esetben az új könyvtár neve.

Az új repo létrehozása után kialakult könyvtár-struktúra incron előtt (a hooks tartalma):

kms@localhost:/home/subversion/repository$ ls -la repo_pre_incron/hooks/
total 44
drwxrwxr-x 2 kms kms 4096 Sep 16 11:34 .
drwxrwxr-x 6 kms kms 4096 Sep 16 11:34 ..
-rw-rw-r-- 1 kms kms 2000 Sep 16 11:34 post-commit.tmpl
-rw-rw-r-- 1 kms kms 1690 Sep 16 11:34 post-lock.tmpl
-rw-rw-r-- 1 kms kms 2307 Sep 16 11:34 post-revprop-change.tmpl
-rw-rw-r-- 1 kms kms 1606 Sep 16 11:34 post-unlock.tmpl
-rw-rw-r-- 1 kms kms 2982 Sep 16 11:34 pre-commit.tmpl
-rw-rw-r-- 1 kms kms 2038 Sep 16 11:34 pre-lock.tmpl
-rw-rw-r-- 1 kms kms 2764 Sep 16 11:34 pre-revprop-change.tmpl
-rw-rw-r-- 1 kms kms 1980 Sep 16 11:34 pre-unlock.tmpl
-rw-rw-r-- 1 kms kms 2758 Sep 16 11:34 start-commit.tmpl

és incron beállítása után:

kms@localhost:/home/subversion/repository$ ls -la repo_with_incron/hooks/
total 48
drwxrwxr-x 2 kms kms 4096 Sep 16 11:34 .
drwxrwxr-x 6 kms kms 4096 Sep 16 11:34 ..
-rwxr-xr-x 1 kms kms   36 Sep 16 11:34 post-commit
-rw-rw-r-- 1 kms kms 2000 Sep 16 11:34 post-commit.tmpl
-rw-rw-r-- 1 kms kms 1690 Sep 16 11:34 post-lock.tmpl
-rw-rw-r-- 1 kms kms 2307 Sep 16 11:34 post-revprop-change.tmpl
-rw-rw-r-- 1 kms kms 1606 Sep 16 11:34 post-unlock.tmpl
-rw-rw-r-- 1 kms kms 2982 Sep 16 11:34 pre-commit.tmpl
-rw-rw-r-- 1 kms kms 2038 Sep 16 11:34 pre-lock.tmpl
-rw-rw-r-- 1 kms kms 2764 Sep 16 11:34 pre-revprop-change.tmpl
-rw-rw-r-- 1 kms kms 1980 Sep 16 11:34 pre-unlock.tmpl
-rw-rw-r-- 1 kms kms 2758 Sep 16 11:34 start-commit.tmpl

További kellemeset és hasznosat!

Pages: 1 2

, , , ,

Comments are currently closed.