From ac89b3c715fd3eddca7898e069ee04498c1a1ba2 Mon Sep 17 00:00:00 2001 From: Jesper Jensen Date: Fri, 24 Apr 2026 23:36:52 +0200 Subject: INITIAL COMMIT --- create-repo.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 create-repo.sh (limited to 'create-repo.sh') diff --git a/create-repo.sh b/create-repo.sh new file mode 100644 index 0000000..5bc213a --- /dev/null +++ b/create-repo.sh @@ -0,0 +1,43 @@ +#!/bin/sh +set -eu + +GIT_REPO_ROOT="${GIT_REPO_ROOT:-/var/lib/git}" +GIT_USER="${GIT_USER:-git}" +GIT_GROUP="${GIT_GROUP:-git}" + +usage() { + echo "usage: create-repo [description]" >&2 + echo "example: create-repo myrepo 'My application repository'" >&2 + exit 64 +} + +[ "$#" -ge 1 ] || usage + +name="$1" +description="${2:-Unnamed repository}" + +case "${name}" in + */* | .* | *" "* | *".."* ) + echo "invalid repository name: ${name}" >&2 + exit 64 + ;; +esac + +case "${name}" in + *.git) repo_name="${name}" ;; + *) repo_name="${name}.git" ;; +esac + +repo_path="${GIT_REPO_ROOT}/${repo_name}" + +if [ -e "${repo_path}" ]; then + echo "repository already exists: ${repo_path}" >&2 + exit 1 +fi + +install -d -o "${GIT_USER}" -g "${GIT_GROUP}" "${repo_path}" +git init --bare "${repo_path}" >/dev/null +printf '%s\n' "${description}" > "${repo_path}/description" +chown -R "${GIT_USER}:${GIT_GROUP}" "${repo_path}" + +echo "created ${repo_path}" -- cgit v1.2.3