#!/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 USER_ID="$(stat -c %u "${REPOSITORY}")" GROUP_ID="$(stat -c %g "${REPOSITORY}")" chown "${USER_ID}":"${GROUP_ID}" "${REPOSITORY}" -R fi done