]> git.wh0rd.org - home.git/blame - .bin/git-rewrite-authors
cros-board: update
[home.git] / .bin / git-rewrite-authors
CommitLineData
e36215f2 1#!/bin/sh
6c162084 2
e36215f2
MF
3tmp=$(mktemp -t "${0##*/}.XXXXXX")
4trap "rm -rf '${tmp}'" EXIT
f8645298 5cat <<\EOF >"${tmp}"
6c162084
MF
6decode() {
7 awk -vid="$1" -vtype="$2" '$1 == id {
a51e0311
MF
8 match($0, /^[^=]*=\s*([^<]*)<([^>]*)>/, a);
9 name = gensub(/\s+$/, "", "g", a[1]);
47e61d03
MF
10 name = gensub(/^"/, "", "g", name);
11 name = gensub(/"$/, "", "g", name);
12 name = gensub(/'\''/, "'\''\\\\'\'''\''", "g", name);
a51e0311
MF
13 email = a[2];
14 print "export GIT_"type"_NAME='\''" name "'\'';"
15 print "export GIT_"type"_EMAIL='\''" email "'\'';"
e36215f2 16 }' "${author_file}"
6c162084
MF
17}
18EOF
19
20for x in cvs-authors authors ; do
e36215f2
MF
21 export author_file="${PWD}/.git/${x}"
22 [ -e "${author_file}" ] && break
23 if [ -L "${author_file}" ] ; then
24 echo "error: ${author_file} is a broken link"
25 exit 1
26 fi
6c162084 27done
5b0dff8a
MF
28if [ ! -e "${author_file}" ] ; then
29 echo "error: could not find ${author_file}"
30 exit 1
31fi
f7555918
MF
32FILTER_BRANCH_SQUELCH_WARNING=1 \
33exec git filter-branch \
47e61d03
MF
34 --env-filter ". '${tmp}';"' \
35 eval "$(decode "${GIT_AUTHOR_NAME}" AUTHOR)"; \
36 eval "$(decode "${GIT_COMMITTER_NAME}" COMMITTER)"; \
6c162084 37' "$@"