-
Notifications
You must be signed in to change notification settings - Fork 39
/
git-fix-author
executable file
·35 lines (30 loc) · 1.2 KB
/
git-fix-author
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env bash
##############################################################################
#
# git-fix-author
# -------------------
# Change all occurences of one author in git commits to another.
#
# @author Isis Agora Lovecruft, 0x2cdb8b35
# @date 24 March 2013
# @version 0.0.1
##############################################################################
## git filter-branch to remove authorname
cat <<EOF
What is the name of the author you would like to filter?
(e.g. if git log shows "Author: Anon <anon@localhost>", then the
author's name would be given as "Anon")
EOF
read -p"What is the name of the author you would like to filter?" orig_author
read -p"What name would you like to replace it with?" new_author
read -p"What is the new author's email address?" new_email
echo "Should we filter the current branch now, changing all occurences of"
read -p"$orig_author to $new_author <$new_email> ? (y/N)" choice
case $choice in
y|Y)
git filter-branch --commit-filter 'if [ "$GIT_AUTHOR_NAME" = "$orig_author" ]; then export GIT_AUTHOR_NAME="$new_author" ; export GIT_AUTHOR_EMAIL="$new_email" ; fi; git commit-tree "$@"'
;;
*)
echo "Exiting..." && exit 0
;;
esac