#!/bin/sh set -eu AUTHORS_FILE=$(git config svn.authorsfile) || \ AUTHORS_FILE=$(git config svn-remote.svn.authorsfile) || { echo "ERROR: set config.svn.authorsfile!" exit 128 } export AUTHORS_FILE=$(readlink -f $AUTHORS_FILE) git filter-branch -f --tag-name-filter cat --env-filter ' function replacement() { REPL=$(awk -F"[[:space:]]*=[[:space:]]*" "/$1/ {print \$2}" $AUTHORS_FILE) MAIL=$(echo "$REPL"|awk "{print \$NF}"|tr -d "<>" ) NAME=$(echo "$REPL"|awk "{print gensub(/[[:space:]]*<[^[:space:]]*/,\"\",\"\")}" ) } replacement "${GIT_AUTHOR_NAME}" #if [ "x$NAME" == "x" ] ; then # echo -e "\nERROR: When changing ${GIT_COMMIT} we got empty reply." # echo -e "I do not know how to map ${GIT_AUTHOR_NAME}.\n" # set|grep ^GIT # exit 1 #fi if [ "x$NAME" != "x" ] ; then export GIT_AUTHOR_NAME="$NAME" export GIT_AUTHOR_EMAIL="$MAIL" export GIT_COMMITTER_NAME="$NAME" export GIT_COMMITTER_EMAIL="$MAIL" fi ' -- --tags git filter-branch -f --env-filter ' function replacement() { REPL=$(awk -F"[[:space:]]*=[[:space:]]*" "/$1/ {print \$2}" $AUTHORS_FILE) MAIL=$(echo "$REPL"|awk "{print \$NF}"|tr -d "<>" ) NAME=$(echo "$REPL"|awk "{print gensub(/[[:space:]]*<[^[:space:]]*/,\"\",\"\")}" ) } replacement "${GIT_AUTHOR_NAME}" #if [ "x$NAME" == "x" ] ; then # echo -e "\nERROR: When changing ${GIT_COMMIT} we got empty reply." # echo -e "I do not know how to map ${GIT_AUTHOR_NAME}.\n" # set|grep ^GIT # exit 1 #fi if [ "x$NAME" != "x" ] ; then export GIT_AUTHOR_NAME="$NAME" export GIT_AUTHOR_EMAIL="$MAIL" export GIT_COMMITTER_NAME="$NAME" export GIT_COMMITTER_EMAIL="$MAIL" fi ' -- --all