仕事用のコンピューターがあり、コミット時に仕事用の電子メールと名前を使用するようにグローバルに構成されています。これはいい。ただし、「レポオリジンがgithubの場合、ユーザーXとメールYを使用する」というようなルールを作りたいと思います。
リポジトリごとに構成エントリを作成できることはわかっていますが、もっと自動化してほしいと思います。クローンが github の場合は、github ユーザーの詳細を使用する必要があります。仕事から複製する場合は、仕事の詳細を使用する必要があります。
これをリモート ドメインに基づいてグローバルに構成する方法はありますか? それとも別の方法ですか?
編集/更新
以下の回答を受け入れましたが、スクリプトを少し変更しました。
#!/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" "$@"
git config
主な追加は、2 つの値の要件です。
git config --global user.ghname "Your Name"
git config --global user.ghemail "you@yourmail.com"
これにより、スクリプトに値をハードコーディングする必要がなくなり、移植性が向上します。多分?