#!/bin/sh # Open Infrastructure: service-tools # Copyright (C) 2014-2024 Daniel Baumann # # SPDX-License-Identifier: GPL-3.0+ # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . 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 if [ "${QUIET}" != "true" ] then cat << EOF ================================================================================ ${REPOSITORY} ================================================================================ EOF fi cd "${REPOSITORY}" git repack "${GIT_REPACK_OPTIONS}" -a -b -d -f -F git gc --aggressive --prune ${GIT_GC_OPTIONS} 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