From: Matthijs Kooijman Date: Mon, 30 Mar 2009 07:15:36 +0000 (+0200) Subject: git: Add scripts to enable a base path for git over ssh. X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=ac18da62cddd42ae3e1f7c800f0c70547ae663aa;p=matthijs%2Fservers%2Fdrsnuggles.git git: Add scripts to enable a base path for git over ssh. These files provide wrappers aroudn git-{receive,upload}-pack that prepend the base path '/data/vcs/git/' to each non-option argument. This enables git urls over ssh to leave out this base path. --- diff --git a/usr/local/bin/git-prepend-base b/usr/local/bin/git-prepend-base new file mode 100755 index 0000000..6b524cb --- /dev/null +++ b/usr/local/bin/git-prepend-base @@ -0,0 +1,28 @@ +#!/bin/sh + +# This script prepends BASE_PATH to any arguments that are not options (start +# with --) and do not start with BASE_PATH already. +# It then executes its equivalent in /usr/bin with those updated arguments. +# +# This script is meant to provide a base path for accessing git repositories +# through ssh. This is similar to running git-daemon(1) with --base-path and +# --base-path-relaxed. + +BASE_PATH='/data/vcs/git' + +# We keep an array of arguments, so we can handle quoting an spaces in +# arguments properly. +ARGS=() +i=0 +until [ "$#" -eq 0 ] +do + if ! echo $1 | egrep "^(--|$BASE_PATH)" &>/dev/null; then + ARGS[$i]="$BASE_PATH/$1" + else + ARGS[$i]="$1" + fi + ((i++)) + shift +done + +exec /usr/bin/`basename $0` "${ARGS[@]}" diff --git a/usr/local/bin/git-receive-pack b/usr/local/bin/git-receive-pack new file mode 120000 index 0000000..f0c4399 --- /dev/null +++ b/usr/local/bin/git-receive-pack @@ -0,0 +1 @@ +git-prepend-base \ No newline at end of file diff --git a/usr/local/bin/git-upload-pack b/usr/local/bin/git-upload-pack new file mode 120000 index 0000000..f0c4399 --- /dev/null +++ b/usr/local/bin/git-upload-pack @@ -0,0 +1 @@ +git-prepend-base \ No newline at end of file