SVN hooks i autoupdate’y

Czsami problemy są nieco ukryte, jednak jak zawsze debug daje radę. Hooks w svn’ie to rzecz bardzo przydatna, jeszcze bardziej jak chcemy po każdym commit’owaniu otrzymać działającą kopię na stronie testowej, klasyczne wykorzystanie cron’a jest często uciążliwe, a hook post-commit wykonywany jest jak sama nazwa wskazuje po commit’owaniu, autoupdate można zrobic tak:

{REPO}/hooks/post-commit (skrypt z bitem wykonywalności)


#!/bin/sh
/usr/local/bin/update

Sam skrypt update w moim przypadku to C:


#include
#include
#include
int main(void)
{
execl("/path/to/svn", "svn", "update", "--username",
"USERNAME", "--password", "PASSWORD", "--no-auth-cache",
"/path/to/svnsite/", (const char *) NULL);
return(EXIT_FAILURE);
}


gcc update.c -o update
cp update /usr/local/bin
chmod +s /usr/local/bin/update

W całym kodzie ważny jest –no-auth-cache, ponieważ bez tego system będzie prosić o dopowiedź w jaki sposób przchowywać hasła w pliku cache, jakoże wykonywane jest to przez użytkownika apache (w moim przypadku), który nie posiada własnego shella i home (oczywiste), pytanie takie jest powodem nie działania skryptu.

Leave a Reply

Your email address will not be published. Required fields are marked *