Clemens Buchacher | 71039fb | 2012-01-07 12:42:45 +0100 | [diff] [blame^] | 1 | #!/bin/sh |
| 2 | |
| 3 | if test -z "$GIT_TEST_GIT_DAEMON" |
| 4 | then |
| 5 | skip_all="git-daemon testing disabled (define GIT_TEST_GIT_DAEMON to enable)" |
| 6 | test_done |
| 7 | fi |
| 8 | |
| 9 | LIB_GIT_DAEMON_PORT=${LIB_GIT_DAEMON_PORT-'8121'} |
| 10 | |
| 11 | GIT_DAEMON_PID= |
| 12 | GIT_DAEMON_DOCUMENT_ROOT_PATH="$PWD"/repo |
| 13 | GIT_DAEMON_URL=git://127.0.0.1:$LIB_GIT_DAEMON_PORT |
| 14 | |
| 15 | start_git_daemon() { |
| 16 | if test -n "$GIT_DAEMON_PID" |
| 17 | then |
| 18 | error "start_git_daemon already called" |
| 19 | fi |
| 20 | |
| 21 | mkdir -p "$GIT_DAEMON_DOCUMENT_ROOT_PATH" |
| 22 | |
| 23 | trap 'code=$?; stop_git_daemon; (exit $code); die' EXIT |
| 24 | |
| 25 | say >&3 "Starting git daemon ..." |
| 26 | git daemon --listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \ |
| 27 | --reuseaddr --verbose \ |
| 28 | --base-path="$GIT_DAEMON_DOCUMENT_ROOT_PATH" \ |
| 29 | "$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \ |
| 30 | >&3 2>&4 & |
| 31 | GIT_DAEMON_PID=$! |
| 32 | } |
| 33 | |
| 34 | stop_git_daemon() { |
| 35 | if test -z "$GIT_DAEMON_PID" |
| 36 | then |
| 37 | return |
| 38 | fi |
| 39 | |
| 40 | trap 'die' EXIT |
| 41 | |
| 42 | # kill git-daemon child of git |
| 43 | say >&3 "Stopping git daemon ..." |
| 44 | kill "$GIT_DAEMON_PID" |
| 45 | wait "$GIT_DAEMON_PID" >&3 2>&4 |
| 46 | ret=$? |
| 47 | # expect exit with status 143 = 128+15 for signal TERM=15 |
| 48 | if test $ret -ne 143 |
| 49 | then |
| 50 | error "git daemon exited with status: $ret" |
| 51 | fi |
| 52 | GIT_DAEMON_PID= |
| 53 | } |