aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2016-07-01 10:19:41 +1200
committerTom Ryder <tom@sanctum.geek.nz>2016-07-01 10:20:22 +1200
commit3f53e69552a0780bf7783d2b6bb9f5ad456cf491 (patch)
treef637d76ace065bb445e551cc9c7d2362dcaec42e /bin
parentUpdate submodules (diff)
downloaddotfiles-3f53e69552a0780bf7783d2b6bb9f5ad456cf491.tar.gz
dotfiles-3f53e69552a0780bf7783d2b6bb9f5ad456cf491.zip
Add gscr(1), fgscr(1)
Diffstat (limited to 'bin')
-rwxr-xr-xbin/fgscr4
-rwxr-xr-xbin/gscr15
2 files changed, 19 insertions, 0 deletions
diff --git a/bin/fgscr b/bin/fgscr
new file mode 100755
index 00000000..2a50cc20
--- /dev/null
+++ b/bin/fgscr
@@ -0,0 +1,4 @@
+#!/bin/sh
+# Find all the Git repositories in a directory and scrub them all
+hash gscr || exit
+find "${@:-.}" -name '.git' -exec gscr {} +
diff --git a/bin/gscr b/bin/gscr
new file mode 100755
index 00000000..b96da8d7
--- /dev/null
+++ b/bin/gscr
@@ -0,0 +1,15 @@
+#!/bin/sh
+# Scrub a Git repository
+for arg in "${@:?}" ; do
+ case $arg in
+ *.git)
+ cd -- "$arg" || continue
+ ;;
+ *)
+ cd -- "$arg"/.git || continue
+ ;;
+ esac
+ git fsck || continue
+ git reflog expire --expire=now || continue
+ git gc --prune=now --aggressive || continue
+done