diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-09 17:15:40 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-09 17:20:10 +1200 |
commit | 9fb350dc7c8cc5259ef24e0cb097031179fab1d6 (patch) | |
tree | 839dd0b8ee3f5323b1cd6aefa22b605b99437d62 /bin/gscr | |
parent | Mention nosls/sls flags in slsf(1) man page (diff) | |
download | dotfiles-9fb350dc7c8cc5259ef24e0cb097031179fab1d6.tar.gz dotfiles-9fb350dc7c8cc5259ef24e0cb097031179fab1d6.zip |
Improve commenting/exit handling in binscripts
Diffstat (limited to 'bin/gscr')
-rwxr-xr-x | bin/gscr | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -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 |