--- /dev/null
+#!/bin/bash
+
+tmp=$(mktemp)
+cat << \EOF > ${tmp}
+decode() {
+ awk -vid="$1" -vtype="$2" '$1 == id {
+ print "export GIT_"type"_NAME='\''" $3 " " $4 "'\'';"
+ print "export GIT_"type"_EMAIL='\''" $5 "'\'';"
+ }' ${author_file}
+}
+EOF
+
+for x in cvs-authors authors ; do
+ export author_file=${PWD}/.git/$x
+ [ -e ${author_file} ] && break
+done
+git filter-branch \
+ --env-filter ". ${tmp};"' \
+ eval `decode "${GIT_AUTHOR_NAME}" AUTHOR`; \
+ eval `decode "${GIT_COMMITTER_NAME}" COMMITTER`; \
+' "$@"
+
+rm -f $tmp