Add git-edit-email script
authorSiraaj Khandkar <siraaj@khandkar.net>
Wed, 13 Mar 2019 01:37:46 +0000 (21:37 -0400)
committerSiraaj Khandkar <siraaj@khandkar.net>
Wed, 13 Mar 2019 01:37:46 +0000 (21:37 -0400)
bin/git-edit-email [new file with mode: 0755]

diff --git a/bin/git-edit-email b/bin/git-edit-email
new file mode 100755 (executable)
index 0000000..e79a950
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# =============================================================================
+# This is a modified version of this:
+# https://help.github.com/articles/changing-author-info
+# =============================================================================
+
+
+FILTER_SCRIPT_TEMPLATE='
+an="$GIT_AUTHOR_NAME";
+am="$GIT_AUTHOR_EMAIL";
+cn="$GIT_COMMITTER_NAME";
+cm="$GIT_COMMITTER_EMAIL";
+
+if [ "$GIT_COMMITTER_EMAIL" = "OLD_COMMITTER_EMAIL" ];
+then
+    cn="$GIT_COMMITTER_NAME";
+    cm="NEW_COMMITTER_EMAIL";
+fi;
+
+if [ "$GIT_AUTHOR_EMAIL" = "OLD_AUTHOR_EMAIL" ];
+then
+    an="$GIT_AUTHOR_NAME";
+    am="NEW_AUTHOR_EMAIL";
+fi;
+
+export GIT_AUTHOR_NAME="$an";
+export GIT_AUTHOR_EMAIL="$am";
+export GIT_COMMITTER_NAME="$cn";
+export GIT_COMMITTER_EMAIL="$cm";
+'
+
+
+git_filter_branch() {
+    git filter-branch -f --env-filter "$1"
+}
+
+
+main() {
+    old_email="$1"
+    new_email="$2"
+
+    filter_script=$(\
+        echo $FILTER_SCRIPT_TEMPLATE \
+        | sed "s/OLD_COMMITTER_EMAIL/$old_email/g" \
+        | sed "s/NEW_COMMITTER_EMAIL/$new_email/g" \
+        | sed "s/OLD_AUTHOR_EMAIL/$old_email/g" \
+        | sed "s/NEW_AUTHOR_EMAIL/$new_email/g" \
+    )
+
+    git_filter_branch "$filter_script"
+}
+
+main "$@"
This page took 0.027079 seconds and 4 git commands to generate.