aboutsummaryrefslogtreecommitdiffstats
path: root/roles/jails/22_forge/files/git-shell-commands/mirror-from
diff options
context:
space:
mode:
Diffstat (limited to 'roles/jails/22_forge/files/git-shell-commands/mirror-from')
-rw-r--r--roles/jails/22_forge/files/git-shell-commands/mirror-from44
1 files changed, 44 insertions, 0 deletions
diff --git a/roles/jails/22_forge/files/git-shell-commands/mirror-from b/roles/jails/22_forge/files/git-shell-commands/mirror-from
new file mode 100644
index 0000000..2666cac
--- /dev/null
+++ b/roles/jails/22_forge/files/git-shell-commands/mirror-from
@@ -0,0 +1,44 @@
+#!/bin/sh
+# mirror-from [REPO_NAME] [GIT_URL]
+# Configures a repo to pull updates from a remote git URL hourly.
+# Pass empty URL to remove the mirror source.
+# Example: mirror-from myrepo https://github.com/user/myrepo.git
+if [ -z "$1" ]; then
+ echo "Usage: mirror-from [REPO_NAME] [GIT_URL]"
+ echo " mirror-from [REPO_NAME] - remove mirror source"
+ exit 1
+fi
+if [ ! -d "$1.git" ]; then
+ echo "Repository $1 does not exist"
+ exit 1
+fi
+
+REPO="$1"
+REMOTE="$2"
+REPO_PATH="$HOME/$REPO.git"
+
+cd "$REPO_PATH" || exit 1
+
+if [ -z "$REMOTE" ]; then
+ if git remote get-url mirror-from >/dev/null 2>&1; then
+ git remote remove mirror-from
+ echo "Removed mirror source for $REPO"
+ else
+ echo "No mirror source configured for $REPO"
+ fi
+ exit 0
+fi
+
+if git remote get-url mirror-to >/dev/null 2>&1; then
+ echo "Error: $REPO already has a mirror-to configured. Remove it first with: mirror-to $REPO"
+ exit 1
+fi
+
+if git remote get-url mirror-from >/dev/null 2>&1; then
+ git remote set-url mirror-from "$REMOTE"
+else
+ git remote add mirror-from "$REMOTE"
+fi
+
+echo "Configured $REPO to mirror from $REMOTE"
+echo "Mirrors run hourly. Logs: /var/log/git-mirrors.log"