#!/bin/sh tmp=$(mktemp -t "${0##*/}.XXXXXX") trap "rm -rf '${tmp}'" EXIT cat <<\EOF >"${tmp}" decode() { awk -vid="$1" -vtype="$2" '$1 == id { match($0, /^[^=]*=\s*([^<]*)<([^>]*)>/, a); name = gensub(/\s+$/, "", "g", a[1]); name = gensub(/^"/, "", "g", name); name = gensub(/"$/, "", "g", name); name = gensub(/'\''/, "'\''\\\\'\'''\''", "g", name); 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 if [ -L "${author_file}" ] ; then echo "error: ${author_file} is a broken link" exit 1 fi done if [ ! -e "${author_file}" ] ; then echo "error: could not find ${author_file}" exit 1 fi FILTER_BRANCH_SQUELCH_WARNING=1 \ exec git filter-branch \ --env-filter ". '${tmp}';"' \ eval "$(decode "${GIT_AUTHOR_NAME}" AUTHOR)"; \ eval "$(decode "${GIT_COMMITTER_NAME}" COMMITTER)"; \ ' "$@"