1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

macOS で git-prompt.bash の代わりに git-prompt.zsh を使い git status 表示を爆速にする

Posted at

M1 macOS (11.0.1)で検証しました.

【zsh】絶対やるべき!ターミナルでgitのブランチ名を表示&補完【git-prompt / git-completion】
https://qiita.com/mikan3rd/items/d41a8ca26523f950ea9d

ありがとうございます. git-prompt 便利ですよね.
でも私の macOS 環境(Macports だけ入っているくらいのほぼ素の環境)ではなぜか劇遅でした(ついでに言うと Linux でも)

llvm-project みたいにでかい git repo だと, ディレクトリ移動するごとに数秒待たされて仕事になりません.

git-prompt は特に Windows で劇遅であることが知られています.

Windows GitBash のプロンプト表示が遅いのをなんとかしたかった
https://neos21.hatenablog.com/entry/2018/12/31/080000

git ls あたりが遅いのが原因のようです. 原因解明して対処するのも面倒です.
(とりあえずの対処は上記 site のように branch 名だけ表示するように __git_ps1 あたりを自前で作る)

zsh 版 git-prompt

いくつか同名や似たプロジェクトがあるようですが, 今回は woefe/git-prompt.zsh を使いました.

git-completion と連携できます.
miniforge(miniconda)と連携したかったので .zshrc は以下のような感じになりました.

fpath=(~/.zsh $fpath)
zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.bash
autoload -Uz compinit && compinit


source ~/.zsh/git-prompt.zsh/git-prompt.zsh
source ~/.zsh/git-prompt.zsh/examples/default.zsh

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/syoyo/miniforge3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/Users/syoyo/miniforge3/etc/profile.d/conda.sh" ]; then
        . "/Users/syoyo/miniforge3/etc/profile.d/conda.sh"
    else
        export PATH="/Users/syoyo/miniforge3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

Screen Shot 2020-12-19 at 1.39.46.png

こんな感じで表示されて, llvm-project のようなでかい git repo でも爆速にサクサク動くのを確認しました :tada:
(実際は遅延評価 + cache してレスポンス上げているっぽいようです)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?