Created
September 2, 2017 19:05
-
-
Save deskid/d025f48d4cc7e25b51e3c999c00c2a19 to your computer and use it in GitHub Desktop.
Revisions
-
deskid created this gist
Sep 2, 2017 .There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,83 @@ #!/usr/bin/env bash # 用 repo 的 "remote.origin.url" 来匹配user配置 git_remotes[0]="github" git_remotes[1]="gitlab" # user info配置 local_id_0[0]="github user" local_id_0[1]="github email" local_id_1[0]="gitlab user" local_id_1[1]="gitlab email" # 默认 User info local_fallback_id[0]="${local_id_0[0]}" local_fallback_id[1]="${local_id_0[1]}" # 设置 Use info setIdentity() { local current_id local_id current_id[0]="$(git config --get --local user.name)" current_id[1]="$(git config --get --local user.email)" local_id=("$@") if [[ "${current_id[0]}" == "${local_id[0]}" && "${current_id[1]}" == "${local_id[1]}" ]]; then printf " Local identity is:\n" printf "» User: %s\n» Mail: %s\n\n" "${current_id[@]}" else printf "» User: %s\n» Mail: %s\n\n" "${local_id[@]}" git config --local user.name "${local_id[0]}" git config --local user.email "${local_id[1]}" fi return 0 } current_remote_url="$(git config --get --local remote.origin.url)" if [[ "$current_remote_url" ]]; then for service in "${git_remotes[@]}"; do # 关闭正则匹配的大小写 shopt -s nocasematch if [[ "$current_remote_url" =~ $service ]]; then case "$service" in "${git_remotes[0]}" ) printf "\n»» An Intermission\n» %s repository found." "${git_remotes[0]}" setIdentity "${local_id_0[@]}" exit 0 ;; "${git_remotes[1]}" ) printf "\n»» An Intermission\n» %s repository found." "${git_remotes[1]}" setIdentity "${local_id_1[@]}" exit 0 ;; * ) printf "\n» pre-commit hook: unknown error\n» Quitting.\n" exit 1 ;; esac fi done else printf "\n»» An Intermission\n» No remote repository set. Using local fallback identity:\n" printf "» User: %s\n» Mail: %s\n\n" "${local_fallback_id[@]}" git config --local user.name "${local_fallback_id[0]}" git config --local user.email "${local_fallback_id[1]}" fi exit 0