概要
- CUIでのgit commitでは問題なくpre-commitが機能しているのに、みんな大好きでお馴染みSourcetreeではエラーになる問題を解決します
- こんなこと今までなかったのですが、なぜか発生したのです
環境
- macOS Mojave 10.14.6
- ruby 2.6.3
- rbenv 1.1.2
- pre-commit 0.39.0
- Sourcetree 3.2.1
前提
- ターミナルでpre-commitの正常作動を伴ったgit commitが可能であること
調査方法
以下のプリントデバッグで出力を見てみました。
.git/hooks/pre-commit
#!/usr/bin/env sh
# 追記ここから
echo '@@@@@@@@@'
echo `ruby -v`
echo `which ruby`
echo `which rbenv`
echo '@@@@@@@@@'
exit 1
# 追記ここまで
# This hook has a focus on portability.
(略)
上記の状態からターミナルで確認。こちらは問題なしです。
$ git commit --amend
@@@@@@@@@
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin18]
/Users/choripon/.rbenv/shims/ruby
/usr/local/bin/rbenv
@@@@@@@@@
しかし同じ環境にも関わらずSourcetreeでは、こうなります。
解決方法
.git/hooks/pre-commit
#!/usr/bin/env sh
# 追記
source ~/.bash_profile
# This hook has a focus on portability.
(略)
-
source ~/.bash_profile
を追記しました -
eval "$(rbenv init -)"
を.bash_profileに書いていることが前提です。その他PATH等も影響していそうですが精査できてましぇん - もっと良い方法がある気がするのですが、今回はこれで凌ぐことにしまっす