#!/bin/sh set -e case "${1}" in --quiet) QUIET="true" shift GIT_REPACK_OPTIONS="-q" GIT_GC_OPTIONS="--quiet" ;; esac REPOSITORIES="${@}" if [ -z "${REPOSITORIES}" ] then if [ ! -e HEAD ] then REPOSITORIES="*.git" else REPOSITORIES="$(pwd)" fi fi for REPOSITORY in ${REPOSITORIES} do [ "${QUIET}" ] || echo "--------------------------------------------------------------------------------" [ "${QUIET}" ] || echo ${REPOSITORY} [ "${QUIET}" ] || echo "--------------------------------------------------------------------------------" cd "${REPOSITORY}" git repack ${GIT_REPACK_OPTIONS} -a -b -d -f -F git gc ${GIT_GC_OPTIONS} --aggressive --prune cd "${OLDPWD}" if [ "$(id -u)" -eq "0" ] then UID="$(stat -c %u ${REPOSITORY})" GID="$(stat -c %g ${REPOSITORY})" chown ${UID}:${GID} "${REPOSITORY}" -R fi done