#!/bin/bash tmp=$(mktemp) cat << \EOF > ${tmp} decode() { awk -vid="$1" -vtype="$2" '$1 == id { match($0, /^[^=]*=\s*([^<]*)<([^>]*)>/, a); name = gensub(/\s+$/, "", "g", a[1]); email = a[2]; print "export GIT_"type"_NAME='\''" name "'\'';" print "export GIT_"type"_EMAIL='\''" email "'\'';" }' ${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