aboutsummaryrefslogtreecommitdiff
path: root/bin/gscr
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2016-08-09 17:15:40 +1200
committerTom Ryder <tom@sanctum.geek.nz>2016-08-09 17:20:10 +1200
commit9fb350dc7c8cc5259ef24e0cb097031179fab1d6 (patch)
tree839dd0b8ee3f5323b1cd6aefa22b605b99437d62 /bin/gscr
parentMention nosls/sls flags in slsf(1) man page (diff)
downloaddotfiles-9fb350dc7c8cc5259ef24e0cb097031179fab1d6.tar.gz
dotfiles-9fb350dc7c8cc5259ef24e0cb097031179fab1d6.zip
Improve commenting/exit handling in binscripts
Diffstat (limited to 'bin/gscr')
-rwxr-xr-xbin/gscr16
1 files changed, 15 insertions, 1 deletions
diff --git a/bin/gscr b/bin/gscr
index 4f7e469c..cac969fe 100755
--- a/bin/gscr
+++ b/bin/gscr
@@ -1,6 +1,13 @@
#!/bin/sh
-# Scrub a Git repository
+# Scrub and pack Git repositories
+
+# Iterate through given directories; default to the current one
for arg in "${@:-.}" ; do (
+
+ # Note the "exit" calls here in lieu of "continue" are deliberate; we're in
+ # a subshell, so leaving it will continue the loop.
+
+ # Enter either bare repository or .git subdir
case $arg in
*.git)
cd -- "$arg" || exit
@@ -9,7 +16,14 @@ for arg in "${@:-.}" ; do (
cd -- "$arg"/.git || exit
;;
esac
+
+ # Check for bad references or other integrity/sanity problems
git fsck || exit
+
+ # Expire dangling references
git reflog expire --expire=now || exit
+
+ # Remove dangling references
git gc --prune=now --aggressive || exit
+
) done