]> rtime.felk.cvut.cz Git - sojka/duhome.git/blob - duhome
fce4328d0a18c8055ca829e5397c859c1c316eaa
[sojka/duhome.git] / duhome
1 #!/bin/sh
2
3 set -e
4
5 DATA=/var/lib/duhome
6
7 case "$1" in
8     init)
9         mkdir -p $DATA
10         cd $DATA
11         git init
12         ;;
13     save)
14         cd $DATA
15         git rm --force --quiet '*' # Remove old data - perhaps, some homes were removed
16         for i in /home/*; do
17             du -shx $i | cut -f1 > ${i#/home/};
18             git add ${i#/home/}
19         done
20         ;;
21     commit)
22         cd $DATA
23         shift
24         GIT_AUTHOR_NAME="$0" GIT_AUTHOR_EMAIL="$USER@$(hostname -f)" \
25             git commit --quiet -m 'Automatic commit' "$@" > /dev/null || :
26         ;;
27     status)
28         cd $DATA
29         grep . *|sort -h -k2 -t:
30         git ls-files --with-tree=HEAD | while read f; do
31             echo "$f:$(git show "HEAD:$f")"
32         done | sort -h -k2 -t:
33         ;;
34     log)
35         cd $DATA
36         dir=$2
37         if ! [ "$dir" ]; then echo "Missing directory name" >&2; exit 1; fi
38         if ! [ -f "$dir" ]; then echo "No information about $dir in $DATA" >&2; exit 1; fi
39         git log --format='%H %ci' -- $dir | while read commit date; do
40             echo $date $(git show $commit:$dir)
41         done
42         ;;
43     help|"")
44         cat <<EOF
45 Usage: $0 <command> [ <options> ]
46
47 Commands:
48 - init
49 - save
50 - commit [ <git commit arguments> ]
51 - status
52 - log <directory>
53 EOF
54         ;;
55 esac