I have a work computer, and it's configured globally to use my work email and name when committing. This is good. However, I'd like to make some sort of rule that says, "if the repo origin is github, use user X and email Y"
I realize you can make a config entry per repository, but I'd like it to be more automatic: if the clone is github, it should use github user details. If I clone from work, it should use work details.
Is there any way to configure this globally based on the remote domain? Or another way?
EDIT/UPDATE
I have accepted the answer below, but modified the script just a bit:
#!/usr/bin/env bash
# "Real" git is the second one returned by 'which'
REAL_GIT=$(which -a git | sed -n 2p)
# Does the remote "origin" point to GitHub?
if ("$REAL_GIT" remote -v 2>/dev/null | grep '^origin\b.*github.com.*(push)$' >/dev/null 2>&1); then
# Yes. Set username and email that you use on GitHub.
export GIT_AUTHOR_NAME=$("$REAL_GIT" config --global user.ghname)
export GIT_AUTHOR_EMAIL=$("$REAL_GIT" config --global user.ghemail)
fi
"$REAL_GIT" "$@"
The primary addition is the requirement for two git config
values.
git config --global user.ghname "Your Name"
git config --global user.ghemail "you@yourmail.com"
This avoids hard coding the values in the script, allowing it to be more portable. Maybe?