From 6c0ac78b6e87ba20b33d08212bbde6aaf080e10e Mon Sep 17 00:00:00 2001 From: Konstantin Demin Date: Tue, 23 Jul 2024 23:08:35 +0300 Subject: [PATCH] zsh: improve git snippets --- .config/zsh/alias/git.zsh | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/.config/zsh/alias/git.zsh b/.config/zsh/alias/git.zsh index 0205ea1..6012d79 100644 --- a/.config/zsh/alias/git.zsh +++ b/.config/zsh/alias/git.zsh @@ -16,29 +16,39 @@ git-dir-usage() { esac local -a subdirs - subdirs+="${gitdir}/logs/refs" - subdirs+="${gitdir}/objects/info" - subdirs+="${gitdir}/objects/pack" - - if [ -n "${topdir}" ] ; then - env -C "${topdir}" du -d1 "${gitdir}" - env -C "${topdir}" du -d1 "${subdirs[@]}" - else + for x ( logs/refs objects/info objects/pack ) ; do + [ -d "${gitdir}/$x" ] || continue + subdirs+="${gitdir}/$x" + done + + ( + [ -n "${topdir}" ] && cd "${topdir}/" + if [ ${#subdirs} -gt 0 ] ; then + du -d1 "${subdirs[@]}" + fi du -d1 "${gitdir}" - du -d1 "${subdirs[@]}" - fi | grep -Ev '^[0-9]\s' | sort -Vk2 + ) | grep -Ev '^[0-9]K?\s' | sort -Vk2 } git-gc() { git-dir-usage || return $? echo - idle git gc "$@" + echo "# git gc $*" >&2 + z-time idle git gc "$@" echo git-dir-usage } git-gc-force() { - git-gc --aggressive --force + git-dir-usage || return $? + echo + echo "# git gc --aggressive --force $*" >&2 + z-time idle git gc --aggressive --force "$@" + echo + echo "# git repack -Ad" >&2 + z-time idle git repack -Ad + echo + git-dir-usage } git-archive-ref() {