aboutsummaryrefslogtreecommitdiff
path: root/scripts/util
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/util')
-rw-r--r--scripts/util/new-repo.sh17
-rw-r--r--scripts/util/post-receive.sh15
2 files changed, 32 insertions, 0 deletions
diff --git a/scripts/util/new-repo.sh b/scripts/util/new-repo.sh
new file mode 100644
index 0000000..81841b4
--- /dev/null
+++ b/scripts/util/new-repo.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# this is run on remote
+
+if [ $# -ne 1 ]; then
+ echo "\nUsage: $0 'new-repo-name'\n"
+ exit 1
+fi
+
+echo "\nCreating new bare repository $PWD/$1"
+
+mkdir "$1" && git init --bare "$1"
+chmod -R u+rw "$1"/
+chown -R git:git "$1"
+
+echo "Adding post-receive hooks\n"
+cp /home/git/post-receive.sh "$1"/hooks/post-receive
diff --git a/scripts/util/post-receive.sh b/scripts/util/post-receive.sh
new file mode 100644
index 0000000..699cce6
--- /dev/null
+++ b/scripts/util/post-receive.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+# this should be on remote server
+
+CONF_FILE="/home/git/public_repos.conf"
+REPO_NAME=$(basename $(pwd) .git)
+PUBLIC_DIR="/var/www/git/$REPO_NAME"
+
+if grep -qx "$REPO_NAME" "$CONF_FILE"; then
+ echo "Syncing $REPO_NAME to public directory..."
+ rsync -a --delete --exclude '.git' /home/git/$REPO_NAME/ "$PUBLIC_DIR/"
+ echo "Public sync complete."
+else
+ echo "$REPO_NAME is not marked as public. No action taken."
+fi