aboutsummaryrefslogtreecommitdiffstats
path: root/git2redcrew.sh
diff options
context:
space:
mode:
Diffstat (limited to 'git2redcrew.sh')
-rwxr-xr-xgit2redcrew.sh74
1 files changed, 74 insertions, 0 deletions
diff --git a/git2redcrew.sh b/git2redcrew.sh
new file mode 100755
index 0000000..d4a8b60
--- /dev/null
+++ b/git2redcrew.sh
@@ -0,0 +1,74 @@
+#!/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 <mcepl@cepl.eu>'
+ 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