#!/bin/sh set -ue SUBDIR="" PRIVATE=0 REMHOST="redcrew" while getopts ":d:p" opt; do case $opt in d) SUBDIR="/${OPTARG}" ;; p) PRIVATE=1 ;; \?) echo "Invalid option: -$OPTARG" exit 1 ;; :) echo "Option -$OPTARG requires an argument." exit 1 ;; esac done # Shift past the last option parsed by getopts shift $((OPTIND-1)) if [ -e .git ] ; then git gc --aggressive --prune=now REPO="$(basename "$(git rev-parse --show-toplevel)")" cd .. else [ "$#" -gt 0 ] || exit 1 REPO="$1" (cd "$REPO" git gc --aggressive --prune=now ) fi GITDIR="$(readlink -f "${REPO}").git" git clone --bare "$REPO" "${GITDIR}" (cd "${GITDIR}" # shellcheck disable=SC3045 read -r -e -p "Describe the repository:" DESC echo "$DESC" >description touch git-daemon-export-ok git config --add gitweb.owner 'Matěj Cepl ' git remote rm origin || /bin/true ) if [ $PRIVATE -eq 1 ] ; then TARGET="private_git${SUBDIR}" URL_BASE="${REMHOST}:${TARGET}" else TARGET="/srv/git${SUBDIR}" URL_BASE="https://git.cepl.eu/cgit${SUBDIR}" fi rsync -avz "${GITDIR}" "${REMHOST}:${TARGET}/" rm -rf "${GITDIR}" cd "$REPO" git remote add myrepo "${URL_BASE}/${REPO}" if [ $PRIVATE -ne 1 ] ; then git remote set-url --push myrepo "${REMHOST}:${TARGET}/${REPO}.git" fi # if git remote show gitlab >/dev/null 2>&1 ; then # git remote remove gitlab # fi git remote update git push --all -u myrepo