From: martin f. krafft Date: Sat, 10 May 2008 00:14:21 +0000 (+0100) Subject: initial checkin X-Git-Url: https://git.madduck.net/etc/mrsetup.git/commitdiff_plain/20976dd3b191408eb30f3e9608a98404fcf09bf1?ds=inline initial checkin --- 20976dd3b191408eb30f3e9608a98404fcf09bf1 diff --git a/mrsetup b/mrsetup new file mode 100755 index 0000000..5af4833 --- /dev/null +++ b/mrsetup @@ -0,0 +1,101 @@ +#!/bin/sh +# +# mrsetup - set up an account using mr +# +# Copyright © 2008 martin f. krafft +# Released under the terms of the Artistic Licence 2.0 +# +set -eu + +MY_GIT_SERVER=git.madduck.net +MY_GIT_REPOS='~/git' +MY_ACCOUNT_GIT_REPO=$MY_GIT_REPOS/accounts/$(whoami)@$(hostname --fqdn).git +MY_GIT_URL_BASE=ssh://$MY_GIT_SERVER +MY_MR_REPO_URL=$MY_GIT_URL_BASE/$MY_GIT_REPOS/pub/etc/mr.git +MY_ACCOUNT_REPO_URL=$MY_GIT_URL_BASE/$MY_ACCOUNT_GIT_REPO +MR_REPO_URL=git://git.kitenet.net/mr +MR_CODE=code/mr +MR_FGIT=.fgits/mr.git +MR=.mr +BIN_DIR=.bin + +if [ ! -x "$(command -v git)" ]; then + echo E: git is not installed. >&2 + exit 1 +fi + +if [ -e .mrconfig ]; then + echo E: .mrconfig already exists. >&2 + exit 2 +fi + +if [ -d "$MR_FGIT" ]; then + echo E: "$MR_FGIT" already exists. >&2 + exit 3 +fi + +if [ -d ".git" ]; then + echo E: .git already exists. >&2 + exit 3 +fi + +if [ -d code/mr ]; then + if [ -x code/mr/mr ]; then + echo W: code/mr already exists, let us hope for the best... >&2 + else + echo E: code/mr already exists. >&2 + exit 4 + fi +else + echo I: cloning mr into ${MR_CODE}... + mkdir --parent ${MR_CODE%/*} + git clone $MR_REPO_URL $MR_CODE + mkdir .bin + ln -s ../${MR_CODE}/mr $BIN_DIR/mr + echo +fi + +cat <<_eof > .mrconfig +[DEFAULT] +include = cat $MR_CODE/lib/* + +[$MR_FGIT] +checkout = git_fake_bare_checkout $MY_MR_REPO_URL ${MR_FGIT##*/} ../../ +_eof +echo I: initial .mrconfig: +cat .mrconfig +echo + +echo I: cloning mr configuration... +$MR_CODE/mr co +echo + +echo I: bootstrapping default .mrconfig... +cp $MR/templ/.mrconfig . + +echo I: setting up base... +$MR_CODE/mr co + +if ssh $MY_GIT_SERVER "test -d $MY_ACCOUNT_GIT_REPO"; then + echo I: checking out local git repository... + dir="$(mktemp -d home.XXXXXXXX)" + trap "rm -rf $dir" 0 + git clone --no-checkout $MY_ACCOUNT_REPO_URL "$dir"/co + mv "$dir"/co/.git . + git checkout-index --quiet --index --all + git reset HEAD + echo +else + echo I: creating remote git repository for this account... + ssh $MY_GIT_SERVER "GIT_DIR=${MY_ACCOUNT_GIT_REPO} git --bare init" + echo I: setting up local git repository... + git init + git remote add origin $MY_ACCOUNT_REPO_URL + git config branch.master.remote origin + git config branch.master.merge refs/heads/master + git add .mrconfig + git commit -m'initial checkin' + git push --all +fi + +exit 0