From: Miklos Vajna Date: Tue, 01 Apr 2008 11:39:59 GMT Subject: [PATCH 4/4] contrib/hooks: add an example pre-auto-gc hook Message-ID: <52c671c64b2f203793ee88a84fee6f83cba2a4ff.1207049697.git.vmiklos@frugalware.org> In-Reply-To: <7vsky6jhz3.fsf@gitster.siamese.dyndns.org> It disables git-gc --auto when you are running Linux and you are on battery. Signed-off-by: Miklos Vajna --- contrib/hooks/pre-auto-gc-battery | 45 +++++++++++++++++++++++++++++++++++++ 1 files changed, 45 insertions(+), 0 deletions(-) create mode 100644 contrib/hooks/pre-auto-gc-battery diff --git a/contrib/hooks/pre-auto-gc-battery b/contrib/hooks/pre-auto-gc-battery new file mode 100644 index 0000000..4077111 --- /dev/null +++ b/contrib/hooks/pre-auto-gc-battery @@ -0,0 +1,45 @@ +#!/bin/sh +# +# An example hook script to verify if you are on battery, in case you +# are running Linux. Called by git-gc --auto with no arguments. The hook +# should exit with non-zero status after issuing an appropriate message +# if it wants to stop the auto repacking. +# +# This hook is stored in the contrib/hooks directory. Your distribution +# will have put this somewhere standard. You should make this script +# executable then link to it in the repository you would like to use it +# in. +# +# For example, if the hook is stored in +# /usr/share/git-core/contrib/hooks/pre-auto-gc-battery: +# +# chmod a+x pre-auto-gc-battery +# cd /path/to/your/repository.git +# ln -sf /usr/share/git-core/contrib/hooks/pre-auto-gc-battery \ +# hooks/pre-auto-gc-battery + +defer=0 + +if [ -e /sbin/on_ac_power ]; then + /sbin/on_ac_power + if [ $? = 1 ]; then + defer = 1 + fi +elif [ -e /sys/class/power_supply/AC/online ]; then + if [ "`cat /sys/class/power_supply/AC/online`" = 0 ]; then + defer=1 + fi +elif [ -e /proc/acpi/ac_adapter/AC/state ]; then + if grep -q 'off-line' /proc/acpi/ac_adapter/AC/state; then + defer=1 + fi +elif [ -e /proc/apm ]; then + if grep -q '0$' /proc/apm; then + defer=1 + fi +fi + +if [ "$defer" = 1 ]; then + echo "Auto packing deferred; on battery" + exit 1 +fi -- 1.5.5.rc2.4.gec07.dirty