#!/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"