From 8fadfa33e957613c613d79688a5f152545a874bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Tue, 11 Jan 2022 23:57:35 +0100 Subject: git-gc : improves a lot --- git-gc | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/git-gc b/git-gc index 8d5de89..75ada5d 100755 --- a/git-gc +++ b/git-gc @@ -1,7 +1,28 @@ -#! /bin/sh +#! /bin/bash +# +RESET="\033[0m" +RED="\033[0;31m" +BROWN="\033[0;33m" -echo "* repack" && git repack -adf && \ - echo "* prune" && git prune && \ - echo "* prune-packed" && git prune-packed && \ - echo "* gc" && git gc --aggressive && \ - echo "* done" +MINDT=$((72*3600)) +CMD="git gc --aggressive" +WHERE=${1:-.} +echo -e "exec '$BROWN$CMD$RESET' on repost below '$RED$WHERE$RESET' - [Ctrl-c to abort]" && read none + +for path in $(find $WHERE -maxdepth 5 -type d -name .git); do + path=${path%.git} + echo -e " # $BROWN check : $RED$path$RESET" + pushd $path >/dev/null || exit 1 + A=$(stat --format="%Y" .git/objects) + B=$(stat --format="%Y" .git/packed-refs) + D=$((A - B)) + if [ $D -gt $MINDT ] + then + h=$((D/3600)) + m=$(((D - h*3600)/60)) + s=$((D - h*3600 - m*60)) + echo "dt is $h:$m:$s" + $CMD + fi + popd >/dev/null +done -- cgit v1.1-2-g2b99