Skip to content
This repository
tag: v317
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

executable file 72 lines (63 sloc) 2.139 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
#!/bin/bash -e

help () (
    echo "$0:"
    echo " - Initialise some sane standard git config"
    echo " - Possibly setup for linking with extra repositories"
    echo "Options:"
    echo " --extra-repo <name> add the given repo inside ./repos/"
    echo " --link [dir] link to existing repositories in [dir] (by default, ../)"
    echo " instead of cloning a fresh repo"
    echo " --help display this help message"
    echo
)

# This is used for e.g. ./init.sh --extra-repo git://github.com/MLstate/tictactopa.git
# Do not remove this, we actually use it
get_repo_name() { x=${1##*:}; x=${x##*/}; x=${x%.git}; echo $x; }

REPOS=()
LINK=""
LINKDIR=".."

while [ $# -gt 0 ]; do
case $1 in
        --help|-h)
            help; exit 0;;
        --extra-repo)
            if [ $# -lt 2 ]; then echo "Error: option $1 requires an argument"; exit 1; fi
shift
REPOS[${#REPOS[@]}]=$1
            ;;
        --link)
            if [ $# -ge 2 ] && [ "${2#-}" = "$2" ]; then shift; LINKDIR=$1; fi
LINK=1
            ;;
        *) echo "Error: unknown option $1"
    esac
shift
done

git config branch.master.rebase true
git config --global branch.autosetuprebase always

echo "OK: git setup complete"

mkdir -p repos

# don't forget to add those to .gitignore to avoid conflicts
for repo_link in "${REPOS[@]}"; do
r=$(get_repo_name $repo_link)
    if [ -e "repos/$r" ]; then
echo "repo $r is already there, skipping"
    elif [ -n "$LINK" ]; then
if [ ! -d "$LINKDIR/$r/.git" ]; then
echo "Error: could not find a valid git repo at $LINKDIR/$r"
        else
RELLINK=$LINKDIR
            if [ "${RELLINK#/}" = "$RELLINK" ]; then RELLINK="../$RELLINK"; fi
ln -s "$RELLINK/$r" repos/
            echo "OK: repo $r linked in repos/"
        fi
else
cd repos
        # we assume the full link is given, like github repository,
        # e.g. git://github.com/MLstate/tictactopa.git used by passtracker
        CLONE_PATH="$repo_link"
        git clone $CLONE_PATH
        cd ..
        echo "OK: repo $r cloned in repos/"
    fi
done
Something went wrong with that request. Please try again.