diff options
-rwxr-xr-x | git-svn-fix-authors.sh | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/git-svn-fix-authors.sh b/git-svn-fix-authors.sh index 16acdf4..7b46ef4 100755 --- a/git-svn-fix-authors.sh +++ b/git-svn-fix-authors.sh @@ -1,13 +1,14 @@ #!/bin/sh set -eu -AUTHORS_FILE=$(git config svn.authorsfile) || { +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 --env-filter ' +git filter-branch -f --tag-name-filter cat --env-filter ' function replacement() { REPL=$(awk -F"[[:space:]]*=[[:space:]]*" "/$1/ {print \$2}" $AUTHORS_FILE) @@ -16,15 +17,41 @@ function replacement() { } 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 +#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 |