#!/bin/sh # # Copyright © 2008 Mike O'Connor set -e usage() { bn=$(basename $0) cat < .movein GIT_HOST=$GIT_HOST REMOTE_REPOS=$REMOTE_REPOS LOCAL_REPOS=$LOCAL_REPOS MRCONFIG=$MRCONFIG EOF mkdir $LOCAL_REPOS cat < $MRCONFIG [DEFAULT] include = cat /usr/share/mr/git-fake-bare END } add() { if [ $# -ne 1 ]; then usage fi REPO_NAME=$1.git ; shift LOCAL_REPO=$LOCAL_REPOS/$REPO_NAME REPO_URL=ssh://$GIT_HOST/$REMOTE_REPOS/$REPO_NAME if [ -e "$LOCAL_REPO" ]; then echo $LOCAL_REPO already exists exit 1 else trap "rm -rf $LOCAL_REPO" 0 mkdir "$LOCAL_REPO" export GIT_DIR="$LOCAL_REPO" git init --bare git remote add origin $REPO_URL git config branch.master.remote origin git config branch.master.merge refs/heads/master git config core.worktree ../../ git config core.bare false GIT_WORK_TREE="$PWD" git pull trap - 0 cat <> $MRCONFIG [$LOCAL_REPO] checkout = git_fake_bare_checkout '$REPO_URL' '$REPO_NAME' '../../' END fi } new() { if [ $# -lt 2 ]; then usage fi REPO_NAME=$1.git ; shift LOCAL_REPO="$LOCAL_REPOS/$REPO_NAME" REPO_URL="ssh://$GIT_HOST/$REMOTE_REPOS/$REPO_NAME" if [ ! -e "$1" ]; then echo $1 not found exit 1 fi if [ -e "$LOCAL_REPO" ]; then echo $LOCAL_REPO already exists exit 1 else trap "rm -rf $LOCAL_REPO" 0 mkdir -p "$LOCAL_REPO" ssh $GIT_HOST " GIT_DIR=$REMOTE_REPOS/$REPO_NAME git --bare init " > $MRCONFIG [$LOCAL_REPO] checkout = git_fake_bare_checkout '$REPO_URL' '$REPO_NAME' '../../' END fi } command=$1 ; shift case "$command" in init) init $@ ;; add) add $@ ;; new) new $@ ;; esac