summaryrefslogtreecommitdiffstats
path: root/hooks
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2008-11-03 10:32:09 -0800
committerShawn O. Pearce <sop@google.com>2008-11-03 11:00:44 -0800
commitc9ef744c7b5f6bcab446cf0a0bc9cc1b016dd5f8 (patch)
treeff1bd7309698ef0dd312daf205512b1fa96d3e8d /hooks
parent438ee1cad98ac32509718976e63c36a449bfb679 (diff)
downloadgit-repo-c9ef744c7b5f6bcab446cf0a0bc9cc1b016dd5f8.tar.gz
Install a default pre-auto-gc hook in all repositories
This hook is evaluated by `git gc --auto` to determine if it is a good idea to execute a GC at this time, or defer it to some later date. When working on a laptop its a good idea to avoid GC if you are on battery power as the extra CPU and disk IO would consume a decent amount of the charge. The hook is the standard sample hook from git.git contrib/hooks, last modified in git.git by 84ed4c5d117d72f02cc918e413b9861a9d2846d7. I added the GPLv2 header to the script to ensure the license notice is clear, as it does not match repo's own APLv2 license. We only update hooks during initial repository creation or on a repo sync. This way we don't incur huge overheads from the hook stat operations during "repo status" or even the normal "repo sync" cases. Signed-off-by: Shawn O. Pearce <sop@google.com>
Diffstat (limited to 'hooks')
-rwxr-xr-xhooks/pre-auto-gc44
1 files changed, 44 insertions, 0 deletions
diff --git a/hooks/pre-auto-gc b/hooks/pre-auto-gc
new file mode 100755
index 00000000..110e3194
--- /dev/null
+++ b/hooks/pre-auto-gc
@@ -0,0 +1,44 @@
1#!/bin/sh
2#
3# An example hook script to verify if you are on battery, in case you
4# are running Linux or OS X. Called by git-gc --auto with no arguments.
5# The hook should exit with non-zero status after issuing an appropriate
6# message if it wants to stop the auto repacking.
7
8# This program is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2 of the License, or
11# (at your option) any later version.
12#
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the GNU General Public License
19# along with this program; if not, write to the Free Software
20# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
22if test -x /sbin/on_ac_power && /sbin/on_ac_power
23then
24 exit 0
25elif test "$(cat /sys/class/power_supply/AC/online 2>/dev/null)" = 1
26then
27 exit 0
28elif grep -q 'on-line' /proc/acpi/ac_adapter/AC/state 2>/dev/null
29then
30 exit 0
31elif grep -q '0x01$' /proc/apm 2>/dev/null
32then
33 exit 0
34elif grep -q "AC Power \+: 1" /proc/pmu/info 2>/dev/null
35then
36 exit 0
37elif test -x /usr/bin/pmset && /usr/bin/pmset -g batt |
38 grep -q "Currently drawing from 'AC Power'"
39then
40 exit 0
41fi
42
43echo "Auto packing deferred; not on AC"
44exit 1