blob: 4897493cf45e435d665b8e74cd7996c15722d9b3 (
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
|
#!/bin/sh
# This script can be used to add git-annex metadata to files when they're
# committed.
#
# Copyright 2014 Joey Hess <id@joeyh.name>
# License: GPL-3+
extract="$(git config metadata.extract || true)"
want="$(perl -e 'print (join("|", map {s/_/ /g; "^$_ - "} (split " ", shift())))' "$extract")"
if [ -z "$want" ]; then
exit 0
fi
echo "$want"
case "$(git config --bool metadata.overwrite || true)" in
true)
overwrite=1
;;
*)
overwrite=""
;;
esac
# By default, any existing metadata git-annex has stored is not overwritten
# with metadata taken from files. Uncomment this to enable.
#overwrite_metadata=1
addmeta () {
file="$1"
field="$2"
value="$3"
afield="$(echo "$field" | tr ' ' _)"
if [ "$overwrite" ]; then
p="$afield=$value"
else
p="$afield?=$value"
fi
git -c annex.alwayscommit=false annex metadata "$file" -s "$p" --quiet
}
if git rev-parse --verify HEAD >/dev/null 2>&1; then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
IFS="
"
for f in $(git diff-index --name-only --cached $against); do
if [ -e "$f" ]; then
for l in $(extract "$f" | egrep "$want"); do
field="${l%% - *}"
value="${l#* - }"
addmeta "$f" "$field" "$value"
done
fi
done
|