-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgit-fixauthor
executable file
·52 lines (41 loc) · 1.25 KB
/
git-fixauthor
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash
set -o nounset
set -o errexit
SCRIPTFILE=$(mktemp /tmp/$(basename $0).XXXXXXXX)
if [ $? -ne 0 ] ; then
echo "$0: failed to create tmp scriptfile" 1>&2
exit 1
fi
trap "rm -f $SCRIPTFILE" EXIT
if [ $# -ne 3 ] ; then
echo "usage: $0 <Old Email Address> <New Name> <New Email Address>" 1>&2
exit 1
fi
oldmail="$1"
newname="$2"
newmail="$3"
#git filter-branch \
# -f \
# --env-filter \
# "GIT_AUTHOR_NAME='$newname'; GIT_AUTHOR_EMAIL='$newmail'; GIT_COMMITTER_NAME='$newname'; GIT_COMMITTER_EMAIL='$newmail';" \
# HEAD
cat > $SCRIPTFILE << EOF
if [ "\$GIT_AUTHOR_EMAIL" = "$oldmail" -o "\$GIT_COMMITTER_EMAIL" = "$oldmail" ] ; then
GIT_AUTHOR_NAME="$newname"
GIT_AUTHOR_EMAIL="$newmail"
GIT_COMMITTER_NAME="$newname"
GIT_COMMITTER_EMAIL="$newmail"
fi
EOF
cat $SCRIPTFILE
git filter-branch -f --env-filter "source $SCRIPTFILE" HEAD
#
# git filter-branch --env-filter '
# if [ "$GIT_AUTHOR_EMAIL" = "wrong_email@wrong_host.local" -o "$GIT_COMMITTER_EMAIL" = "wrong_email@wrong_host.local" ];
# then
# GIT_AUTHOR_NAME="Your Name Here (In Lights)";
# GIT_AUTHOR_EMAIL="correct_email@correct_host.com";
# git commit-tree "$@";
# else
# git commit-tree "$@";
# fi' HEAD