Browse Source

Fix the way handle git identity settings

Emmanuel Bouthenot 9 years ago
parent
commit
d4b5dd0c0f
1 changed files with 12 additions and 9 deletions
  1. 12 9
      zsh/zshrc

+ 12 - 9
zsh/zshrc

@@ -78,22 +78,25 @@ unset VIMRC
 # Git
 #
 
-GIT_IDENTITY_OPTS=
+GIT_OPTIONS=()
 if [[ -n "${LC_SSH_FULLNAME}" ]]; then
-    GIT_IDENTITY_OPTS="-c 'user.name=${LC_SSH_FULLNAME}' ${GIT_IDENTITY_OPTS}"
+    GIT_OPTIONS+=(-c "user.name=${LC_SSH_FULLNAME}")
 fi
 if [[ -n "${LC_SSH_EMAIL}" ]]; then
-    GIT_IDENTITY_OPTS="-c 'user.email=${LC_SSH_EMAIL}' ${GIT_IDENTITY_OPTS}"
+    GIT_OPTIONS+=(-c "user.email=${LC_SSH_EMAIL}")
 fi
+export GIT_OPTIONS
 
-GIT_FAKE_HOME="$(readlink -f "${ZDOTDIR}/../tools/git")"
+export GIT_FAKE_HOME="$(readlink -f "${ZDOTDIR}/../tools/git")"
 if [[ -f "${GIT_FAKE_HOME}/.gitconfig" ]]; then
-    GIT_OPTS="LC_MESSAGES=en_US.UTF-8 HOME=${GIT_FAKE_HOME}"
-    alias git="${GIT_OPTS} git ${GIT_IDENTITY_OPTS}"
-    alias g="${GIT_OPTS} git ${GIT_IDENTITY_OPTS}"
-    unset GIT_OPTS
+    git() {
+        (
+            export LC_MESSAGES='en_US.UTF-8'
+            export HOME="${GIT_FAKE_HOME}"
+            =git ${GIT_OPTIONS} $@
+        )
+    }
 fi
-unset GIT_FAKE_HOME GIT_IDENTITY_OPTS
 
 #
 # Tmux