-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
For many years this was in a Google Keep note, so really good to properly version control it now.
- Loading branch information
1 parent
22faf0d
commit 8a58df6
Showing
1 changed file
with
38 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#!/usr/bin/env dash | ||
set -eu | ||
|
||
# deprecate-email: | ||
# Sometimes I remove email addresses from my GitHub profile. This makes the contributions in my profile disappear as the email address is no longer associated with my account. This script replaces commits with input email with current git config. | ||
|
||
if [ -z "$1" ]; then | ||
echo "Error: old_email argument is required." | ||
exit 1 | ||
fi | ||
|
||
old_email="$1" | ||
new_email="$(git config user.email)" | ||
new_name="$(git config user.name)" | ||
|
||
# Replacing author and committer emails has to be done separately to avoid unintentional overwrites | ||
# e.g. in commits with multiple authors. | ||
(export FILTER_BRANCH_SQUELCH_WARNING=1 && \ | ||
echo "1/2 Overwriting committer" && \ | ||
git filter-branch -f --commit-filter " | ||
if [ \"\$GIT_COMMITTER_EMAIL\" = \"$old_email\" ]; | ||
then | ||
GIT_COMMITTER_NAME=\"$new_name\"; | ||
GIT_COMMITTER_EMAIL=\"$new_email\"; | ||
git commit-tree \"\$@\"; | ||
else | ||
git commit-tree \"\$@\"; | ||
fi" HEAD && \ | ||
echo "2/2 Overwriting author" && \ | ||
git filter-branch -f --commit-filter " | ||
if [ \"\$GIT_AUTHOR_EMAIL\" = \"$old_email\" ]; | ||
then | ||
GIT_AUTHOR_NAME=\"$new_name\"; | ||
GIT_AUTHOR_EMAIL=\"$new_email\"; | ||
git commit-tree \"\$@\"; | ||
else | ||
git commit-tree \"\$@\"; | ||
fi" HEAD) |