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 <stddef.h>
#include <stdlib.h>
#include <unistd.h>
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.