Wednesday, October 28, 2009

SVN Hooks

I am working on a project where I need directory of my cakePHP application on the server update on each svn commit. Why? Because I am lazy. I don't want to login to remote server every time I commit something, run svn update...or worse ftp. So I've been reading about svn hooks, and it's a very powerful thing.

These are the steps to make it work:



  • Create and compile c program that will perform svn update, and save it somewhere let's say in /svn/autoupdate


    #include
    #include
    #include
    int main(void)
    {
    execl("/usr/local/bin/svn", "svn", "update",
    "${dirNameToUpdate}",
    (const char *) NULL);
    return(EXIT_FAILURE);
    }



  • Add post-commit to svnrepo/hooks where compiled c program is referenced:

    #!/bin/sh
    /svn/autoupdate/autoupdate


  • chmod +x post-commit


Try to commit something to svn on remote server and watch svn hooks magic in action.

Blogger Syntax Highliter