#!/bin/bash if [[ $# != 2 ]]; then echo "${0} " exit 1 fi set -x set -e REPO="$1" TAG="$2" DIR="$(basename "$REPO")" DIR="${DIR%.*}" TMP="$(mktemp -d "/tmp/git-repo-XXXX")" trap "{ rm -rf "$TMP"; }" EXIT mkdir -p "$TMP/$DIR" pushd "$TMP" #phase 1: clone the repo git clone "$REPO" "${DIR}-orig" #phase 2: clone again with the tag/commit only cd "$DIR" git init --template=/dev/null git remote add origin "../${DIR}-orig" git fetch origin "$TAG" --depth=1 git checkout FETCH_HEAD git gc --aggressive --prune=now COMMIT="$(git rev-parse --short HEAD)" cd .. du -xhd1 popd tar -czf "$DIR-$COMMIT.tar.gz" -C "$TMP" "$DIR"