diff options
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-from | 44 |
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" |
