diff --git a/.config/dotfiles/gitignore b/.config/dotfiles/gitignore index 67dc90f..624fd84 100644 --- a/.config/dotfiles/gitignore +++ b/.config/dotfiles/gitignore @@ -11,6 +11,7 @@ !/.config/zsh/alias/buildah.zsh !/.config/zsh/alias/diff.zsh !/.config/zsh/alias/directories.zsh +!/.config/zsh/alias/git.zsh !/.config/zsh/alias/gpg.zsh !/.config/zsh/alias/grep.zsh !/.config/zsh/alias/history.zsh diff --git a/.config/zsh/alias/git.zsh b/.config/zsh/alias/git.zsh new file mode 100644 index 0000000..e8c2ee4 --- /dev/null +++ b/.config/zsh/alias/git.zsh @@ -0,0 +1,34 @@ +#!/bin/zsh + +git-dir-usage() { + local d x p + d=$(__z_git rev-parse --git-dir) || return $? + x=$(__z_git rev-parse --path-format=absolute 2>/dev/null) + if [ -n "$x" ] ; then + ## older git version which does not support "--path-format=absolute" + : + else + d=$(__z_git rev-parse --path-format=absolute --git-dir) + fi + case "$d" in + */* ) p=${d%/*} ; d=${d##*/} ;; + esac + ## ${p:+ env -C "$p" } du -cd2 "$d" + if [ -n "$p" ] ; then + env -C "$p" du -cd2 "$d" + else + du -cd2 "$d" + fi | grep -Ev '^[0-9]\s' | sort -Vk2 +} + +git-gc() { + git-dir-usage || return $? + echo + idle git gc "$@" + echo + git-dir-usage +} + +git-gc-force() { + git-gc --aggressive --force +} \ No newline at end of file