#!/bin/sh task="$1" repo="$2" set -e if [ ! -d "$repo" ]; then mkdir -p "$repo" cd "$repo" git init else cd "$repo" fi if [ ! -z "$(git status --porcelain)" ]; then echo "Requires a clean working tree" >&2 exit 1 fi # update existing submodules git submodule foreach git fetch origin git submodule foreach git reset --hard origin/master for remote in $(ssh git@subgit.ugent.be task students -l "$task" | cut -f4); do if [ -d "$(basename "$remote")" ]; then true # exists elif [ -z "$(git ls-remote "$remote")" ]; then echo "No branches at $remote" else echo "adding $remote" git submodule --quiet add "$remote" fi done git add . git commit -v