Help us understand the problem. What is going on with this article?

GitリポジトリのURLごとに、pre-commit hook を用いて自動で Author を切り替える

なにこれ

業務での開発時は会社用の Author を利用しつつ、業務時間に個人のGitHubリポジトリをいじったり、OSSを触ったりする機会もあるので、ドメインごとに自動でAuthorを切り替えたいと思い。
なにかしら方法あるのではとググってみたら、以下に先達の通った道がありました。

GitリポジトリのURL毎に自動でコミット時のGithubアカウントを切り替える
githooks を使って会社とプライベート用の Author を自動変更するようにしたった

思い切り参考にさせていただきつつ、一部バグってたり、想定どおり動かないところを少し修正しました。
誰かの参考になるかもなので、コードを残しておきます。

※ 会社ドメインが複数必要だったので、ドメイン複数置いてます

修正後

#!/bin/sh

### Account config (Need to modify as your own)

GITHUB_DOMAIN="github.com"
GITHUB_NAME="tatsuroro"
GITHUB_EMAIL="me@userdomain.com"

GHE_DOMAIN="your-company-github.com"
GHE_DOMAIN_2="your-company-2-github.com"
GHE_NAME="tatsuro.nakamura"
GHE_EMAIL="tatsuro.nakamura@your-company.com"

###

raw_url="$(git config remote.origin.url)"
if echo "$raw_url" | grep https; then
  # for https
  remote_domain=$(echo $raw_url | sed -E 's/^.*(https):\/\/([^/]+).*/\2/g')
else
  # for ssh
  remote_domain=$(echo $raw_url | sed -E 's/^.*(ssh):\/\/([^/]+).*/\2/g')
fi

case "$remote_domain" in
  "$GITHUB_DOMAIN" )
    NAME=$GITHUB_NAME
    EMAIL=$GITHUB_EMAIL
    ;;
  "$GHE_DOMAIN" )
    NAME=$GHE_NAME
    EMAIL=$GHE_EMAIL
    ;;
  "$GHE_DOMAIN_2" )
    NAME=$GHE_NAME
    EMAIL=$GHE_EMAIL
    ;;
  * )
    echo "unknown remote domain $remote_domain"
    exit 0
    ;;
esac

FAIL=false

if [ "$(git config --local --get user.name)" != $NAME ]; then
  git config --local user.name $NAME
  echo "changed user.name to $NAME"
  FAIL=true
fi

if [ "$(git config --local --get user.email)" != $EMAIL ]; then
  git config --local user.email $EMAIL
  echo "changed user.email to $EMAIL"
  FAIL=true
fi

if $FAIL;then
  echo "try again!"
  exit 1
fi

git hooks の設定手順などは参考URLに詳しいので、そちらを参照のこと。

余談

ドメインごとに gitconfig を設定できればベストだったけど、そんな設定は無かった。
(global or system or local)

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away