diff options
| author | Jan Sydänviita <jan@sydanviita.fi> | 2026-08-19 16:39:03 +0300 |
|---|---|---|
| committer | Jan Sydänviita <jan@sydanviita.fi> | 2026-08-19 16:39:03 +0300 |
| commit | a8d027dc7c6312969fa91165e0e99676f23eb6e4 (patch) | |
| tree | 260c25bf0e8be5941a1cd04ab61b4bf3f2b86afd /roles/jails/22_forge/files/git-shell-commands | |
| parent | 1e972c95802d85dea539b4081272413b10e93a82 (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/help | 11 | ||||
| -rw-r--r-- | roles/jails/22_forge/files/git-shell-commands/mirror-to | 39 |
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" |
