Browse Source

fix: do not call chpwd hooks in subshells

Marc Cornellà 2 years ago
parent
commit
84931adcd4
2 changed files with 10 additions and 10 deletions
  1. 5 5
      lib/cli.zsh
  2. 5 5
      tools/check_for_upgrade.sh

+ 5 - 5
lib/cli.zsh

@@ -37,7 +37,7 @@ function _omz {
   elif (( CURRENT == 3 )); then
     case "$words[2]" in
       changelog) local -a refs
-        refs=("${(@f)$(cd "$ZSH"; command git for-each-ref --format="%(refname:short):%(subject)" refs/heads refs/tags)}")
+        refs=("${(@f)$(builtin cd -q "$ZSH"; command git for-each-ref --format="%(refname:short):%(subject)" refs/heads refs/tags)}")
         _describe 'command' refs ;;
       plugin) subcmds=(
         'disable:Disable plugin(s)'
@@ -176,7 +176,7 @@ function _omz::changelog {
   local version=${1:-HEAD} format=${3:-"--text"}
 
   if (
-    cd "$ZSH"
+    builtin cd -q "$ZSH"
     ! command git show-ref --verify refs/heads/$version && \
     ! command git show-ref --verify refs/tags/$version && \
     ! command git rev-parse --verify "${version}^{commit}"
@@ -761,7 +761,7 @@ function _omz::theme::use {
 }
 
 function _omz::update {
-  local last_commit=$(cd "$ZSH"; git rev-parse HEAD)
+  local last_commit=$(builtin cd -q "$ZSH"; git rev-parse HEAD)
 
   # Run update script
   if [[ "$1" != --unattended ]]; then
@@ -777,7 +777,7 @@ function _omz::update {
   command rm -rf "$ZSH/log/update.lock"
 
   # Restart the zsh session if there were changes
-  if [[ "$1" != --unattended && "$(cd "$ZSH"; git rev-parse HEAD)" != "$last_commit" ]]; then
+  if [[ "$1" != --unattended && "$(builtin cd -q "$ZSH"; git rev-parse HEAD)" != "$last_commit" ]]; then
     # Old zsh versions don't have ZSH_ARGZERO
     local zsh="${ZSH_ARGZERO:-${functrace[-1]%:*}}"
     # Check whether to run a login shell
@@ -787,7 +787,7 @@ function _omz::update {
 
 function _omz::version {
   (
-    cd "$ZSH"
+    builtin cd -q "$ZSH"
 
     # Get the version name:
     # 1) try tag-like version

+ 5 - 5
tools/check_for_upgrade.sh

@@ -36,11 +36,11 @@ function current_epoch() {
 
 function is_update_available() {
   local branch
-  branch=${"$(cd "$ZSH"; git config --local oh-my-zsh.branch)":-master}
+  branch=${"$(cd -q "$ZSH"; git config --local oh-my-zsh.branch)":-master}
 
   local remote remote_url remote_repo
-  remote=${"$(cd "$ZSH"; git config --local oh-my-zsh.remote)":-origin}
-  remote_url=$(cd "$ZSH"; git config remote.$remote.url)
+  remote=${"$(cd -q "$ZSH"; git config --local oh-my-zsh.remote)":-origin}
+  remote_url=$(cd -q "$ZSH"; git config remote.$remote.url)
 
   local repo
   case "$remote_url" in
@@ -58,7 +58,7 @@ function is_update_available() {
 
   # Get local HEAD. If this fails assume there are updates
   local local_head
-  local_head=$(cd "$ZSH"; git rev-parse $branch 2>/dev/null) || return 0
+  local_head=$(cd -q "$ZSH"; git rev-parse $branch 2>/dev/null) || return 0
 
   # Get remote HEAD. If no suitable command is found assume there are updates
   # On any other error, skip the update (connection may be down)
@@ -136,7 +136,7 @@ function update_ohmyzsh() {
   fi
 
   # Test if Oh My Zsh directory is a git repository
-  if ! (cd "$ZSH" && LANG= git rev-parse &>/dev/null); then
+  if ! (cd -q "$ZSH" && LANG= git rev-parse &>/dev/null); then
     echo >&2 "[oh-my-zsh] Can't update: not a git repository."
     return
   fi