summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xinstall-repos23
-rwxr-xr-xpre-receive16
2 files changed, 39 insertions, 0 deletions
diff --git a/install-repos b/install-repos
new file mode 100755
index 0000000..ae10f44
--- /dev/null
+++ b/install-repos
@@ -0,0 +1,23 @@
+#!/bin/sh -eu
+set -eu
+
+REPOS="/data/git/*.git"
+HOOKS="pre-receive"
+dir=`dirname $0`
+BASE=`realpath $dir`
+
+for hook in $HOOKS; do
+ for git in $REPOS; do
+ if [ -d "$git" ]; then
+ cd $git
+ echo `basename $git`
+ chown -R www:www .
+ find . -type f -print0 | xargs -0 chmod 660
+ find . -type d -print0 | xargs -0 chmod 770
+ ln -sf $BASE/$hook hooks/$hook
+ git config core.sharedRepository=0660 || true
+ touch git-daemon-export-ok
+ fi
+ done
+done
+
diff --git a/pre-receive b/pre-receive
new file mode 100755
index 0000000..4232983
--- /dev/null
+++ b/pre-receive
@@ -0,0 +1,16 @@
+#!/bin/sh -eu
+set -eu
+
+user=`id -un`
+
+# Check if user is allowed
+match=`test -f git-receive-allow && grep -Fx "$user" git-receive-allow || true`
+echo $match > /tmp/match.log
+if [ -z "$match" ]; then
+ cat <<EOF >&2
+---
+You're not allowed to push to this repository as $user.
+---
+EOF
+ exit 1
+fi