This website is no longer maintained. My new homepage is rescrv.net.

Robert Escriva

Things I wish I learned earlier

git-daemon Init Scripts on CentOS 5.x

I operate a CentOS 5.2 using Slice Host and use it for many personal projects. Rather than manually start git-daemon in the event of a server reboot, I wrote this init script to bring up git-daemon on boot:

#!/bin/sh
#
#   Startup/shutdown script for Git Daemon
#
#   Linux chkconfig stuff:
#
#   chkconfig: 345 56 10
#   description: Startup/shutdown script for Git Daemon
#
. /etc/init.d/functions

DAEMON=git-daemon
ARGS='--base-path=/home/git/ --detach --user=git --group=git'

prog=git-daemon

start () {
    echo -n $"Starting $prog: "

    # start daemon
    daemon $DAEMON $ARGS
        RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch /var/lock/git-daemon
    return $RETVAL
}

stop () {
    # stop daemon
    echo -n $"Stopping $prog: "
    killproc $DAEMON
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f /var/lock/git-daemon
}

restart() {
    stop
    start
}

case $1 in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    status)
        status $DAEMON
        RETVAL=$?
    ;;
    *)

    echo $"Usage: $prog {start|stop|restart|status}"
    exit 3
esac

exit $RETVAL

Some quick notes:

  • It serves all git repos with the file git-daemon-export-ok in /home/git/. To mark a repo as ok for export, create git-daemon-export-ok in the .git folder.
  • It requires the binary git-daemon to be present on the system. Many third-party CentOS repositories provide packages for this.
  • The user and group git must exist for the daemon to drop its privileges when it runs.
  • I make no warranty regarding use of this script. Don't blame me if it crashes or eats your first born son. You have been warned.
  • The structure of the script was extracted from several other init scripts on a CentOS 5 box. I do not recall which ones.

Copyright © 2010 Robert Escriva ¦ Powered by Firmant