blob: 1bfb29367dabb4c0131d8b42af5a8b581b0e4b66 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#!/usr/bin/env bash
VERBOSE=0
NO_HOUR=0
P='.'
POSITIONAL=()
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-v|--verbose)
VERBOSE=1
shift
;;
-n|--no-hour)
NO_HOUR=1
shift
;;
-h|--help)
echo "Usage: commits_by_hour [-v] [-n] [path]"
echo " -v,--verbose Be more verbose, print all hours"
echo " -n,--no-hour Don\'t print hours"
echo " -h,--help Show this help message"
echo " path Path to git repository (Default: .)"
exit 0
;;
*)
P=$1
shift
;;
esac
done
cd $P
# Writes number of commits categorized by hour of the day
LOG=$(git log --format="%ad" | \
sed -Ee 's/.*([0-9]{2})(:[0-9]{2}){2}.*/\1/g' | \
sort | \
uniq -c | \
sed -Ee 's/^ +([0-9]+) ([0-9]+)/\2 \1/g')
HOURS=({00..23})
for h in ${HOURS[*]}; do
l=$(echo "$LOG" | grep -Eo "^$h [0-9]+")
RES=$?
if [ $RES -gt 0 ]; then # No commits in this hour
if [ $VERBOSE -gt 0 ]; then
if [ $NO_HOUR -gt 0 ]; then
echo 0
else
echo $h 0
fi
fi
else
if [ $NO_HOUR -gt 0 ]; then
echo `echo $l | sed -E 's/^[0-9]{2} ([0-9]+)$/\1/g'`
else
echo $l
fi
fi
done
|