aboutsummaryrefslogtreecommitdiffstats
path: root/roles/jails/22_forge/files/git-shell-commands
diff options
context:
space:
mode:
authorJan Sydänviita <jan@sydanviita.fi>2026-08-19 16:39:03 +0300
committerJan Sydänviita <jan@sydanviita.fi>2026-08-19 16:39:03 +0300
commita8d027dc7c6312969fa91165e0e99676f23eb6e4 (patch)
tree260c25bf0e8be5941a1cd04ab61b4bf3f2b86afd /roles/jails/22_forge/files/git-shell-commands
parent1e972c95802d85dea539b4081272413b10e93a82 (diff)
Improve forge
Diffstat (limited to 'roles/jails/22_forge/files/git-shell-commands')
-rw-r--r--roles/jails/22_forge/files/git-shell-commands/help11
-rw-r--r--roles/jails/22_forge/files/git-shell-commands/mirror-to39
2 files changed, 45 insertions, 5 deletions
diff --git a/roles/jails/22_forge/files/git-shell-commands/help b/roles/jails/22_forge/files/git-shell-commands/help
index fd0690d..e8f2631 100644
--- a/roles/jails/22_forge/files/git-shell-commands/help
+++ b/roles/jails/22_forge/files/git-shell-commands/help
@@ -2,10 +2,11 @@
cat <<EOF
Available commands:
- new [REPO_NAME] - create a new bare repository
- ls - list repositories
- describe [REPO_NAME] [DESCRIPTION] - set repository description
- rename [OLD_NAME] [NEW_NAME] - rename a repository
- delete [REPO_NAME] - delete a repository
+ new [REPO_NAME] create a new bare repository
+ ls list repositories
+ describe [REPO_NAME] [DESCRIPTION] set repository description
+ rename [OLD_NAME] [NEW_NAME] rename a repository
+ delete [REPO_NAME] delete a repository
+ mirror-to [REPO_NAME] [GIT_URL] set up hourly mirror to a remote git URL
EOF
diff --git a/roles/jails/22_forge/files/git-shell-commands/mirror-to b/roles/jails/22_forge/files/git-shell-commands/mirror-to
new file mode 100644
index 0000000..d161283
--- /dev/null
+++ b/roles/jails/22_forge/files/git-shell-commands/mirror-to
@@ -0,0 +1,39 @@
+#!/bin/sh
+# mirror-to [REPO_NAME] [GIT_URL]
+# Configures a repo to be mirrored hourly to a remote git URL.
+# Example: mirror-to myrepo git@example.com:user/myrepo.git
+if [ -z "$1" ]; then
+ echo "Usage: mirror-to [REPO_NAME] [GIT_URL]"
+ echo " mirror-to [REPO_NAME] - remove mirror"
+ echo "Example: mirror-to myrepo git@example.com:user/myrepo.git"
+ 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-to >/dev/null 2>&1; then
+ git remote remove mirror-to
+ echo "Removed mirror for $REPO"
+ else
+ echo "No mirror configured for $REPO"
+ fi
+ exit 0
+fi
+
+if git remote get-url mirror-to >/dev/null 2>&1; then
+ git remote set-url mirror-to "$REMOTE"
+else
+ git remote add mirror-to "$REMOTE"
+fi
+
+echo "Configured $REPO to mirror to $REMOTE"
+echo "Mirrors run hourly. Logs: /var/log/git-mirrors.log"