もりはやメモφ(・ω・ )

ITとか読書感想文とか

brew upgrade 後、 fish で "fatal: not a git repository (or any of the parent directories): .git" がコマンドを打つたびに出た

オリンピックの開会式を見ながら、久しぶりに brew upgrade を実施したところ、エンターを打つたびに以下のエラーが出る様になり慌てました。

fatal: not a git repository (or any of the parent directories): .git

brew upgrade 前までは以下の様なちょっとオシャレなターミナル表示だったので、モチベーションが下がってしまいます。*1

f:id:morihaya:20210724003203p:plain
fish

ググると*2以下のブログにたどり着けて、どうやらfishのバージョンアップが問題であることがわかりました。このような偉大な先人たちの知見がWebに上がっており、しかも日本語で読めるとは大変にありがたいことです。goropikarikunさんありがとうございます。

goropikari.hatenablog.com

ちなみにアップグレード後のfishのバージョンは以下の通りです。

$ fish --version                                                                                                                                                                                                                                                            7.2m
fish, version 3.3.1

使用しているfishのthemeが、私は bobthefish でしたので、この際こちらも最新化のために入れ直しをしました。もともとthemeのインストールには oh-my-fishを使っていたので omf コマンドで行っています。

$ omf uninstall bobthefish
$ omf install bobthefish

github.com

github.com

ついでに bobthefish のオプションも見直そうと、デフォルトを記述し直すことにしました。

$ vim  ~/.config/fish/config.fish
して以下を追記
---
set -g theme_display_git no
set -g theme_display_git_dirty no
set -g theme_display_git_untracked no
set -g theme_display_git_ahead_verbose yes
set -g theme_display_git_dirty_verbose yes
set -g theme_display_git_stashed_verbose yes
set -g theme_display_git_default_branch yes
set -g theme_git_default_branches master main
set -g theme_git_worktree_support yes
set -g theme_use_abbreviated_branch_name yes
set -g theme_display_vagrant yes
set -g theme_display_docker_machine no
set -g theme_display_k8s_context yes
set -g theme_display_hg yes
set -g theme_display_virtualenv no
set -g theme_display_nix no
set -g theme_display_ruby no
set -g theme_display_node yes
set -g theme_display_user ssh
set -g theme_display_hostname ssh
set -g theme_display_vi no
set -g theme_display_date no
set -g theme_display_cmd_duration yes
set -g theme_title_display_process yes
set -g theme_title_display_path no
set -g theme_title_display_user yes
set -g theme_title_use_abbreviated_path no
set -g theme_date_format "+%a %H:%M"
set -g theme_date_timezone America/Los_Angeles
set -g theme_avoid_ambiguous_glyphs yes
set -g theme_powerline_fonts no
set -g theme_nerd_fonts yes
set -g theme_show_exit_status yes
set -g theme_display_jobs_verbose yes
set -g default_user your_normal_user
set -g theme_color_scheme dark
set -g fish_prompt_pwd_dir_length 0
set -g theme_project_dir_length 1
set -g theme_newline_cursor yes
set -g theme_newline_prompt '$ '

すると上述したエラーは発生しなくなりましたが、gitリポジトリに移動してもブランチ名が表示されなくなってしまいました。

調べるとoh-my-fish/theme-bobthefish/issues/196 で解決策が提示されていたので試したところ、無事にブランチ名の表示もされるようになりました。ついでに他のオプション値も眺め直したので、また満足のいくターミナルライフが送れそうです。

無闇にアップデートすると想定外が起きるのはつきものですが、それもいい機会と考えてトラシューすると知見が広がったりするので大事にしたいですね。*3

というわけで、

  1. fishのアップデート
  2. theme-bobthefishのアップデート
  3. gitリポジトリでブランチ名が表示されなくて困った

という方は以下を ~/.config/fish/config.fish へ追記すると事象が解消するかもしれません。根本的にはこのオプションがちゃんと動作してないのが問題な気がしていて、Issue自体もクローズされていないので今後状況が変わるかもしれませんが、それはまたその時の知見というやつでしょう。

# theme_git_worktree_support has probrem??. See https://github.com/oh-my-fish/theme-bobthefish/issues/196#issuecomment-486169698
set -g theme_git_worktree_support no

最後に、goropikarikunさんのブログがなければさらに数時間を溶かしていたと思うので、改めて感謝です。 インターネット&そこに知見を上げ続けるみなさんに感謝しつつ、私もこのメモを上げておきます。

*1:多分生産性はそこまで変わらない気はします

*2:正確には最近はDuckDuckGoを使っているのだけれど便宜上こう呼ぶ

*3:どうしてもダメならバージョンを戻すしかないけど